Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
Обратите
4.7. Подсистема памяти МК B32
Подсистема памяти МК семейства 68HC12/HCS12 включает четыре различных модуля памяти: энергонезависимая Flash-память программ, энергонезависимая EEPROM память данных, статическое ОЗУ и блок регистров специальных функций для управления режимами работы периферийных модулей. Расположение различных модулей памяти в адресном пространстве МК принято отражать на так называемой карте памяти. Карта памяти МК B32 представлена на рис. 4.11. Указанные на ней адреса будут действительны при выходе МК из состояния сброса. В ходе исполнения прикладной программы адресное пространство для каждого модуля памяти может быть изменено (см. 4.5.1.). Тогда для обращения к ячейкам памяти будут использоваться не указанные на рис. 4.11 физические адреса, а измененные виртуальные адреса.
Рис. 4.11. Карта памяти МК B32 в составе отладочной платы MC68HC912B32EVB
Микроконтроллер B32 предназначен для использования преимущественно в однокристальном режиме работы. Он содержит в себе 32Кб ПЗУ программ, 768 байт памяти типа EEPROM, 1Кб статического ОЗУ и 512 регистров управления.
Строго говоря, аббревиатура EEPROM (Electrically Erasable Programmable ROM) обозначает энергонезависимую память с электрическим программированием и электрическим стиранием. Поэтому и резидентная память программ, выполненная на основе технологии FLASH, и энергонезависимая память данных должны быть характеризованы как EEPROM. Однако энергонезависимая память программ и энергонезависимая память данных отличаются по своим свойствам не только на уровне технологии изготовления, но и на уровне разработчика встраиваемых систем. Память типа Flash допускает выполнение операции стирания только над некоторым множеством ячеек, что неудобно при необходимости замены только одного байта информации. Энергонезависимая память данных позволяет стереть и потом запрограммировать один байт информации. Однако ячейки памяти с подобным свойством занимают значительную площадь полупроводникового кристалла МК, поэтому на их основе не может быть выполнена память программ большого объема. Во избежание путаницы у российских разработчиков принято использовать аббревиатуру EEPROM только для памяти с побайтным стиранием и побайтным программированием. А память со стиранием блоками обозначают как Flash,
Используя МК от Freescale Semiconductor, в частности семейство 68HC12/HCS12 следует знать, что гарантированное число циклов стирания/программирования для МК HCS12 составляет 10000, а для МК 68HC12 — всего 100. Именно поэтому во многих отладочных средствах на основе МК 68HC12 рекомендуется промежуточные версии программы записывать и исполнять из ОЗУ. Поскольку резидентное ОЗУ у микроконтроллеров обладает недостаточным объемом для размещения программы, то многие отладочные платформы используют расширенный режим работы МК с подключением внешнего ОЗУ. В МК семейства HCS12 для целей отладки обычно используется внутреннее Flash ПЗУ программ, т.к. 10000 циклов перезаписи обычно достаточно для внесения всех исправлений в процессе отладки.
В процессе эксплуатации память типа EEPROM часто используют для создания счетчиков аварийных ситуаций на объекте. Возможные аварии предварительно классифицируются, в системе устанавливаются датчики, которые позволяют микроконтроллеру отнести возникшую аварийную ситуацию к тому или иному типу. Если тип аварии диагностирован, то МК увеличивает соответствующий счетчик и запоминает его новое состояние в энергонезависимой памяти данных типа EEPROM. Такое решение позволяет сохранить информацию об авариях даже при отключении системы питания.
4.7.1. Карта памяти МК B32
Карта памяти МК определяет, по каким адресам в конкретной модели МК расположены блоки памяти. Процессорное ядро HC12 позволяет линейно адресовать 64К слов памяти. Поскольку МК 68HC12 используют однобайтовые ячейки памяти, то получается, что при линейной адресации в МК семейства 68HC12 адресуют 64 Кб памяти. Определение «линейная адресация» означает, что в любой момент времени без применения дополнительных команд МК может обратиться к ячейке памяти с любым адресом из диапазона $0000…$FFFF.
Карта памяти МК B32 приведена на рис. 4.11. Резидентная память (т.е. память, расположенная на кристалле МК) включает четыре блока памяти: 512 байт регистров специальных функций для управления периферийными модулями, 1 Кб оперативного запоминающего устройства для хранения промежуточных результатов вычислений, 768 байт энергонезависимой памяти типа EEPROM с побайтным стиранием и побайтным программирования для хранения уставок программы пользователя, 32 Кб энергонезависимой Flash памяти для размещения прикладной программы пользователя. На рис. 4.11 карта памяти учитывает особенности размещения резидентной программы отладки D-Bug12 при работе МК в составе платы отладки MC68HC912B32EVB:
• $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 память отсутствует. Именно это незанятое адресное пространство может быть использовано для подключения внешней памяти в расширенных режимах работы МК. В процессе подключения внешней памяти может оказаться, что отдельные блоки внутренней памяти МК желательно «переместить» в пределах адресного пространства МК. Тогда схемотехника подключения внешней памяти упростится. Для назначения новых, виртуальных адресов блоков резидентной памяти МК предназначены три регистра специальных функций: