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

 
 
3 страниц V  < 1 2 3 >  
Closed TopicStart new topic
> IAP программирование Option Bytes (STM32F1)
Сергей Борщ
сообщение Jan 16 2015, 14:41
Сообщение #16


Гуру
******

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



Цитата(ViKo @ Jan 16 2015, 16:39) *
Какой STM32F1? sm.gif
Из заголовка темы. Default value до тех пор, пока не будет переопределено sm.gif


--------------------
На любой вопрос даю любой ответ
"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
сообщение Jan 16 2015, 14:50
Сообщение #17


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

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



Интересную вещь еще заметил, если стоит защита от чтения, то после коннекта/дисконнекта по SWD, приложение перестает выполняться, даже RESET не помогает. Надо снимать питание.
Это так и должно быть?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 16 2015, 14:56
Сообщение #18


Гуру
******

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



Цитата(ViKo @ Jan 16 2015, 16:39) *
От попал!
STM32F207
В топку. В другой раз осторожнее (или документацию читайте внимательнее):
Цитата
When the read protection Level 2 is set by writing 0xCC to the RDP option byte:
– All protections provided by Level 1 are active.
Booting from system memory is not allowed anymore. << Забудьте про BOOT0
– JTAG, SWV (single-wire viewer) are disabled.
User option bytes can no longer be changed. << И это навсегда



--------------------
На любой вопрос даю любой ответ
"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, 15:07
Сообщение #19


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

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



Цитата(Сергей Борщ @ Jan 16 2015, 17:41) *
Из заголовка темы. Default value до тех пор, пока не будет переопределено sm.gif

#define STM32F1XX
#define STM32F2XX
#define STM32F3XX
#define STM32F4XX

И DfuSe не видит моего дивайса. Да, без BOOT0 не обойтись. Надо на будущее предусмотреть секретное подключение Hi на эту ножку.
Еще с размаху и второй прибор запрограммировал. Опции убрал, а скопмилировать забыл. Возьму третий... biggrin.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 16 2015, 15:11
Сообщение #20


Гуру
******

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



Цитата(Alt.F4 @ Jan 16 2015, 16:50) *
Это так и должно быть?
А не отключаете ли вы случайно HSI?


--------------------
На любой вопрос даю любой ответ
"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, 15:28
Сообщение #21


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

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



И что теперь, не стереть flash?! Шо за хня!?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 16 2015, 17:02
Сообщение #22


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

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



А если создать в своей программе функцию стирания памяти, и запускать ее после неких секретных манипуляций? Тогда возможно случайное стирание, что нехорошо. Но это лучше, чем "камень".
Жду советов. Неужели только "в топку"?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 16 2015, 21:22
Сообщение #23


Гуру
******

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



Цитата(ViKo @ Jan 16 2015, 19:02) *
Жду советов. Неужели только "в топку"?
Нет оснований не верить документации. Доктор сказал - "в морг", значит в морг.


--------------------
На любой вопрос даю любой ответ
"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, 22:08
Сообщение #24


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

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



Пошарил по Интернету... какая, однако, мощная защита. rolleyes.gif
Выпаивать, запаивать, программировать. Добавилось забот.
После этого... разве найдется кто-то в здравом уме, чтобы так безвозвратно рубить концы. maniac.gif

P.S. за одного (у)битого двух не(до)битых дают
P.P.S. А был бы свой загрузчик в программе, мог бы обновляться. Пора заняться и им!
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jan 17 2015, 00:57
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ViKo @ Jan 16 2015, 20:02) *
А если создать в своей программе функцию стирания памяти, и запускать ее после неких секретных манипуляций?

если ставится максимальный црп, то очень желательно (если нет бута)
имхо
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 17 2015, 06:36
Сообщение #26


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

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



Цитата(toweroff @ Jan 17 2015, 03:57) *
если ставится максимальный црп, то очень желательно (если нет бута)
имхо

Не поможет. Старое сотру, а нового все равно не записать.

DfuSe проверить не смогу, потому, что использую не те ноги МК. Но написано же, загрузка по ВOOT отключается. Странно, зачем столько защит? Как однократно программируемая память.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 17 2015, 11:34
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 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
сообщение Jan 17 2015, 16:17
Сообщение #28


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

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



Цитата
Попробуйте после этого временно сбросить питание и получите Level1)
Что значит Level1? Попробовал, все ОК, флэш не стерта и защита от чтения снята.

Цитата
А кто обещал, что NVIC_SystemReset куда-то "прыгает"?
Это всего лишь возможность на некоторое время просадить NRST-пин на землю. Если у вас там жесткая "1", то RESETа не будет)
В других местах кода прыгает в начало программы.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 19 2015, 13:20
Сообщение #29


Гуру
******

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



Цитата(Alt.F4 @ Jan 17 2015, 18:17) *
В других местах кода прыгает в начало программы.
Я все понял. Никакие билиотеки не смогут обмануть производителя. При попытке снять защиту от чтения память стирается и процессор начинает исполнять команду с кодом 0xFFFF. А отладчик тупо ставит точку останова на адрес после вызова функции NVIC_SystemReset(). И поскольку память стерта, то и на месте вызова этой функции тоже стоит код операции 0xFFFF и ваша программа в NVIC_SystemReset() не входит (потому что больше нет ни NVIC_SystemReset() ни команды перехода на нее) - ядро просто тупо выполняет код 0xFFFF и переходит к следующему адресу, на котором встречает точку останова. А отладчик тупо продолжает показывать вам высокоуровневый исходник. Посмотрите содержимое памяти по адресам, из которых выполняется программа в окне memory или как оно называется в IARе.


--------------------
На любой вопрос даю любой ответ
"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
сообщение Jan 19 2015, 22:04
Сообщение #30


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

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



Сергей Борщ, не угадали, когда флэш стирается или включается защита от чтения на NVIC_SystemReset дебаг прекращается полностью.
Кстати, исходник библиотеки я скинул выше.
Go to the top of the page
 
+Quote Post

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

 


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


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