Программирование ARM AT91SAM7X: встроенная аппаратная защита программного обеспечения firmware Fri, December 13 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


AT91SAM7X: встроенная аппаратная защита программного обеспечения firmware Печать
Добавил(а) microsin   

В ядро микроконтроллера AT91SAM7X (AT91SAM7X128, AT91SAM7X256, AT91SAM7X512) встроены специальные биты блокировки (lock bits) и бит защиты (security bit), которые помогают защитить firmware от незаконного доступа и копирования.

[Lock Regions - блокировка областей памяти программ (FLASH)]

Защита lock bits не защищает от незаконного копирования прошивки, она просто позволяет предотвратить случайное выполнение команд стирания (erase) и программирования регионов памяти FLASH.

AT91SAM7X512 - этот микроконтроллер имеет 2 встроенных в ядро контроллера FLASH (Embedded Flash Controller, EFC), каждый из которых управляет 16 битами блокировки (lock bits) с целью защиты 16 регионов FLASH. Всего SAM7X512 содержит 32 защищаемых региона, при этом каждый регион имеет 64 страницы по 256 байт каждая. Таким образом, каждый защищаемый регион имеет размер 16 кбайт.

AT91SAM7X256 - у этого микроконтроллера есть только 1 контроллер EFC, который также управляет 16 битами блокировки для 16 регионов памяти. Всего SAM7X256 содержит 16 защищаемых региона, при этом каждый регион имеет 64 страницы по 256 байт каждая. Каждый защищаемый регион также имеет размер 16 кбайт.

AT91SAM7X128 - у этого микроконтроллера есть только 1 контроллер EFC, который управляет 8 битами блокировки для 8 регионов памяти. Всего SAM7X128 содержит 8 защищаемых региона, при этом каждый регион имеет 64 страницы по 256 байт каждая. Каждый защищаемый регион также имеет размер 16 кбайт.

Если для заблокированного региона выполнена команда очистки (erase) или программирования, то команда будет прервана, и EFC вызовет прерывание.

Биты блокировки lock bits основаны на технологии NVM-Bit. Аббревиатура NVM расшифровывается как Non-Volatile Memory, что означает "энергонезависимая память". Память NVM-Bit по сути это та же самая память FLASH, только выделенная в специальную область, предназначенная для целей защиты, и имеющая отдельный интерфейс установки. Все 32 бита блокировки управляются программно через интерфейс пользователя (регистры) EFC. Команда "Set Lock Bit" разрешает защиту региона. Команда "Clear Lock Bit" отменяет защиту региона.

Установка в лог. 1 ножки ERASE очищает биты блокировки, при этом вся память FLASH разблокируется.

[Security Bit]

Бит защиты Security Bit также основан на технологии NVM-Bit. Когда защита включена (Security Bit установлен), то запрещен любой доступ к FLASH - как через интерфейс ICE (EmbeddedICE™ In-circuit Emulation, или JTAG, интерфейс для внутрисхемной отладки), так и через быстрый интерфейс программирования FLASH (Fast Flash Programming Interface). Это обеспечивает конфиденциальность кода, который уже запрограммирован во FLASH.

Бит защиты может быть только установлен, это делается командой "Set Security Bit" через интерфейс пользователя (регистры) EFC. Сбросить бит защиты (отменить защиту) можно только лишь установкой ножки ERASE в лог. 1, и после этого выполняется не только отмена защиты, но и полное стирание содержимого FLASH. При этом полностью разрешается доступ памяти FLASH и на чтение, и на запись.

Важно иметь в виду, что установка лог. 1 на ножке ERASE с целью стирания должна быть не короче 220 мс. Поскольку ножка ERASE имеет встроенный нижний подтягивающий резистор (pull-down), то для нормальной работы чипа вывод ERASE может оставаться неподключенным (висеть в воздухе). Однако самым безопасным будет замкнуть в конечном изделии вывод ERASE на GND.

[Non-volatile Brownout Detector Control]

Биты управления детектором пропадания питания (Brownout Detector, BOD) относятся к энергонезависимым битам общего назначения (general purpose non-volatile memory, GPNVM), которые также основаны на технологии NVM. Это обеспечивает сохранение установленных значений бит при пропадании напряжения питания.

Имеется 2 бита управления BOD (GPNVM Bit 0 и GPNVM Bit 1), которые могут быть очищены или установлены командами "Clear General-purpose NVM Bit" и "Set General-purpose NVM Bit" соответственно. Это также делается через интерфейс пользователя (регистры) EFC.

• GPNVM Bit 0 используется как бит разрешения BOD. Установка GPNVM Bit 0 разрешает BOD, очистка запрещает работу BOD. Установка вывода ERASE в лог. 1 очищает бит GPNVM Bit 0, и таким образом по умолчанию brownout detector (BOD) запрещен.
• GPNVM Bit 1 используется в разрешении сигнала сброса по пропаданию питания (brownout reset enable signal) для контроллера сброса. Установка GPNVM Bit 1 разрешает сброс по пропаданию питания (brownout reset), когда соответствующее пропадание питания (brownout) обнаружено. Очистка GPNVM Bit 1 запрещает сброс по событию пропадания питания (brownout reset). Установка вывода ERASE в лог. 1 по умолчанию запрещает brownout reset.

[Биты калибровки (Calibration Bits)]

Восемь битов NVM используются для калибровки BOD и регулятора напряжения. Эти биты конфигурируются на заводе Atmel, и не могут быть изменены пользователем. Ножка ERASE не влияет на биты калибровки.

[Ссылки]

1. Безопасное и защищенное обновление firmware для AT91SAM.
2. Безопасная и защищенная реализация бутлоадера.
3. Atmel AVR230: DES Bootloader.
4. Atmel AVR231: AES Bootloader.

 

Добавить комментарий


Защитный код
Обновить

Top of Page