Лекция: Лекция 6. Встроенная память

Ядро CIP-51 имеет стандартное адресное пространство 64К и стандартную конфигурацию адресов программ и данных. Ядро оснащено встроенной памятью данных с произвольным доступом RAM (Random Access Memory) объемом 256 байт (0x00-0xFF) (рис 6.1).

Рисунок 6.1 Распределение памяти

Младшие 128 байт (0x00-0x7F) доступны инструкциям с прямой и косвенной адресацией, регистры специальных функций SFR /Special Function Register's) доступны только инструкциям с прямой адресацией, а старшие 128 байт (0x80-0xFF) — только инструкциям с косвенной адресацией. Первые 32 байта (0x00-0x1F) адресуются как четыре банка регистров общего назначения, а следующие 16 байт (0x20-0x2F) имеют битовую адресацию. Некоторые из микроконтроллеров могут иметь дополнительную память во внешнем адресном пространстве памяти данных. Размер этой памяти может быть различен для различных микроконтроллеров. Эта память может быть доступна с помощью инструкции MOVX.

Каждый из четырех банков регистров общего назначения состоит из восьми регистров R0—R7. Только один из банков может быть разрешен в текущий момент времени. Переключение банков осуществляется с помощью битов RS0 (PSW.3) и RS1 (PSW.4).

Программный стек также располагается в основных 256 байтах оперативной памяти. Область стека задается соответствующим значением регистра SP (Stack Pointer — 0x81 SFR).

Каждое семейство микроконтроллеров имеет индивидуальную карту встроенной памяти.

Flash-память программ различных микроконтроллеров также имеет различный объем и расположение, что также будет показано на соответствующих картах памяти. Основная Flash-память программ расположена с адреса 0x0000. Чистая Flash-память (после стирания) содержит код 0xFF во всех байтах. Память рассчитана на как минимум на 20000 циклов записи/стирания.

Вообще говоря, термин «программная память» подразумевает память, доступную только для чтения. Однако ядро CIP-51 позволяет и записывать данные в эту память при установке разрешающего бита PSCTL.0 (Program Store Write Enable Bit). Запись осуществляется инструкцией MOVX. Этот механизм позволяет обновлять программный код и использовать память программ для записи редко изменяющихся данных и различных настроечных параметров.

Программирование Flash-памяти осуществляется через последовательный JTAG интерфейс, управляемый утилитами программирования фирмы SiLabs. Напомним, что операция записи может только очистить какой-либо бит, т. е. записать лог. 0. Запись единицы невозможна, поэтому восстановление единиц возможно только операцией стирания. Из этого следует, что прежде чем записать новый байт в память, старый байт необходимо стереть. Flash-память, как правило, имеет страничную организацию. Стирание производится постранично, при этом все байты сектора устанавливаются в 0xFF. Естественно, что при такой операции стирания записывать также надо целый сектор. Ниже приведена типовая последовательность алгоритма программирования.

 

Step 1. Disable interrupts.

Step 2. Set FLWE (FLSCL.0) to enable FLASH writes/erases via user software.

Step 3. Set PSEE (PSCTL.1) to enable FLASH erases.

Step 4. Set PSWE (PSCTL.0) to redirect MOVX commands to write to FLASH.

Step 5. Use the MOVX command to write a data byte to any location within the 512-byte page to be erased.

Step 6. Clear PSEE to disable FLASH erases

Step 7. Use the MOVX command to write a data byte to the desired byte location within the erased 512-byte

page. Repeat this step until all desired bytes are written (within the target page).

Step 8. Clear the PSWE bit to redirect MOVX commands to the XRAM data space.

Step 9. Re-enable interrupts.

 

Типовыми электрическими параметрами Flash-памяти при номинальном напряжении питания от 2,7 до 3,6 В в диапазоне температур от —40 до +85 °С являются:

· количество циклов запись/стирание — не менее 20000 (обычно 100000);

· время цикла стирания (сектора) — не более 10 мс;

· время цикла записи байта — не более 40 мкс.

Как уже отмечалось выше, Flash-память может использоваться не только по прямому назначению, т. е. для хранения кодов программ, но и для энергонезависимого хранения данных. При этом данные могут быть записаны инструкцией MOVX и прочитаны инструкцией MOVC. Многие семейства микроконтроллеров имеют Flash-память, выполненную в виде двух блоков: одного основного большого, начинающегося с адреса 0x0000, и одного дополнительного маленького, обычно размером 128 байт. Следует напомнить, что хотя каждый байт и может быть записан индивидуально, но страница может быть стерта только полностью. Таким образом, чтобы заменить один единственный байт, все данные из сектора должны быть перенесены во временное хранилище в оперативной памяти, затем данные должны быть модифицированы, после этого страница должна быть стерта, а обновленные данные должны быть записаны в эту страницу. Нормальный размер страницы (512 байт) слишком велик для временного хранения во внутренней оперативной памяти объемом 256 байт. Поэтому обычно используется специальная уменьшенная страница размером 128 байт.

