STM32F1xx:
Пользовательскую область флэш-памяти можно защитить от чтения ненадежным кодом. Страницы флэш-памяти также могут быть защищены от нежелательной записи из-за потери контекстов счетчика программ.
Зернистость защиты от записи:
● четыре страницы для устройств с низкой и средней плотностью
● две страницы для устройств с высокой плотностью и связностью.
Защита чтения активируется путем установки байт опций RDP, а затем, применяя системный сброс для перезагрузки нового байта опций RDP.
Прим.: Если защита чтения установлена, когда отладчик все еще подключен через JTAG / SWD, примените POR (сброс при включении) вместо сброса системы (без подключения отладчика).
После того как запрограммирован защитный байт:
● Основной доступ к памяти для чтения флэш-памяти не допускается, за исключением кода пользователя (при загрузке основной флэш-памяти с отключенным режимом отладки).
● Страницы 0-3 (для устройств с низкой и средней плотностью) или страницы 0-1 (для устройств с высокой плотностью и связностью) автоматически защищены от записи. Остальная часть памяти может быть запрограммирована кодом, выполняемым из основной флэш-памяти (для IAP, постоянного хранения и т. Д.), Но она защищена от записи / стирания (но не против стирания массы) в режиме отладки или при загрузке с встроенный SRAM.
● Все функции, связанные с загрузкой кода и выполнением кода из встроенного SRAM, по-прежнему активны (JTAG / SWD и загрузка из встроенного SRAM), и это можно использовать для отключения защиты чтения. Когда байт опции защиты чтения изменяется на значение защиты памяти, выполняется массовое стирание.
● Доступ к основной флэш-памяти через код, выполняемый с SRAM или FSMC, и доступ к Flash через чтение данных с использованием DMA1, DMA2, JTAG, SWV (просмотрщик последовательного канала), SWD (отладка последовательного интерфейса), ETM и сканирование границ не допускаются.
Состояние защиты от флэш-памяти:
Значение байта RDP
Значение дополнения RDP
Состояние защиты чтения
Прим.: Удаление байта опции не приведет к стиранию массы, поскольку стертое значение (0xFF) соответствует защищенному значению.
Снятие защиты:
Чтобы отключить защиту чтения от встроенной SRAM:
● Удалите всю область байта опций. В результате код защиты чтения (RDP) будет равен 0xFF. На этом этапе защита чтения по-прежнему включена.
● Запрограммируйте правильный код RDP 0x00A5 для снятия защиты с памяти. Эта операция сначала вынуждает Mass Erase основной флэш-памяти.
● Сбросьте устройство (POR Reset), чтобы перезагрузить байты опций (и новый код RDP) и отключить защиту чтения.
Прим.: Защита чтения может быть отключена с помощью загрузчика (в этом случае для перезагрузки байтов опций требуется только системный сброс).
В высокой плотности и устройств подключения линии, начиная со страницы 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
Организация этих байтов внутри информационного блока приведена в следующей таблице.
Байты опций могут быть считаны из мест памяти, перечисленных в следующей таблице, или из регистра байта Option (FLASH_OBR).
Прим.: Новые запрограммированные байты опций (пользователь, защита чтения / записи) загружаются после сброса системы.
Организация байт опций:
Address [31:24] [23:16] [15:8] [7:0]
Уникальный идентификатор устройства идеально подходит:
● для использования в качестве серийных номеров (например, серийные номера USB-шнуров или другие конечные приложения)
● для использования в качестве ключей безопасности для повышения безопасности кода во флэш-памяти при использовании и объединении этого уникального идентификатора с программными криптографическими примитивами и протоколами перед программированием внутренней флэш-памяти
● активировать безопасные процессы загрузки и т. д.
96-битный уникальный идентификатор устройства предоставляет ссылочный номер, который уникален для любого устройства и в любом контексте. Эти биты никогда не могут быть изменены пользователем. 96-битный уникальный идентификатор устройства также может быть прочитан в отдельных байтах / словах / словах по-разному, а затем конкатенирован с использованием пользовательского алгоритма.
Базовый адрес: 0x1FFF F7E8
STMicroelectronics
Задать свой вопрос: RussianSemiResearch@ya.ru