• $8000…$F600 — код программы отладчика D-Bug12;
• $F680…$F6BF — область пользователя;
• $F6C0…$F6FF — область D-Bug12;
• $F700…$F77F — код запуска D-Bug12;
• $F780…$F7FF — таблица векторов для режима отладки;
• $F800…$FBFF — зарезервированная разработчиком область;
• $FC00…$FFBF — код программы загрузчика в EEPROM;
• $FFC0…$FFFF — вектора сброса и прерывания.
Из представленного распределения адресного пространства МК в составе платы отладки видно, что код программы отладчика занимает практически всю область Flash ПЗУ, которая в реальных проектах предназначается для прикладной программы управления. А где же предполагается размещать отлаживаемую программу? Ответ на этот вопрос Вы найдете в параграфе 4.3.1.
4.7.2. Изменение адресов в карте памяти МК
Внимательно проанализировав распределение адресного пространства в карте памяти МК, можно заметить, что часть доступного адресного пространства не используется резидентной памятью микроконтроллера. Так в МК B32 (рис. 4.11) в диапазоне адресов $01FF…$0800, $0BFF…$0D00 и $0FFF…$8000 память отсутствует. Именно это незанятое адресное пространство может быть использовано для подключения внешней памяти в расширенных режимах работы МК. В процессе подключения внешней памяти может оказаться, что отдельные блоки внутренней памяти МК желательно «переместить» в пределах адресного пространства МК. Тогда схемотехника подключения внешней памяти упростится. Для назначения новых, виртуальных адресов блоков резидентной памяти МК предназначены три регистра специальных функций:
• INITRG — регистр базового адреса блока регистров специальных функций;
• INITRM — регистр базового адреса блока ОЗУ;
• INITEE — регистр базового адреса блока EEPROM.
В состоянии сброса МК эти регистры указывают на реальные, физические адреса перечисленных блоков памяти. Назначение виртуальных адресов блоков обычно происходит на начальном этапе выполнения программы в секции инициализации.
4.8. Подсистема памяти МК DP256
Карта памяти для МК DP256 приведена на рис. 4.12. Расположение различных модулей памяти в адресном пространстве МК чрезвычайно похоже на рассмотренный ранее МК B32. Основное отличие подсистемы памяти DP256 от B32 — это наличие системы страничной адресации, которая позволяет обращаться к более чем 64 Кб памяти с использованием 16 разрядной магистрали адреса. Объем резидентной памяти МК DP256 составляет 256 Кб. Модули резидентного ОЗУ, EEPROM и регистры специальных функций доступны, как и ранее, с использованием обычной адресации в пределах 64 Кб (см. рис. 4.12). Основная часть ПЗУ программ разделена на страницы по 16 Кб, причем каждая из страниц может отображаться на одном и том же адресном пространстве $8000–$BFFF. Выбор конкретной страницы осуществляется занесением под управлением программы ее кода в специальный регистр. Поэтому частое переключение между страницами программной памяти замедляет исполнение программы.
Рис. 4.12. Карта памяти МК семейства HCS12 DP256
Вопросы для самопроверки
1. Каков объем Flash памяти программ МК B32?
Ответ: 32 Кб.
2. Как занести программу пользователя во Flash-память МК B32, установленного на отладочной плате M68EVB912B32?
Ответ: Для этого может быть использована программа загрузчика, которая поместит программу пользователя в область EEPROM, начиная с адреса $D000, или в область Flash ПЗУ начиная с адреса $8000. Однако в последнем случае программа монитора отладки D-Bug12 будет потеряна.
3. Сколько раз можно перепрограммировать резидентное Flash ПЗУ программ МК?
Ответ: 100 раз в МК семейства 68HC12 и 10000 раз в МК семейства HCS12.
4. Сколько раз можно перезаписать данные в энергонезависимой памяти данных типа EEPROM?
Ответ: гарантированное число циклов стирания/программирования резидентной энергонезависимой памяти данных равно 10000. На практике это число значительно больше.
4.9. Состояния сброса и прерывания МК
В процессе исполнения прикладной программы МК реализует монотонную многократно повторяющуюся последовательность действий:
• Выборку кода команды из памяти программ в регистр команды центрального процессора;
• Дешифрацию кода команды;
• Выборку из памяти следующих байтов команды;
• Исполнение команды;
• Сохранение в памяти результатов исполнения команды.
Если исполняется линейная последовательность команд, то содержимое счетчика PC центрального процессора постоянно увеличивается на 1, обеспечивая выборку из памяти следующих команд прикладной программы. Линейная последовательность исполняемых команд может быть изменена под управлением самой программы, например инструкциями «jmp» или «branch». При этом в счетчик команд под управлением программы будет записано новое число, и начнется исполнение следующего линейного фрагмента программы из другого сегмента памяти программ. Несмотря на явные различия механизмов формирования следующего за исполнением текущей операции значения счетчика команд PC, в обоих рассмотренных случаях это следующее значение PC определяется ходом вычислительного процесса и предсказывается программистом в ходе написания прикладной программы.
Читать дальше