F20-23 (1041603), страница 29
Текст из файла (страница 29)
Это позволяет защитить дополнительные блоки уже после того, как былзащищен блок, содержащий байты защиты. Примечание: Однако, единственный способ удалить однаждыустановленную защиту – стереть все пространство памяти программ, используя операцию стиранияJTAG-интерфейса (т.е. нельзя сделать этого из программы пользователя).
Обращение к любому байтузащиты во время выполнения операции JTAG-стирания автоматически инициирует стирание всегопространства памяти программ (за исключением зарезервированной области). Эта операция стиранияможет быть выполнена только через JTAG-интерфейс. Если в процессе операции стирания происходитобращение к байту на странице 0xFBFF-0xFDFF, который не является байтом защиты, то будет стерталишь эта страница (включая байты защиты).141Ред. 1.4C8051F020/1/2/3Ограничение доступа к Flash-памяти (см.
рис. 9.3) представляет собой функцию защиты, котораязащищает патентованный программный код и данные от прочтения программой, запущенной на МКC8051F020/1/2/3. Эта функция обеспечивает поддержку ОЕМ-производителей, которые передраспространением МК желают запрограммировать их дополнительным программным обеспечением,являющимся собственностью фирмы. При этом фирменное программное обеспечение будет защищено, а воставшееся пространство памяти программ можно позднее запрограммировать дополнительный код.Граница области, доступной для программного чтения (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-байтных секторов.При сбросе в регистр FLACL по умолчанию записывается 0x00, устанавливая тем самым адрес SRL 0x0000 иразрешая доступ по чтению ко всем ячейкам памяти программ.Рисунок 15.2.
FLACL: Регистр ограничения доступа к Flash-памятиR/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xB7Биты 7-0: FLACL: Адрес границы программно-доступной области Flash-памяти.Этот регистр содержит старший байт 16-разрядного адреса границы области памяти программ, доступнойдля операций чтения/записи/стирания. Значение полного 16-разрядного адреса ограничения доступарассчитывается как 0xNN00, где NN заменяется содержимым регистра FLACL.
Запись в этот региструстанавливает адрес границы программно-доступной области Flash-памяти. Этот регистр может бытьзаписан только один раз после сброса. Все последующие попытки записать этот регистригнорируются до следующего сброса.Ред.
1.4142C8051F020/1/2/3Рисунок 15.3. FLSCL: Регистр управления контроллером Flash-памятиR/WFOSER/WFRAER/WЗарезерв.R/WЗарезерв.R/WЗарезерв.R/WЗарезерв.Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2R/WЗарезерв.Бит 1R/WFLWEБит 0Значениепри сбросе:10000000SFR Адрес:0xB6Бит 7: FOSE: Включение ждущего таймера модуля Flash-памятиЭто таймер, который отключает усилитель считывания после операций чтения Flash-памяти.0: Ждущий таймер модуля Flash-памяти выключен.1: Ждущий таймер модуля Flash-памяти включен.Бит 6: FRAE: Разрешение постоянного чтения Flash-памяти0: Чтением Flash-памяти управляет ждущий таймер.1: Flash-память всегда в режиме чтения.Биты 5-1: Зарезервированы.
Читаются как 00000b. В эти биты следует записать значение 00000b.Бит 0: FLWE: Разрешение чтения/записи Flash-памяти.Чтобы разрешить запись из программы пользователя во Flash-память, необходимоустановить этот бит в 1.0: Запись во Flash-память запрещена.1: Запись во Flash-память разрешена.143Ред. 1.4C8051F020/1/2/3Рисунок 15.4. PSCTL: Регистр управления записью/стиранием памяти программR/WБит 7R/W-R/W-R/W-R/W-R/WSFLER/WPSEER/WPSWEБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000SFR Адрес:0x8FБиты 7-3: Не используются. Читаются как 00000b.Бит 2: SFLE: Разрешение доступа к сверхоперативному сектору Flash-памяти.Когда этот бит установлен в 1, операции чтения и записи Flash-памяти, выполняемые из программыпользователя, относятся к 128-байтному сверхоперативному сектору Flash-памяти.
Если SFLE = 1, тоне следует пытаться обращаться по адресам Flash-памяти за пределами диапазона 0x00 – 0x7F.Чтение/запись ячеек памяти за пределами этого диапазона приведет к неопределенному результату.0: При обращении к Flash-памяти из программы пользователя происходит обращение к 64-Кбайтномусектору Flash-памяти программ/данных.1: При обращении к Flash-памяти из программы пользователя происходит обращение к 128-байтномусверхоперативному сектору Flash-памяти.Бит 1: PSEE: Разрешение стирания памяти программ.Установка этого бита разрешает стереть целую страницу Flash-памяти программ при условии,что бит PSWE также установлен.
После установки этого бита запись во Flash-память сиспользованием команды MOVX сотрет целую страницу, которая содержит ячейку, адресуемуюкомандой MOVX (значение записываемого байта данных не важно).0: Стирание Flash-памяти программ запрещено.1: Стирание Flash-памяти программ разрешено.Бит 0: PSWE: Разрешение записи памяти программ.Установка этого бита разрешает запись байта данных во Flash-память программ, используякоманду MOVX . Адресуемая в команде MOVX ячейка памяти должна быть стертой.0: Запись во Flash-память программ запрещена.1: Запись во Flash-память программ разрешена.Ред.
1.4144C8051F020/1/2/316.ИНТЕРФЕЙС ВНЕШНЕЙПАМЯТЬ XRAM.ПАМЯТИИВСТРОЕННАЯМК C8051F020/1/2/3 включают 4 Кбайт встроенного ОЗУ, отображенные в пространстве внешнейпамяти данных, а также интерфейс внешней памяти данных (external memory interface – EMIF), который можетиспользоваться для доступа к внешней памяти и отображенным на память устройствам, подсоединенным кпортам GPIO. Доступ к пространству внешней памяти осуществляется либо с использованием команды MOVXи указателя данных DPTR, либо с использованием команды MOVX с косвенным режимом адресации(используя регистры R0 и R1).
Если команда MOVX используется с 8-битным операндом адреса (например,@R1), то старший байт 16-битного адреса берется из регистра управления интерфейсом внешней памятиEMI0CN (см. рис.16.1). Примечание: команда MOVX также используется для записи во Flash-память (см.раздел 15). По умолчанию команда MOVX обращается к памяти XRAM. EMIF можно настроить такимобразом, чтобы сигналы адреса/данных/управления появлялись либо на младших портах ввода/вывода (Р0 –Р3), либо на старших портах ввода/вывода (Р4 – Р7).16.1.
Доступ к памяти XRAMДля доступа к пространству памяти XRAM используется команда MOVX. Команда MOVX имеет двеформы, причем обе используют косвенный режим адресации. В первой форме используется 16-разрядныйуказатель данных (DPTR), содержащий полный адрес ячейки памяти XRAM, которую требуется прочитать илизаписать. Во второй форме для получения полного адреса ячейки памяти XRAM используются регистры R0 илиR1 в комбинации с регистром EMI0CN. Ниже приведены примеры использования команды MOVX в обоихформах.16.1.1. Пример использования команды MOVX с 16-разрядным адресомКоманда MOVX в 16-разрядной форме обращается к ячейке памяти, на которую указывает содержимоерегистра DPTR. Следующая последовательность команд осуществляет чтение байта по адресу 0х1234 ваккумулятор А:MOV DPTR, #1234h ; загрузка в DPTR 16-разрядного адреса 0х1234MOVX A, @DPTR; загрузка содержимого ячейки памяти с адресом 0х1234 в аккумулятор АВ приведенном выше примере регистр DPTR загружается сразу 16-разрядным значением адреса(используя команду MOV).
Кроме этого, к регистру DPTR можно обращаться через SFR регистры DPH,который содержит старшие 8 бит DPTR, и DPL, который содержит младшие 8 бит DPTR.16.1.2. Пример использования команды MOVX с 8-разрядным адресомКоманда MOVX в 8-разрядной форме использует содержимое регистра EMI0CN, чтобы определитьстаршие 8 бит полного адреса, по которому происходит обращение, и содержимое регистров R0 или R1, чтобыопределить младшие 8 бит полного адреса.
Следующая последовательность команд осуществляет чтение байтапо адресу 0х1234 в аккумулятор А:MOV EMI0CN, #12h ; загрузка старшего байта адреса в регистр EMI0CNMOV R0, #34h; загрузка младшего байта адреса в регистр R0 (или R1)MOVX A, @R0; загрузка содержимого ячейки памяти с адресом 0х1234 в аккумулятор А145Ред. 1.4C8051F020/1/2/316.2. Настройка интерфейса внешней памятиНастройка интерфейса внешней памяти состоит из следующих этапов:1. Выбор связанных с EMIF портов: младшие (Р3, Р2, Р1 и Р0) или старшие (Р7, Р6, Р5 и Р4) порты.2. Выбор режима работы EMIF: мультиплексированный или немультиплексированный.3. Выбор режима доступа к памяти:1) доступ только ко внутренней памяти;2) раздельный доступ без выбора банка;3) раздельный доступ с выбором банка;4) доступ только к внешней памяти.4.