F18-19 (1041602), страница 16
Текст из файла (страница 16)
Запись во Flash-память остается разрешенной до тех пор, пока бит PSWE не будетсброшен в 0 программой.Запись во Flash-память может сбросить в 0 биты, но не может установить их в 1. Только операциястирания может установить в 1 биты во Flash-памяти. Поэтому ячейку памяти, в которую должен быть записанбайт, необходимо предварительно стереть, чтобы можно было записать новое значение. 16-Кбайтная Flashпамять организована секторами по 512 байт. Операция стирания применяется ко всему сектору целиком (всебайты в секторе устанавливаются в 0xFF). Установка в 1 бита разрешения стирания памяти программ PSEE(PSCTL.1) и бита PSWE (PSCTL.0) и использование затем команды MOVX для записи байта данных в любуюячейку памяти внутри сектора приведет к стиранию всего 512-байтного сектора.
Записанный байт данныхможет иметь любое значение, т.к. он в действительности не записывается во Flash-память. Стирание Flashпамяти остается разрешенным до тех пор, пока бит PSEE не будет сброшен в 0 программой. Ниже приведеналгоритм программирования Flash-памяти программным путем:1. Разрешить запись/стирание Flash-памяти, используя биты FLASCL в регистре FLSCL.2.
Установить в 1 бит PSEE (PSCTL.1) для разрешения стирания Flash-сектора.3. Установить в 1 бит PSWE (PSCTL.0) для разрешения записи во Flash-память.4. Использовать команду MOVX для записи байта данных в любую ячейку внутри 512-байтного сектора,который таким образом будет стерт.5. Сбросить в 0 бит PSEE (PSCTL.1) для запрещения стирания Flash-сектора6. Использовать команду MOVX для записи байта данных по нужному адресу внутри 512-байтного сектора.Повторять столько, сколько необходимо. (Любое количество байтов можно записать: от одного байта и довсего сектора полностью).7. Сбросить в 0 бит PSWE (PSCTL.0) для запрещения записи во Flash-память.Временные интервалы операций записи и стирания, которые устанавливаются аппаратнымисредствами, основаны на значении делителя из регистра делителя Flash-памяти (FLSCL).
4-разрядное значениеделителя FLASCL определяет временной интервал для операций записи/стирания. Значение FLASCL,необходимое для заданной системной тактовой частоты, вместе с формулой, используемой для его расчета,приведены на рис. 9.4. Когда значение FLASCL равно 1111b, операции записи/стирания запрещены. Следуетиметь в виду, что во время программирования или стирания Flash-памяти выполнение программыприостанавливается.Таблица 9.1. Электрические параметры FLASH-памятиVDD = 2.8 - 3.6В, Т = -40ºC … +85ºC, если не указано иное.ПАРАМЕТРУСЛОВИЯМин.Число циклов программирования20000Время цикла стирания10Время цикла записи4069Ред.
1.2Тип.100000Макс.Ед. изм.Стирание/ЗаписьмсмксC8051F018C8051F0199.2. Долговременное хранение данныхFlash-память может использоваться не только для программного кода, но и для долговременногохранения данных. Это позволяет рассчитывать и сохранять во время выполнения программы такие данные, каккалибровочные коэффициенты. Данные записываются с использованием команды MOVX и считываются сиспользованием команды MOVC.МК данного семейства содержат дополнительный 128-байтный сектор Flash-памяти, занимающийадреса 0x8000 – 0x807F. Этот сектор может использоваться для программного кода или хранения данных.Однако, по причине небольшого размера этого сектора его особенно выгодно использовать в качестведолговременной сверхбыстродействующей памяти общего назначения.
Несмотря на то, что во Flash-памятьможно записывать по одному байту за раз, сначала необходимо стереть весь сектор. После того, как секторстерт, данные обновляются и возвращаются в исходный сектор. 128-байтный размер сектора позволяеторганизовать процесс обновления данных без расходования пространства памяти программ, т.к. можноиспользовать внутреннее ОЗУ данных для временного хранения.
(Обычный 512-байтный сектор слишкомбольшой и не позволяет сохранить его в 256-байтной памяти данных.)9.3. Защита FLASH-памятиCIP-51 имеет опции защиты, позволяющие защитить Flash-память от случайной модификации состороны программы и исключить возможность просмотра патентованного программного кода и констант. Битыразрешения записи памяти программ (PSCTL.0) и разрешения стирания памяти программ (PSCTL.1) защищаютFlash-память от случайной модификации со стороны программы. Эти биты должны быть явно установлены в 1,чтобы программа могла модифицировать Flash-память. Дополнительные функции защиты предотвращаютчтение и изменение патентованного программного кода и констант посредством JTAG-интерфейса илипрограммы, запущенной на системном контроллере.Установка байтов блокировки защиты по адресам 0x3DFE и 0x3DFF защищает Flash-память от чтенияи изменения через JTAG-интерфейс.
Каждый бит в байте блокировки защиты защищает один 4Кбайтный блокпамяти. Сброс бита в 0 в байте блокировки чтения защищает соответствующий блок Flash-памяти от чтениячерез JTAG-интерфейс. Сброс бита в 0 в байте блокировки записи/стирания защищает блок от записи и/илистирания через JTAG-интерфейс. Байт блокировки чтения находится по адресу 0x3DFF. Байт блокировкизаписи/стирания находится по адресу 0x3DFE. На рис.9.2 показаны определения бит и адреса байтов защиты.512-байтный сектор, содержащий байты защиты, можно программно записывать, но нельзя программностирать.
Не следует выполнять запись данных в зарезервированную область Flash-памяти.Рисунок 9.1. PSCTL: Регистр управления записью/стиранием памяти программR/WБит 7R/W-R/W-R/W-R/W-R/W-R/WPSEER/WPSWEБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000SFR Адрес:0x8FБиты 7-2: Не используются. Читаются как 000000b.Бит 1: PSEE: Разрешение стирания памяти программ.Установка этого бита разрешает стереть целую страницу Flash-памяти программ при условии,что бит PSWE также установлен. После установки этого бита запись во Flash-память сиспользованием команды MOVX сотрет целую страницу, которая содержит ячейку, адресуемуюкомандой MOVX (значение записываемого байта данных не важно).0: Стирание Flash-памяти программ запрещено.1: Стирание Flash-памяти программ разрешено.Бит 0: PSWE: Разрешение записи памяти программ.Установка этого бита разрешает запись байта данных во Flash-память программ, используякоманду MOVX .
Адресуемая в команде MOVX ячейка памяти должна быть стертой.0: Запись во Flash-память программ запрещена.1: Запись во Flash-память программ разрешена.Ред. 1.270C8051F018C8051F019Рисунок 9.2. Байты защиты Flash-памяти программ(Это блок блокируется только тогда,когда заблокированы все другие блоки)0x807F0x80000x7FFFЗарезервировано0x3E00Байт блокировки чтенияАдресноепространствопамятипрограммБайт блокировкизаписи/стирания0x3DFF0x3DFE0x3DFDГраница области, доступнойдля чтения из программы0x0000Биты защиты чтенияи записи/стирания(бит 7 – старший)Примечание: для блокировкиблока памяти с адресами0x8000 – 0x807F необходимоустановить в 1 все биты 7-0.БитБлок памяти765432100x3000 - 0x3FFF0x2000 - 0x2FFF0x1000 - 0x1FFF0x0000 - 0x0FFFБайт блокировки чтения FLASH-памятиБиты 7-0: Каждый бит блокирует соответствующий блок памяти (бит 7 - старший).0: Операции чтения через JTAG-интерфейс для соответствующего блока заблокированы (запрещены).1: Операции чтения через JTAG-интерфейс для соответствующего блока разблокированы(разрешены).Байт блокировки записи/стирания FLASH-памятиБиты 7-0: Каждый бит блокирует соответствующий блок памяти.0: Операции записи/стирания через JTAG-интерфейс для соответствующего блока заблокированы(запрещены).1: Операции записи/стирания через JTAG-интерфейс для соответствующего блока разблокированы(разрешены).Регистр ограничения доступа к FLASH-памяти (FLACL)Содержимое этого регистра используется как старший байт 16-разрядного адреса границы области,доступной для чтения из программы.
Значение этого 16-разрядного адреса рассчитывается как 0xNN00,где NN заменяется содержимым регистра FLACL. Начиная с этого адреса, программе запрещеноиспользовать команды MOVX или MOVC для чтения, записи или стирания ячеек памяти за этой границей. Любая попытка прочитать ячейки памяти за этой границей возвратит в качестве результата 0x00.Биты блокировки всегда могут быть прочитаны и сброшены в 0 независимо от параметров защитыблока, содержащего байты защиты. Это позволяет защитить дополнительные блоки уже после того, как былзащищен блок, содержащий байты защиты.
Однако, единственный способ удалить однажды установленнуюзащиту – стереть все пространство памяти программ, используя операцию стирания JTAG-интерфейса (т.е.нельзя сделать этого из программы пользователя). Примечание: обращение к любому байту защиты вовремя выполнения операции JTAG-стирания автоматически инициирует стирание всего пространствапамяти программ (за исключением зарезервированной области). Эта операция стирания может бытьвыполнена только через JTAG-интерфейс. Если в процессе операции стирания происходит обращение кбайту на странице 0x3C00-0x3DFF, который не является байтом защиты, то будет стерта лишь этастраница (включая байты защиты).Ограничение доступа к Flash-памяти (см.
рис. 9.3) представляет собой функцию защиты, котораязащищает патентованный программный код и данные от прочтения программой, запущенной на МКC8051F018|19. Эта функция обеспечивает поддержку ОЕМ-производителей, которые перед распространениемМК желают запрограммировать их дополнительным программным обеспечением, являющимся собственностьюфирмы. При этом фирменное программное обеспечение будет защищено, а в оставшееся пространство памятипрограмм можно позднее запрограммировать дополнительный код.71Ред. 1.2C8051F018C8051F019Граница области, доступной для программного чтения (Software Read Limit - SRL), представляет собой16-битный адрес, который делит пространство памяти программ на два логических раздела. Первый из нихявляется верхним разделом и состоит из всех ячеек памяти программ, находящихся выше адреса SRL (включаяи сам адрес SRL).