Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

Глава 2. Общее устройство, организация памяти, тактирование, сброс 31 В последних адресах памяти программ контроллеров семейства Mega может распо- лагаться т. н. загрузчик (Bootloader) — специальная программа, которая управляет загрузкой и выгрузкой прикладных программ из основного объема памяти. В этом случае положение вектора сброса и всей таблицы векторов прерываний (т. е. фак- тически начального адреса, с которого начинается выполнение программы) может быть изменено установкой специальных конфигурационных ячеек (см. главу 5 ). Память данных (ОЗУ, SRAM) В отличие от памяти программ, адресное пространство памяти данных адресуется побайтно (а не пословно). Адресация полностью линейная, без какого-либо деления на страницы, сегменты или банки, как это принято в некоторых других системах. Надо отметить, что в составе семейства Tiny осталась одна модель без памяти дан- ных вообще (ATtiny28L), остальные младшие МК семейства Tiny имеют SRAM объемом от 32 байт. В других моделях объем встроенной SRAM колеблется от 128 байт в представителях семейства Tiny (например, у ATtiny2313) до 4–8 кбайт у старших моделей Mega. Как видите, ОЗУ контроллера — совсем не то, что ОЗУ компьютерных систем, где его объем измеряется гигабайтами (а если привосокупить к нему объем жестких дисков, которые формально находятся в том же пространстве памяти, то в совре- менных системах уже и терабайтами). Причем львиную часть памяти компьютеров занимают не программы, а именно данные: тексты, картинки, видео. В 8-битных контроллерах, которые для обработки таких объемных данных не предназначены, программы обычно занимают куда больший объем, чем данные. Адресное пространство статической памяти данных (SRAM) условно делится на несколько областей (рис. 2.2). Темной заливкой выделена часть, относящаяся к соб- ственно встроенной SRAM, до нее по порядку адресов расположено адресное про- странство регистров: первые 32 байта занимают регистры общего назначения (РОН), еще 64 — регистры ввода/вывода (РВВ). На рис. 2.2 показан максимальный объем SRAM, равный 8 килобайт (последний адрес $21FF — у контроллера ATmega2560, например), в большинстве моделей она меньше, но принцип остается тем же. З АМЕТКИ НА ПОЛЯХ В архитектуре МК AVR понятие «ввода/вывода» употребляется в двух смыслах: во- первых, имеются «порты ввода/вывода» (I/O ports), которые мы рассмотрим далее. Во-вторых, «регистрами ввода/вывода» (РВВ, I/O registers) в структуре AVR называют- ся регистры, которые обеспечивают доступ к дополнительным компонентам, внешним по отношению к GPU, за исключением ОЗУ (в том числе и к портам ввода/вывода). Та- кое подразделение приближает структуру МК AVR к привычной конфигурации персо- нального компьютера, где доступ к любым внешним по отношению к центральному процессору компонентам, кроме памяти, осуществляется через порты ввода/вывода. У старших моделей Mega все регистры устройств, внешних по отношению к ядру, в 64 адреса не умещаются, поэтому, например, уже у ATmega88 для дополнитель- ных РВВ выделяется отдельное адресное пространство (от $60 до максимально

RkJQdWJsaXNoZXIy MTExODQxMg==