Страница на этапе разработки
В данном уроке мы рассмотрим возможности защиты нашего кода в микроконтроллере STM32F1xx.
Для активации защиты от считывания необходимо установить байт опций RDP, а после перезагрузить микроконтроллер.
После установки защитного байта мы получаем:
****??
Состояние защиты от флэш-памяти:
Значение байта RDP | Значение дополнения RDP | Состояние защиты чтения |
---|---|---|
0xFF | 0xFF | защищенный |
RDPRT | Дополнение байт RDP | Не защищен |
Любое значение | Не значение дополнения RDP | защищенный |
Прим.: Удаление байта опции не приведет к стиранию массы, поскольку стертое значение (0xFF) соответствует защищенному значению.
???***
Что бы отключить защиту чтения от встроенной SRAM:
**********************************************
В высокой плотности и устройств подключения линии, начиная со страницы 0 до 61, защита от записи осуществляется с зернистостью двух страниц одновременно. Оставшийся блок памяти (со страницы 62 на стр. 255 в устройствах с высокой плотностью и со стр. 62 на стр. 127 в устройствах линии связи) сразу защищен от записи.
В устройствах с низкой и средней плотностью защита от записи реализуется с гранулярностью по четыре страницы за раз.
Если на защищенной странице выполняется программа или операция стирания, флэш-память возвращает флаг ошибки защиты в регистре состояния флэш-памяти (FLASH_SR).
Защита записи активируется путем настройки байтов опции WRP [3:0], а затем применяя системный сброс для перезагрузки новых байтов опций WRPx.
Снятие защиты:
Чтобы отключить защиту от записи, предусмотрены два случая применения:
● Случай 1: защита чтения отключена после защиты от записи:
– Удалите всю область байтов опций, используя бит OPTER во флэш-памяти контрольный регистр (FLASH_CR)
– Запрограммируйте правильный код RDP 0x00A5 для снятия защиты с памяти. Эта операция сначала сделает общий сброс основной флэш-памяти.
– Сбросьте устройство (сброс системы), чтобы перезагрузить байты опций (и новый WRP [3:0] байт) и отключить защиту от записи
● Случай 2: защита чтения поддерживается активной после защиты от записи, полезная для программирования приложений с помощью пользовательского загрузчика:
– Удалите всю область байтов опций, используя бит OPTER во флэш-памяти контрольный регистр (FLASH_CR)
– Сбросьте устройство (сброс системы), чтобы перезагрузить байты опций (и новый WRP [3:0] байт) и отключить защиту от записи.
Байты опций всегда доступны для чтения и защищаются от записи по умолчанию. Для того, чтобы получить доступ на запись (Программа / Erase) для опционных байтов, последовательность ключей (такой же, как для блокировки) должен быть записан в OPTKEYR. Правильная последовательность ключей дает доступ на запись к байтам опций, и это указывается OPTWRE в установленном регистре FLASH_CR. Доступ к записи может быть отключен путем сброса бит через программное обеспечение.
Существует восемь опциональных байтов. Они настраиваются конечным пользователем в зависимости от требований приложения. В качестве примера конфигурации сторожевой таймер может быть выбран в аппаратном или программном режиме.
32-битное слово разделяется следующим образом в байтах опций.
Формат байта опций:
31-24 | 23-16 | 15-8 | 7-0 |
---|---|---|---|
дополненный байт 1 | байт опций 1 | дополненный байт 0 | байт опций 0 |
Организация этих байтов внутри информационного блока приведена в следующей таблице.
Байты опций могут быть считаны из мест памяти, перечисленных в следующей таблице, или из регистра байта Option (FLASH_OBR).
Прим.: Новые запрограммированные байты опций (пользователь, защита чтения / записи) загружаются после сброса системы.
Организация байт опций:
Address | [31:24] | [23:16] | [15:8] | [7:0] |
---|---|---|---|---|
0x1FFF F800 | nUSER | USER | nRDP | RDP |
0x1FFF F804 | nData1 | Data1 | nData0 | Data0 |
0x1FFF F808 | nWRP1 | WRP1 | nWRP0 | WRP0 |
0x1FFF F80C | nWRP3 | WRP3 | nWRP2 | WRP2 |
Уникальный идентификатор устройства идеально подходит:
● для использования в качестве серийных номеров (например, серийные номера USB-шнуров или другие конечные приложения)
● для использования в качестве ключей безопасности для повышения безопасности кода во флэш-памяти при использовании и объединении этого уникального идентификатора с программными криптографическими примитивами и протоколами перед программированием внутренней флэш-памяти
● активировать безопасные процессы загрузки и т. д.
96-битный уникальный идентификатор устройства предоставляет ссылочный номер, который уникален для любого устройства и в любом контексте. Эти биты никогда не могут быть изменены пользователем. 96-битный уникальный идентификатор устройства также может быть прочитан в отдельных байтах / словах / словах по-разному, а затем конкатенирован с использованием пользовательского алгоритма.
Базовый адрес: 0x1FFF F7E8