STM32F4xx: байты опций |
![]() |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Байты опций конфигурируются конечным пользователем в зависимости от требований приложения. Таблица 14 показывает организацию этих байт в секторе конфигурации пользователя (user configuration sector). Таблица 14. Организация байт опций.
Таблица 15. Описание байт опций STM32F405xx/07xx и STM32F415xx/17xx.
Таблица 16. Описание байт опций STM32F42xxx и STM32F43xxx.
[Программирование байт опций] Чтобы запустить любую операцию на этом секторе, должен быть очищен бит блокировки опций (option lock bit, OPTLOCK) в регистре управления опциями Flash (FLASH_OPTCR). Чтобы можно было очистить этот бит, Вы должны выполнить следующие действия: 1. Записать OPTKEY1 = 0x08192A3B в регистр ключа опций Flash (FLASH_OPTKEYR). Байты опций пользователя могут быть защищены от нежелательных операций стирания/программирования путем программной установки бита OPTLOCK. Модификация байт опций STM32F405xx/07xx и STM32F415xx/17xx. Чтобы модифицировать значение опции, выполните следующую последовательность действий: 1. Проверьте, что в настоящий момент не выполняется операция с памятью Flash, путем проверки бита BSY в регистре FLASH_SR. Примечание: значение опции модифицируется автоматически, при этом сначала стирается сектор конфигурации пользователя, и затем программируются все байты опций с значениями, содержащимися в регистре FLASH_OPTCR. Модификация байт опций STM32F42xxx и STM32F43xxx. Байты параметров пользователя для банка 1 и банка 2 не могут быть изменены независимо. Они должны обновляться одновременно. Чтобы изменить значение байта пользовательской опции, выполните следующие действия: 1. Проверьте, что в настоящий момент не выполняется операция с памятью Flash, путем проверки бита BSY в регистре FLASH_SR. Примечание: значение байта опций модифицируется автоматически, при этом сначала стирается сектор конфигурации пользователя (банк 1 и банк 2), и затем программируются все байты опций с значениями, содержащимися в регистрах FLASH_OPTCR и FLASH_OPTCR1. [Read protection (RDP)] Пользовательская область в памяти Flash может быть защищена от операций чтения со стороны доверенного кода. Определены 3 уровня защиты от чтения: • Level 0: нет защиты от чтения Когда установлен уровень 0 защиты чтения путем записи 0xAA в байт опции защиты чтения (read protection option byte, RDP), разрешены все операции чтения/записи (если не установлена защита от записи) памяти Flash или Backup SRAM во всех конфигурациях загрузки (Flash user boot, debug or boot from RAM). • Level 1: разрешена защита от чтения Это уровень защиты по умолчанию после стирания байта опций. Защита от чтения Level 1 активируется путем записи любого значения (кроме 0xAA и 0xCC, используемые для установки уровней Level 0 и Level 2 соответственно) в байт опций RDP. Когда установлена защита от чтения Level 1: – Не разрешен доступ к памяти Flash или Backup SRAM (чтение, стирание, программирование) при подключении функции отладки или при загрузке из RAM или из загрузчика системной памяти (system memory bootloader). Генерируется ошибка шины при запросе чтения. Когда активен уровень защиты Level 1, программирование байта опций защиты (RDP) на уровень Level 0 приведет к полному стиранию памяти Flash и Backup SRAM. В результате перед снятием защиты от чтения вся область кода пользователя стирается. Эта операция массовой очистки стирает только область кода пользователя. Другие байты опций, включая защиту от записи, остаются нетронутыми. Область OTP также не затрагивается этой операцией массового стирания. Операция массового стирания выполняется только когда активен уровень защиты Level 1, и запрошен уровень защиты Level 0. Когда уровень защиты увеличивается (0 -> 1, 1 -> 2, 0 -> 2), массовое стирание не выполняется. • Level 2: защита от отладки / чтения чипа Уровень защиты от чтения Level 2 активируется записью 0xCC в байт опций RDP. Когда установлен уровень защиты от чтения Level 2: – Активны все функции защиты, предоставляемые Level 1. Установка уровня защиты Level 2 является необратимой операцией. Когда активирован Level 2, уровень защиты не может быть уменьшен до Level 0 или Level 1. Примечание: при активном Level 2 порт JTAG безвозвратно запрещен (это работает как фьюз JTAG). Как следствие тесты boundary scan выполнить нельзя. STMicroelectronics не может выполнить анализ дефектных чипов, у которых установлена защита Level 2. Таблица 17. Уровни доступа в зависимости от установленного уровня защиты.
Примечание (1): основная память Flash и Backup SRAM стираются только когда RDP меняется с уровня Level 1 к уровню Level 0. Область OTP остается неизмененной. На рис. 6 показано, как переходить от одного уровня RDP к другому. Рис. 6. Уровни защиты RDP. [Защита от записи] Может быть защищено до 24 секторов пользователя от нежелательных операций записи из-за сбоев в контекстах программы. Когда бит защиты (non-write protection nWRPi, здесь 0 ≤ i ≤ 11) в регистрах FLASH_OPTCR или FLASH_OPTCR1 сброшен в лог. 0, соответствующий сектор не может быть стерт или запрограммирован. Как следствие, операция полного стирания (mass erase) не может быть выполнена, если хотя бы один из секторов защищен от записи. Если сделана попытка стирания/программирования на защищенной части памяти Flash (на секторе, защищенном битом защиты от записи, на заблокированной части OTP или части Flash, которая никогда не может быть записана так, как записывается память Flash ICP), установится флаг ошибки защиты записи (write protection error, WRPERR) в регистре FLASH_SR. На микроконтроллерах STM32F42xxx и STM32F43xxx, когда установлен режим PCROP, активный уровень бит nWRPi составляет лог. 1, и соответствующий сектор i защищен от записи, когда nWRPi в лог. 1. Сектор PCROP автоматически защищен от записи. Примечание: когда выбран уровень защиты чтения памяти (уровень RDP = 1), нельзя запрограммировать или стереть сектор i памяти Flash, если подключена функция отладки CPU (JTAG или однопроводный интерфейс отладки), или из RAM выполняется код загрузки, даже если nWRPi = 1. Флаг ошибки защиты записи. Если выполнилась операция стирания/программирования в защищенную область Flash, установится флаг ошибки защиты записи (Write Protection Error, WRPERR) в регистре FLASH_SR. Если запрашивается операция стирания, то бит WRPERR установится в следующих ситуациях: • Сконфигурирована операция mass erase, bank erase, sector erase (MER или MER/MER1 и SER = 1). Если запрошена операция программирования, то бит WRPERR установится в следующих ситуациях: • Операция записи выполняется на системной памяти (system memory) или в определенный сектор на зарезервированной части пользователя. [Proprietary code readout protection (PCROP)] Проприетарная защита от чтения (proprietary readout protection, PCROP) доступна только на микроконтроллерах STM32F42xxx и STM32F43xxx. Сектора памяти Flash пользователя (от 0 до 23) могут быть защищены от чтения со стороны D-bus с использованием proprietary readout protection (PCROP). Защита PCROP выбирается следующим образом, через бит опций SPRMOD в регистре FLASH_OPTCR: • SPRMOD = 0: nWRPi управляет защитой от записи соответствующих секторов пользователя. Когда сектор защищен активацией режима PCROP, к нему можно получить доступ для кода только только для выборки кода через шину ICODE во Flash-интерфейсе: • Любая попытка чтения, выполненная через D-bus, приведет к установке флага ошибки RDERR. Рис. 7. Уровни защиты PCROP. Примечание *: "правильный nWRPi" означает, что ни один из установленных бит nWRP не может быть сброшен (переход от 1 к 0). Деактивация SPRMOD и/или снятие защиты PCROP секторов пользователя может происходить только когда одновременно уровень RDP меняется с 1 на 0. Если это условие не выполняется, то модификация байта опций пользователя отменяется, и установится флаг ошибки записи WRPERR. Модификация байт опций пользователя (BOR_LEV, RST_STDBY, ..) допускается, пока ни один из бит nWRPi не сброшен, и активен режим SPRMOD. Примечание: активное значение бит nWRPi инвертируется, когда активен режим PCROP (SPRMOD=1). Если SPRMOD=1 и nWRPi=1, то сектор i пользователя в банке 1, соответственно и в банке 2, защищен от чтения/записи (PCROP). [Однократно программируемые байты] Таблица 18 показывает организацию однократно программируемой области (one-time programmable, OTP) памяти. Таблица 18. Организация области OTP.
Область OTP поделена на 16 блоков данных OTP по 32 байта и блок блокировки OTP из 16 байт. Данные OTP data и блоков блокировки не могут быть стерты. Блок блокировки содержит 16 байт LOCKBi (0 ≤ i ≤ 15) для блокировки соответствующих блоков данных OTP (блоки от 0 до 15). Каждый блок данных OTP может программироваться, пока не будет записано значение 0x00 в соответствующий байт блокировки OTP. Байты блокировки должны содержать только значения 0x00 и 0xFF, иначе байты OTP могут учитываться неправильно. [Ссылки] 1. RM0090 Reference manual STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced Arm®-based 32-bit MCUs site:st.com. |