реклама на сайте
подробности

 
 
> IAP программирование Option Bytes (STM32F1)
Alt.F4
сообщение Jan 17 2015, 07:04
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Здравствуйте.
Создавал эту тему в разделе для начинающих, но там никто с подобным не сталкивался. Работаем по примерам от ST:
Код
if(FLASH_GetWriteProtectionOptionByte() != ~FLASH_WRProt_Pages0to1) {
FLASH_Unlock();
FLASH_EraseOptionBytes();
FLASH_UserOptionByteConfig(OB_IWDG_SW, OB_STOP_RST, OB_STDBY_RST);
FLASH_EnableWriteProtection(FLASH_WRProt_Pages0to1);
NVIC_SystemReset();}

Данный код работает как надо, т.е. по итогу мы получаем защиту от записи 0 и 1 страницы и прописанные User Bits, но смущает одна вещь.
В дебагере IAR после NVIC_SystemReset(); указатель не прыгает в Reset, а продолжает дальше выполнение кода, почему?

А теперь самый прикол, если написать вместо:
if(FLASH_GetWriteProtectionOptionByte() != ~FLASH_WRProt_Pages0to1)
любое другое условие,например:
if(FLASH_GetWriteProtectionOptionByte() != FLASH_WRProt_Pages0to1) или такое u8 k=0; if(!k),
то на NVIC_SystemReset(); дебаг прекращается и мы ловим защиту от чтения (причем защита от записи и User Bits при этом не устанавливаются).
Как это можно объяснить?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alt.F4
сообщение Jan 21 2015, 19:31
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Уважаемый Сергей Борщ, спасибо большое, что помогли разобраться во всей магии установки опций!!!
По итогу мы узнали, что:
1. Стирание Option Bytes (т.е. включение защиты от чтения) и запись нового значения RDP (отключение защиты от чтения) не приводит к стиранию флэш. Стирание происходит, только если новое значение RDP пишется после ресета.
2. В дебагере IAR NVIC_SystemReset(); всегда приводит к сбросу, однако IDE сама переносит точку останова на следующую функцию, поэтому при отладке мы этого не замечаем.
3. Если выставить неверное условие, как я писал в первом сообщении, то мы ловим защиту от чтения и не установку других значений Option Bytes по причине того, что запись во флэш очень длительный процесс и при ресете мы на него всегда попадаем, в итоге в Option Bytes все оказывается стерто.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 05:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016