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

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


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

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



Здравствуйте.

Никак не получается программно изменить Option Bytes.
Использую примеры ST, но они не работают (по адресам 0x1FFF F800 - 0x1FFF F80F ничего не меняется):
FLASH_Unlock();
FLASH_EnableWriteProtection(FLASH_WRProt_Pages0to1 |FLASH_WRProt_Pages2to3);
NVIC_SystemReset();


Если перед записью добавить FLASH_EraseOptionBytes(), то каким-то чудесным образом включается защита от чтения и даже последующая FLASH_ReadOutProtection(DISABLE) не помогает ее выключить.

Может кто-то сталкивался с подобным?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alt.F4
сообщение Jan 16 2015, 11:37
Сообщение #2


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

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



Да, в доке написано, что при стирании Option Bytes включается Read Protection, а при выключении этой защиты стирается флэш.
Однако проведя множество экспериментов удалось определить, что функция FLASH_EraseOptionBytes() работает как сказано в описании и не включает защиту от чтения при стирании Option Bytes, но есть один момент.

if(FLASH_GetWriteProtectionOptionByte() != ~FLASH_WRProt_Pages0to1) {
FLASH_Unlock();
FLASH_EraseOptionBytes();
FLASH_EnableWriteProtection(FLASH_WRProt_Pages0to1);
NVIC_SystemReset();}

Приведенный выше листинг работает правильно и в результате мы получаем выключенную защиту от чтения и включенную защиту от записи.
Правда немного смущает, что:
1) в дебагере IAR после NVIC_SystemReset() указатель не прыгает в Reset, а продолжает дальше выполнение кода (Почему?)
2) в остальных ячейках nWRP1-nWRP3 (в nWRP0 и WRP0 все верно) записаны 0xFF, хотя по идее там автоматом должна выставляться инверсия 0x00.

И самый изюм всего, если написать неверное условие (например, if(FLASH_GetWriteProtectionOptionByte() != 0), то на NVIC_SystemReset(); дебаг прекращается и мы ловим защиту от чтения.
Как это можно объяснить?
Спасибо.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 17 2015, 11:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Alt.F4 @ Jan 16 2015, 14:37) *
Да, в доке написано, что при стирании Option Bytes включается Read Protection, а при выключении этой защиты стирается флэш.
Однако...

Попробуйте после этого временно сбросить питание и получите Level1)

Цитата(Alt.F4 @ Jan 16 2015, 14:37) *
после NVIC_SystemReset() указатель не прыгает в Reset, а продолжает дальше выполнение кода (Почему?)

А кто обещал, что NVIC_SystemReset куда-то "прыгает"?
Это всего лишь возможность на некоторое время просадить NRST-пин на землю. Если у вас там жесткая "1", то RESETа не будет)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alt.F4   IAP программирование Option Bytes (STM32F1)   Jan 15 2015, 07:31
- - Сергей Борщ   Цитата(Alt.F4 @ Jan 15 2015, 09:31) Никак...   Jan 15 2015, 08:40
- - Alt.F4   Хочется использовать стандартную библиотеку, чтобы...   Jan 15 2015, 09:42
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 15 2015, 11:42) Хочет...   Jan 15 2015, 10:54
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 16 2015, 13:37) функц...   Jan 16 2015, 12:32
- - ViKo   А как запрограммировать Option Bytes средствами са...   Jan 16 2015, 12:43
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 14:43) средств...   Jan 16 2015, 12:53
|- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 15:53) ...   Jan 16 2015, 13:48
- - Alt.F4   ЦитатаПоздравляю, вы нашли брешь в защитеЭто скоре...   Jan 16 2015, 12:55
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 16 2015, 14:55) Это с...   Jan 16 2015, 13:52
|- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 16:52) ...   Jan 16 2015, 13:56
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 15:56) Я задал...   Jan 16 2015, 14:32
|- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 17:32) ...   Jan 16 2015, 14:39
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 16:39) Какой S...   Jan 16 2015, 14:41
||- - ViKo   Цитата(Сергей Борщ @ Jan 16 2015, 17:41) ...   Jan 16 2015, 15:07
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 16:39) От попа...   Jan 16 2015, 14:56
- - Alt.F4   Код/** * @brief Erases the FLASH option bytes. ...   Jan 16 2015, 14:24
- - Alt.F4   Интересную вещь еще заметил, если стоит защита от ...   Jan 16 2015, 14:50
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 16 2015, 16:50) Это т...   Jan 16 2015, 15:11
- - ViKo   И что теперь, не стереть flash?! Шо за хня...   Jan 16 2015, 15:28
- - ViKo   А если создать в своей программе функцию стирания ...   Jan 16 2015, 17:02
|- - Сергей Борщ   Цитата(ViKo @ Jan 16 2015, 19:02) Жду сов...   Jan 16 2015, 21:22
|- - toweroff   Цитата(ViKo @ Jan 16 2015, 20:02) А если ...   Jan 17 2015, 00:57
|- - ViKo   Цитата(toweroff @ Jan 17 2015, 03:57) есл...   Jan 17 2015, 06:36
- - ViKo   Пошарил по Интернету... какая, однако, мощная защи...   Jan 16 2015, 22:08
- - Alt.F4   ЦитатаПопробуйте после этого временно сбросить пит...   Jan 17 2015, 16:17
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 17 2015, 18:17) В дру...   Jan 19 2015, 13:20
- - Alt.F4   Сергей Борщ, не угадали, когда флэш стирается или ...   Jan 19 2015, 22:04
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 20 2015, 00:04) Кстат...   Jan 19 2015, 23:31
- - Alt.F4   По всей видимости мне надо видео снять, как эта ма...   Jan 20 2015, 07:08
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 20 2015, 09:08) По вс...   Jan 20 2015, 08:25
- - Alt.F4   ЦитатаСнимите. Только шагайте не по исходнику, а п...   Jan 20 2015, 15:52
- - Alt.F4   Если кому-нибудь интересно, то продолжение здесь.   Jan 21 2015, 19:33


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:37
Рейтинг@Mail.ru


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