F00-17 (1041601), страница 21
Текст из файла (страница 21)
Несмотря на то, что во Flash-памятьможно записывать по одному байту за раз, сначала необходимо стереть весь сектор. После того, как секторстерт, данные обновляются и возвращаются в исходный сектор. 128-байтный размер сектора позволяеторганизовать процесс обновления данных без расходования пространства памяти программ, т.к. можноиспользовать внутреннее ОЗУ данных для временного хранения. (Обычный 512-байтный сектор слишкомбольшой и не позволяет сохранить его в 256-байтной памяти данных.)11.3. Защита FLASH-памятиCIP-51 имеет опции защиты, позволяющие защитить Flash-память от случайной модификации состороны программы и исключить возможность просмотра патентованного программного кода и констант.Биты разрешения записи памяти программ (PSCTL.0) и разрешения стирания памяти программ (PSCTL.1)защищают Flash-память от случайной модификации со стороны программы.
Эти биты должны быть явноустановлены в 1, чтобы программа могла модифицировать Flash-память. Дополнительные функции защитыпредотвращают чтение и изменение патентованного программного кода и констант посредством JTAGинтерфейса или программы, запущенной на системном контроллере.Установка байтов блокировки защиты по адресам 0x7DFE и 0x7DFF защищает Flash-память отчтения и изменения через JTAG-интерфейс. Каждый бит в байте блокировки защиты защищает один4Кбайтный блок памяти. Сброс бита в 0 в байте блокировки чтения защищает соответствующий блок Flashпамяти от чтения через JTAG-интерфейс. Сброс бита в 0 в байте блокировки записи/стирания защищает блокот записи и/или стирания через JTAG-интерфейс. Байт блокировки чтения находится по адресу 0x7DFF.
Байтблокировки записи/стирания находится по адресу 0x7DFE. На рис.11.2 показаны определения бит и адресабайтов защиты. 512-байтный сектор, содержащий байты защиты, можно программно записывать, но нельзяпрограммно стирать.Рисунок 11.1. PSCTL: Регистр управления записью/стиранием памяти программR/WR/WR/WR/WR/WR/WR/WR/W------PSEEPSWEЗначениепри сбросе:Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 000000000SFR Адрес:0x8FБиты 7-2: Не используются. Читаются как 000000b.Бит 1: PSEE: Разрешение стирания памяти программ.Установка этого бита разрешает стереть целую страницу Flash-памяти программ при условии,что бит PSWE также установлен. После установки этого бита запись во Flash-память сиспользованием команды MOVX сотрет целую страницу, которая содержит ячейку, адресуемуюкомандой MOVX (значение записываемого байта данных не важно).0: Стирание Flash-памяти программ запрещено.1: Стирание Flash-памяти программ разрешено.Бит 0: PSWE: Разрешение записи памяти программ.Установка этого бита разрешает запись байта данных во Flash-память программ, используякоманду MOVX .
Адресуемая в команде MOVX ячейка памяти должна быть стертой.0: Запись во Flash-память программ запрещена.1: Запись во Flash-память программ разрешена.4.2002; Rev. 1.4CYGNAL Integrated Products, Inc. 2002Page 87C8051F000/1/2/5/6/7C8051F010/1/2/5/6/7Рисунок 11.2. Байты защиты Flash-памяти программ(Это блок блокируется только тогда,когда заблокированы все другие блоки)0x807F0x80000x7FFFЗарезервировано0x7E00АдресноепространствопамятипрограммБайт блокировки чтения0x7DFFБайт блокировкизаписи/стирания0x7DFEБиты защиты чтенияи записи/стирания(бит 7 – старший)0x7DFDГраница области, доступнойдля чтения из программы0x0000БитБлок памяти765432100x7000 - 0x7DFD0x6000 - 0x6FFF0x5000 - 0x5FFF0x4000 - 0x4FFF0x3000 - 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-интерфейс. Если в процессе операции стирания происходит обращениек байту на странице 0x7C00-0x7DFF, который не является байтом защиты, то будет стерта лишь этастраница (включая байты защиты).Ограничение доступа к Flash-памяти (см.
рис. 11.3) представляет собой функцию защиты, котораязащищает патентованный программный код и данные от прочтения программой, запущенной на МКC8051F005/06/07/15/16/17. Эта функция обеспечивает поддержку ОЕМ-производителей, которые передраспространением МК желают запрограммировать их дополнительным программным обеспечением,являющимся собственностью фирмы. При этом фирменное программное обеспечение будет защищено, а воставшееся пространство памяти программ можно позднее запрограммировать дополнительный код.Page 88CYGNAL Integrated Products, Inc.
20024.2002; Rev. 1.4C8051F000/1/2/5/6/7C8051F010/1/2/5/6/7Граница области, доступной для программного чтения (Software Read Limit - SRL), представляетсобой 16-битный адрес, который делит пространство памяти программ на два логических раздела. Первый изних является верхним разделом и состоит из всех ячеек памяти программ, находящихся выше адреса SRL(включая и сам адрес SRL). Второй является нижним разделом и состоит из всех ячеек памяти программ садресами от 0x0000 до SRL адреса (не включая сам адрес SRL).
Программа, запущенная в верхнем разделе,может исполнять код из нижнего раздела, но ей запрещено читать ячейки из нижнего раздела, используякоманду MOVC. (Выполнение команды MOVC из верхнего раздела с адресом источника, указывающим нанижний раздел, всегда в качестве результата будет возвращать значение 0x00.) Программа, запущенная внижнем разделе, может обращаться к ячейкам памяти как из верхнего, так и из нижнего разделов безограничений.Дополнительные встроенные фирменные программы следует размещать в нижнем разделе. Присбросе управление передается этим программам через вектор сброса. Как только завершится процессначальной инициализации, произойдет переход по предопределенному адресу в верхнем разделе.
Программа,запущенная в верхнем разделе, может выполнять программный код из нижнего раздела, если известны точкивхода, но не может прочитать содержимое нижнего раздела. Программному коду, запущенному в нижнемразделе, параметры могут передаваться следующим образом:- параметры размещаются в стеке до вызова программного кода из нижнего раздела;- параметры размещаются в регистрах внутреннего ОЗУ до вызова программного кода из нижнегораздела;- параметры размещаются в определенных ячейках памяти в верхнем разделе.Адрес SRL задается в регистре ограничения доступа к Flash-памяти (FLACL). 16-разрядный SRLадрес вычисляется как 0xNN00, где NN представляет собой содержимое регистра FLACL. Таким образом,адрес SRL можно задать в любом месте пространства памяти программ на границах 256-байтных секторов.Однако, 512-байтный размер сектора стирания требует использовать в качестве адреса SRL границы 512байтных секторов.