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

 
 
 
Reply to this topicStart new topic
> stm32 обновление бутлоадера
viakon
сообщение Apr 21 2016, 10:05
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002



Возможен ли SUBJ при включенной защите readout protection?
Написал програмку обновления бута, при выключенном readout protection работает, при включенном нет. Копание в доках показало что страницы 0-3 автоматически защищаются от записи. Т.е бут защищен. Не страшно когда у тебя 32к и выше, но вот для 16к девайсов уже жалко флеша. Специально ужался бутом в 2к, как оказалось зря.
Получается что если планируется бут, то программа должна начинаться не ниже чем с 0х08001000, а иначе ее бут переписать не сможет. Также невозможно обновить бут.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 21 2016, 12:12
Сообщение #2


Гуру
******

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



QUOTE (viakon @ Apr 21 2016, 12:05) *
Получается что если планируется бут, то программа должна начинаться не ниже чем с 0х08001000, а иначе ее бут переписать не сможет. Также невозможно обновить бут.
В общем случае да. Но вы можете в следующих 4К расположить вторичный загрузчик, который можно будет обновлять.


--------------------
На любой вопрос даю любой ответ
"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
AleksBak
сообщение Apr 21 2016, 12:41
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364



Цитата(viakon @ Apr 21 2016, 14:05) *
...Специально ужался бутом в 2к, как оказалось зря.
Получается что если планируется бут, то программа должна начинаться не ниже чем с 0х08001000...

cranky.gif Блин. Вот ведь облом. Тогда в оставшиеся после оптимизации 2к обязательно что-то запихнуть. Константы хотя бы (данные для инициализируемой секции в RAM).
Go to the top of the page
 
+Quote Post
viakon
сообщение Apr 22 2016, 04:05
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002



Цитата(AleksBak @ Apr 21 2016, 17:41) *
cranky.gif Блин. Вот ведь облом. Тогда в оставшиеся после оптимизации 2к обязательно что-то запихнуть. Константы хотя бы (данные для инициализируемой секции в RAM).

Лучше оставить как есть. После обновления основной программы константы могут и измениться.
Разработчикам ST надо было сделать запись в эти страницы только программатором. Тогда эта фича сразу выплывала бы.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 22 2016, 07:39
Сообщение #5


Гуру
******

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



QUOTE (viakon @ Apr 22 2016, 06:05) *
Разработчикам ST надо было сделать запись в эти страницы только программатором. Тогда эта фича сразу выплывала бы.
Вот не надо нам таких подарков даже даром. У меня в первых страницах кроме загрузчика живут еще регулировочные коэффициенты, которые прописываются при настройке и ключи шифрования, которые прописываются под конкретного заказчика после настройки одновременно с установкой защиты от чтения. Если бы запись в эти страницы изнутри была невозможна - мне пришлось бы резервировать под них еще одну, "обычную", страницу. А так после установки защиты от чтения я имею прибитые гвоздями настройки и ключи.


--------------------
На любой вопрос даю любой ответ
"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
viakon
сообщение Apr 22 2016, 09:19
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002



Цитата(Сергей Борщ @ Apr 22 2016, 12:39) *
Вот не надо нам таких подарков даже даром. У меня в первых страницах кроме загрузчика живут еще регулировочные коэффициенты, которые прописываются при настройке и ключи шифрования, которые прописываются под конкретного заказчика после настройки одновременно с установкой защиты от чтения. Если бы запись в эти страницы изнутри была невозможна - мне пришлось бы резервировать под них еще одну, "обычную", страницу. А так после установки защиты от чтения я имею прибитые гвоздями настройки и ключи.

Что я и говорил это не баг, это ФИЧА. Только несколько странно то что установка защиты от чтения может привести к неработоспособности программы. Надо учитывать этот момент.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 22 2016, 09:25
Сообщение #7


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

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



Цитата(viakon @ Apr 21 2016, 13:05) *
Возможен ли SUBJ при включенной защите readout protection?

Какой STM32?
Go to the top of the page
 
