русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Защита кода и данных


Дата добавления: 2015-08-06; просмотров: 1082; Нарушение авторских прав


 

Содержимое FLASH-памяти программ, а также содержимое EEPROM-памяти данных может быть защищено от записи и/или чтения посредством программирования ячеек защиты (Lock Bits) LB1 и LB2. Возможные режимы защиты, соответствующие различным состояниям этих ячеек, приведены в табл. 8.2.

 

Таблица 8.2. Режимы защиты

№ режима Ячейки защиты Описание
  LB1 LB2  
Защита кода и данных отключена
Запись FLASH и EEPROM запрещена
Запрещены запись и чтение FLASH и EEPROM

 

В режимах 2 и 3 запрещается также изменение конфигурационных ячеек. Поэтому включение защиты следует выполнять в самую последнюю очередь, после программирования остальных областей памяти микроконтроллера.

Во всех микроконтроллерах семейства, кроме ATmega48x, имеется четыре дополнительные ячейки защиты — BLB02, BLB01, BLB12 и BLB11. Ячейки BLB02:BLB01 определяют уровень доступа из секции загрузчика к коду, расположенному в секции прикладной программы, а ячейки BLB12:BLB11, наоборот, определяют уровень доступа из секции прикладной программы к коду, расположенному в секции загрузчика. Отсутствие указанных ячеек в модели ATmega48x обусловлено отсутствием у последней выделенной секции загрузчика. Возможные режимы защиты, соответствующие различным состояниям этих ячеек, приведены в табл. 9.3 и табл. 9.4 соответственно.

 

Таблица 9.3. Режимы защиты секции прикладной программы

№ режима Ячейки защиты Описание
  BLB02 BLB01  
Нет никаких ограничений по доступу к коду, расположенному в секции прикладной программы
Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции прикладной программы
Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции прикладной программы, и команда LPM (ELPM), вызываемая из секции загрузчика, не может осуществлять чтение из секции прикладной программы. Если таблица векторов прерываний расположена в секции загрузчика, то при выполнении кода из секции прикладной программы прерывания запрещены
Команда lpm (elpm), вызываемая из секции загрузчика, не может осуществлять чтение из секции прикладной программы. Если таблица векторов прерываний расположена в секции загрузчика, то при выполнении кода из секции прикладной программы прерывания запрещены

 



Таблица 9.4. Режимы защиты секции загрузчика

№ режима Ячейки защиты Описание
  BLB12 BLB11  
Нет никаких ограничений по доступу к коду, расположенному в секции загрузчика
Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции загрузчика
Команда SPM не может осуществлять запись по адресам, находящимся в пределах секции загрузчика, и команда LPM (ELPM), вызываемая из секции прикладной программы, не может осуществлять чтение из секции загрузчика. Если таблица векторов прерываний расположена в секции прикладной программы, то при выполнении кода из секции загрузчика прерывания запрещены
Команда lpm (elpm), вызываемая из секции прикладной программы, не может осуществлять чтение из секции загрузчика. Если таблица векторов прерываний расположена в секции прикладной программы, то при выполнении кода из секции загрузчика прерывания запрещены

 

Все перечисленные ячейки защиты сгруппированы в одном байте. Расположение ячеек защиты в нем для разных моделей приведено на Рис. 14.1.

 

Рис. 9.1. Байт ячеек защиты

 

В исходном (запрограммированном) состоянии во всех ячейках защиты содержится 1, после программирования – 0. Стирание ячеек (запись в них лог. 1) может быть произведено только при выполнении команды “Стирание кристалла”, уничтожающей также содержимое FLASH- и EEPROM-памяти.

 

Конфигурационные ячейки

 

Как следует из названия, конфигурационные ячейки (Fuse Bits) определяют различные параметры конфигурации микроконтроллера. Эти ячейки расположены в отдельном адресном пространстве, доступном только при программировании. Все конфигурационные ячейки сгруппированы в несколько байтов, а состав этих ячеек зависит от конкретной модели микроконтроллера. Наличие тех или иных ячеек в конкретном микроконтроллере можно определить по табл. 9.5, где в столбцах, отмеченных “звездочкой”, указаны состояния конфигурационных ячеек по умолчанию.

Краткое назначение всех конфигурационных ячеек приведено в табл. 9.6. Подробное описание их назначений было приведено в соответствующих главах книги.

Для изменения содержимого конфигурационных ячеек используются специальные команды программирования. Команда “Стирание кристалла” на состояние этих ячеек не влияет. Напоминаю, что при запрограммированной ячейке защиты LB1 конфигурационные ячейки блокируются. Поэтому конфигурацию микроконтроллера необходимо задавать до программирования ячеек защиты.

 

