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

 
 
> 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, 12:55
Сообщение #2


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

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



Цитата
Поздравляю, вы нашли брешь в защите
Это скорее ошибка в доке, т.к. функция работает как описано в библиотеке.

Цитата
После стирания не должна. И это тоже написано в документации. Я только что еще раз прочитал и убедился в этом, но сюда выкладывать выдержку не буду, чтобы вы тоже прочитали сами. Пока будете искать это место в документации, попутно найдете еще много полезного.
После стриния я делаю запись EnableWriteProtection(), по которой должно быть: "The FPEC takes the LSB and automatically computes the MSB (which is the complement of
the LSB) and starts the programming operation." Но это не происходит...

Цитата
При "правильном" условии оно не выполняется и стирания со всеми вытекающими не происходит.
Я же дебагером захожу в него, условие выполняется. Да и как ему не выполняться, если по умолчанию защиты от записи нет.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 16 2015, 13:52
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Alt.F4 @ Jan 16 2015, 14:55) *
Это скорее ошибка в доке, т.к. функция работает как описано в библиотеке.
Чудесатые чудеса. У меня все работает четко по документации: защиту снял - память стерлась.
Цитата(Alt.F4 @ Jan 16 2015, 14:55) *
После стриния я делаю запись EnableWriteProtection(), по которой должно быть: "The FPEC takes the LSB and automatically computes the MSB (which is the complement of the LSB) and starts the programming operation." Но это не происходит...
Я не знаю, что делает эта библиотечная функция. Вероятно она пишет только те байты, которые отличаются от 0xFF, оставляя остальные стертыми. У вас же есть ее исходник, посмотрите там.
Цитата(Alt.F4 @ Jan 16 2015, 14:55) *
Я же дебагером захожу в него, условие выполняется. Да и как ему не выполняться, если по умолчанию защиты от записи нет.
Вам виднее, но я в чудеса не верю. Защита от записи включается после сброса. Возможно вы наблюдаете все это не сбрасывая процессор.


Цитата(ViKo @ Jan 16 2015, 15:48) *
И под сбросом не получается, сброс такой...
Хм. У меня OpenOCD снимает защиту через SWD. На разъем сброс не выведен.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 16 2015, 13:56
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Сергей Борщ @ Jan 16 2015, 16:52) *
Хм. У меня OpenOCD снимает защиту через SWD. На разъем сброс не выведен.

Я задал Level 2. При этом, кажется, отрубается JTAG (SWD).
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 16 2015, 14:32
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(ViKo @ Jan 16 2015, 15:56) *
Я задал Level 2. При этом, кажется, отрубается JTAG (SWD).
Какой Level 2 у STM32F1?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
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   Да, в доке написано, что при стирании Option Bytes...   Jan 16 2015, 11:37
|- - Сергей Борщ   Цитата(Alt.F4 @ Jan 16 2015, 13:37) функц...   Jan 16 2015, 12:32
|- - adnega   Цитата(Alt.F4 @ Jan 16 2015, 14:37) Да, в...   Jan 17 2015, 11:34
- - 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
|- - 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 Текстовая версия Сейчас: 20th July 2025 - 14:40
Рейтинг@Mail.ru


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