Вопросы к Поиску с Алисой
Распределение памяти для данных и кода в AVR происходит с помощью секций. www.simple-devices.ru При компиляции программы компилятор размещает данные и исполняемые коды по этим секциям, а компоновщик собирает их в блоки, которые предназначаются для программирования во flash-память программ микроконтроллера, EEPROM данных и т. п.. www.simple-devices.ru
Некоторые сегменты памяти AVR GCC и их назначение: microsin.ru
Традиционно компилятор размещает секцию .data с самого начала доступной области ОЗУ, после чего следует секция .bss. www.simple-devices.ru Область динамически распределяемой памяти (куча, heap) следует сразу за .bss. www.simple-devices.ru Стек начинается с вершины (последней доступной ячейки памяти) и движется в сторону уменьшения адресов. www.simple-devices.ru
Поскольку AVR использует гарвардскую архитектуру, указатель на память программ (FLASH) отличается от указателя на память данных (SRAM). microsin.ru Для доступа к данным, сохранённым в FLASH, используется специальная машинная инструкция LPM (Load Program Memory, загрузка из памяти программ). microsin.ru