Таблица 9.5. Конфигурационные ячейки микроконтроллеров семейства

Бит ATmega8515x ATmega8535x ATmega8x ATmegal6x/ 32x ATtaega64x/ 128x ATmega48x
    Название * Название * Название * Название * Название * Название *
Младший конфигурационный байт
BODLEVEL BODLEVEL BODLEVEL BODLEVEL BODLEVEL CKDIV8
BODEN BODEN BODEN BODEN BODEN CKOUT
SUT1 SUT1 SUT1 SUT1 SUT1 SUT1
SUT0 SUTO SUTO SUTO SUTO SUTO
CKSEL3 CKSEL3 CKSEL3 CKSEL3 CKSEL3 CKSEL3
CKSEL2 CKSEL2 CKSEL2 CKSEL2 CKSEL2 CKSEL2
CKSEL1 CKSEL1 CKSEL1 CKSEL1 CKSEL1 CKSEL1
CKSEL0 CKSELO CKSELO CKSELO CKSELO CKSELO
Старший конфигурационный байт
S8515C S8535C RSTDISBL OCDEN OCDEN RSTDISBL
WDTON WDTON WDTON JTAGEN JTAGEN DWEN
SPIEN SPIEN SPIEN SPIEN SPIEN SPIEN
СКОРТ CKOPT CKOPT CKOPT CKOPT WDTON
EESAVE EESAVE EESAVE EESAVE EESAVE EESAVE
BOOTSZ1 BOOTSZ1 BOOTSZ1 BOOTSZ1 BOOTSZ1 BODLEVEL2
BOOTSZ0 BOOTSZO BOOTSZO BOOTSZO BOOTSZO BODLEVEL1
BOOTRST BOOTRST BOOTRST BOOTRST BOOTRST BODLEVELO
Дополнительный конфигурационный байт
––  
   
   
   
   
   
  M103C  
  WDTON SELFPRGEN  
* Значение бита.
                                   

 

Таблица 9.6. Назначение конфигурационных ячеек

Название Назначение
RSTDISBL Определяет функционирование 1 вывода микроконтроллера, совмещенного с выводом аппаратного сброса (0 — контакт порта ввода/вывода, 1 — вывод сброса)
CKSEL Определяет режим работы тактового генератора, а также длительность задержки сброса tTout
BODLEVEL Определяет порог срабатывания схемы BOR
BODEN Разрешает/запрещает функционирование схемы BOR (0 — разрешено, 1 — запрещено)
SPIEN11) Разрешает/запрещает программирование по интерфейсу SPI (0 — разрешено, 1 — запрещено)
SUT Определяет длительность задержки сброса tTout
WDTON Определяет режим работы сторожевого таймера (0 — всегда включен, 1 — может быть выключен программно)
СКОРТ Определяет функционирование тактового генератора, действие зависит от установок ячеек CKSEL
EESAVE2) Определяет влияние команды “Стирание кристалла” на EEPROM-память 0 — не стирает, 1 — стирает)
BOOTSZ Определяет размер секции загрузчика
BOOTRST Определяет положение вектора сброса
DWEN Разрешает/запрещает работу отладочного интерфейса debugWire (0 — разрешена, 1 — запрещена)
OCDEN Разрешает/запрещает внутрисхемную отладку (0 — разрешена, 1 — запрещена)
JTAGEN Разрешает/запрещает использование интерфейса JTAG (0 — разрешен, 1 — запрещен)
CKDIV8 Определяет начальное состояние делителя системного тактового сигнала
CKOUT Определяет состояние выходного буфера системного тактового сигнала (0 — подключен к выводу микроконтроллера, 1 — отключен)
SELFPRGEN3)) Разрешение самопрограммирования (0 — разрешено)
S8515C Включает/выключает режим совместимости с микроконтроллерами AT90S4414/8515 семейства Classic (0 — включен, 1 — выключен)
S8535C Включает/выключает режим совместимости с микроконтроллерами AT90S8535 семейства Classic (0 — включен, 1 — выключен)
М161С Включает/выключает режим совместимости с микроконтроллерами ATmega 161х семейства Mega (0 — включен, 1 — выключен)
М103С Включает/выключает режим совместимости с микроконтроллерами ATmega 103x семейства Mega (0 - включен, 1 - выключен)
     

 

1) Недоступна при программировании по последовательному каналу

2) Изменение состояния этой ячейки вступает в силу сразу же после ее программирования.

3)Только в ATmega48x.

 



<== предыдущая лекция | следующая лекция ==>
Общие сведения | Программирование по последовательному каналу


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.146 сек.