+Quote Post
PheeL
сообщение Apr 22 2016, 11:15
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 24-11-07
Пользователь №: 32 633



Цитата(ViKo @ Apr 22 2016, 12:25) *
Какой STM32?

Это для всей линейки STM32F10xxx. В PM0075 на странице 17 написано следующее:
"Pages 0-3 (for low- and medium-density devices), or pages 0-1 (for high-density and
connectivity line devices) are automatically write-protected. The rest of the memory can
be programmed by the code executed from the main Flash memory (for IAP, constant
storage, etc.), but it is protected against write/erase (but not against mass erase) in
debug mode or when booting from the embedded SRAM."
Сам на эти "грабли" наступил недавно. На STM32L1 код самодельного загрузчика обновляется с установленой защитой (первого уровня. Но она там тоже с "нюансами"), а на STM32F1 уже нет. FLASH-контроллер выдаёт WRPERR бит на попытку стирания этих первых страниц. А без защиты всё ок.


--------------------
Если друг оказался вдруг и не друг и не враг, а - JTAG.
Go to the top of the page
 
+Quote Post
skripach
сообщение Apr 22 2016, 18:02
Сообщение #9


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
обновление бутлоадера

Такого быть не должно впринципе.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Aner
сообщение Apr 22 2016, 22:20
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (skripach @ Apr 22 2016, 22:02) *
Такого быть не должно впринципе.

Конечно. Для чего его обновлять? Что там такого кривого можно подсунуть? Свой это БУТЛ должен быть отлажен и трудится как часики, и нечего его трогать.
А если и трогать то, полное стирание и загрузка нового с доп фичей забытой или придуманой.
Go to the top of the page
 
+Quote Post
viakon
сообщение Apr 25 2016, 05:21
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002



Цитата(Aner @ Apr 23 2016, 03:20) *
Конечно. Для чего его обновлять? Что там такого кривого можно подсунуть? Свой это БУТЛ должен быть отлажен и трудится как часики, и нечего его трогать.
А если и трогать то, полное стирание и загрузка нового с доп фичей забытой или придуманой.

Может лучше обсудить возможно это или не возможно, а не убеждать меня что это вовсе не надо. Мне хочется на 2к доступный флеш расширить. Кто знает защита от записи в этом случае битом в WRP0 устанавливается? Бут можно в конце концов обновить из ОЗУ путем снятия readout protection, при этом флеш сотрется и, после записи нового бута, можно будет защиту снова поставить. А вот снять защиту от записи не снимая readout protection было бы интересно. Будет время на эксперименты попробую.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 25 2016, 06:51
Сообщение #12


Гуру
******

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



QUOTE (viakon @ Apr 25 2016, 07:21) *
Бут можно в конце концов обновить из ОЗУ путем снятия readout protection, при этом флеш сотрется и, после записи нового бута, можно будет защиту снова поставить.
Не взлетит. Защита от чтения сниматся в момент сброса. А после сброса и стирания флеша заставить стартануть выгруженный в ОЗУ код можно только ногами BOOTx. Кстати, это одна из версий на недавно обсуждавшийся вопрос "зачем сделан старт из ОЗУ". Но... одно неловкое движение и имеем кирпич.
QUOTE (viakon @ Apr 25 2016, 07:21) *
А вот снять защиту от записи не снимая readout protection было бы интересно.
Не снимается. Проверено.


--------------------
На любой вопрос даю любой ответ
"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
viakon
сообщение Apr 25 2016, 07:03
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002



Цитата(Сергей Борщ @ Apr 25 2016, 11:51) *
Не взлетит. Защита от чтения сниматся в момент сброса. А после сброса и стирания флеша заставить стартануть выгруженный в ОЗУ код можно только ногами BOOTx. Кстати, это одна из версий на недавно обсуждавшийся вопрос "зачем сделан старт из ОЗУ". Но... одно неловкое движение и имеем кирпич.
Не снимается. Проверено.

Спасибо за ответ, время сэкономил.
Go to the top of the page
 
+Quote Post

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

 


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


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