Я хотел бы, чтобы мои компиляции исключали некоторый код в зависимости от доступного места во флэш / программе. Для использования в демонстрационном коде библиотеки я поддерживаю. В то время как мое текущее решение состоит в том, чтобы использовать #ifdef типа процессора. Но я бы хотел быть более общим и не указывать все различные фишки. Скорее было бы хорошо, если бы существовала постоянная препроцессора, которая указала бы доступный размер.
Там, где я недостаточно свободно владею gcc и / или avr-gcc, я могу ожидать найти некоторые константы, подобные тем, которые определяют начало и конец кучи.
На примере случая. Это то, что у UNO и Leo есть 32K Flash. Но основная библиотека Leo использует 4K для поддержки USB, в результате чего доступно только 28K. Демонстрация моей библиотеки близка к максимуму в UNO, и я хотел бы автоматически обрезать ее в зависимости от доступного пространства программы.
источник
Ответы:
Найдите
io__.h
файл для вашего микроконтроллера, в Linux он находится/usr/lib/avr/include/avr
, в Windows он будет в некотором подобном месте.Прокрутите вниз до части, которая говорит
/* Constants */
. Здесь определена пара интересных макросов,FLASHEND
которые вам могут быть интересны. Вы можете использовать их, например, следующим образом:источник