Ядро CIP-51 имеет многоуровневую защиту Flash-памяти. Биты PSCTL.0 (Program Store Write Enable) и PSCTL.l (Program Store Erase Enable) защищают Flash-память от случайной модификации программой. Эти биты должны быть предварительно установлены в 1 для того, чтобы разрешить программе модифицировать Flash-память.

Имеются также несколько байтов защиты, каждый бит которых защищает блок памяти программ определенного размера от операций чтения, минуя JTAG интерфейс. Таким образом, одни биты защищают память от записи/стирания, другие — от чтения. Блок Flash-памяти, содержащий байты защиты, разрешен для записи, но запрещен для стирания программным обеспечением (рис 6.2).

Рисунок 6.2. Карта флешь памяти и байты защиты.

Итак, байт FRLB (FLASH Read Lock Byte) содержит биты защиты памяти от чтения через JTAG интерфейс. Лог. 0 в соответствующем бите запирает соответствующий блок памяти и делает его недоступным для чтения через JTAG интерфейс. Запись в бит лог. 1 разрешает чтение соответствующего блока.

Байт FWELB (FLASH Write/Erase Lock Byte) содержит биты защиты памяти от записи через JTAG интерфейс. Лог. 0 блокирует запись, лог. 1 — разрешает запись.

Еще один тип защиты содержится в регистре FLACL (FLASH Access Limit Register). Этот регистр содержит старший байт 16-битного адреса, ниже которого программное чтение запрещено, Все попытки чтения этих адресов возвращают код 0x00. Таким образом, возможна многоступенчатая защита памяти, поскольку блоки, содержащие байты защиты, могут быть в свою очередь заперты. Полное стирание всей защиты возможно только при полном стирании всей программной Flash-памяти через JTAG программатор и невозможно из пользовательской программы.

Многие из микроконтроллеров фирмы SiLabs имеют дополнительное адресное пространство внешней памяти XRAM (External) RAM) различного объема. Это адресное пространство доступно посредством инструкций MOVX. Программисту доступны два метода косвенной адресации с восьми и шестнадцатибитным операндом адреса. При шестнадцатибитной адресации адрес определяется содержимым регистра DPTR:

MOV DPTR, #1234h; load DPTR with 16-bit address to read (0x1234)

MOVX A, @DPTR; load contents of 0x1234 into accumulator A

Если инструкция используется с восьмибитным операндом адреса, например @R1, то старший байт шестнадцатибитного адреса определяется содержимым регистра EMIOCN (External Memory Interface Control Register):

MOV EMI0CN, #12h; load high byte of address into EMI0CN

MOV R0, #34h; load low byte of address into R0 (or R1)

MOVX A, @R0; load contents of 0x1234 into accumulator A

Регистры специальных функций (SFR). Управление всеми периферийными узлами и обмен информацией с ними осуществляется ядром CIP-51 через соответствующие SFR регистры. Эти регистры специальных функций (SFRs) расположены в прямо адресуемом адресном пространстве памяти данных в диапазоне адресов 0x80-0xFF.

Регистры специальных функций ядра CIP-51 полностью соответствуют регистрам стандартного 8051, т. е. все стандартные (для 8051) регистры, их назначение, название и адреса сохранены. С другой стороны, регистры специальных функций дополнены возможностями конфигурирования и обмена данными с оригинальными подсистемами микроконтроллеров SiLabs. Очевидно, что каждое из семейств микроконтроллеров, имеющих различный состав периферии, имеет оригинальный набор дополнительных SFR регистров. Для каждого из семейств существует своя уникальная SFR карта.

Регистры SFR доступны для инструкций с прямой адресации ей в пространстве адресов от 0x80 до 0xFF. Регистры с адресами, оканчивающимися на 0x0 или 0x8 (например, Р0, TCON, P1, SCON, IE и т. д.) являются и бит- адресуемыми и байт- адресуемыми. Все остальные регистры SFR являются только байт- адресуемыми. Неиспользуемые адреса в адресном пространстве SFR зарезервированы для развития. Использование этих адресов нежелательно, так как приводит к неопределенному результату.


еще рефераты
Еще работы по информатике