Я во многих ситуациях обнаружил, что должен хранить массив или кучу структур в ПЗУ вместо ОЗУ. Затем я просматриваю весь код и вношу изменения, такие как добавление PROGMEM, pgm_read_word(), pgm_read_byte(). Это сложная задача, особенно после написания, как 4000 строк кода.Есть ли простой способ в программировании на C (AVR), чтобы выбрать, следует ли хранить переменную в ОЗУ или ПЗУ и обрабатывать ее через весь код?
Есть ли трюк, который можно сделать, чтобы сделать это проще?
Трюк? Использование компилятора, который правильно поддерживает архитектуру, будет началом. Вы не должны беспокоиться о бизнесе 'pgm_read_read', разумным способом является классификатор для маркировки пространств памяти программ. – doynax
Размещение памяти обычно обрабатывается компоновщиком – user3528438
@ user3528438: компоновщик выделяет переменные _within_ адресное пространство, обычно не выбирает, какой сегмент помещать в них. AVR, в частности, представляет собой архитектуру Гарварда, для которой требуются разные типы инструкций для ROM или RAM, причем первый из них несколько ограничен в сравнении. – doynax