|
|
  |
stm32F10x- защита от чтения , использование flash как eeprom и собственный бутлоадер, нюансы реализации. |
|
|
|
Apr 19 2013, 15:51
|

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

|
QUOTE (k000858 @ Apr 19 2013, 17:34)  загрузчик у меня уже написан, все работает, прошивку принимает по TFTP, вопросы остались только по битам защиты и криптованию ... по TFTP я не подписался, из-за отсутствия проверок, низкой надежности. Он же совсем маленький, ну ...для AVR может и подойдет, ресурсов мало, но не для ARM. QUOTE (PoReX @ Apr 19 2013, 17:43)  Например, у нас для таких целей будет сервер, висящий в интернете, т.к. устройства могут находиться даже в другой стране. Получается если bootloader узрел в прошивке неладное, то конектится к серверу и тянет нужную прошивку.
Что у вас за стеки такие? У меня bootloader с uip стеком весит 17кБ и при этом умеет отзываться по UDP, перепрошиваться по TCP, получать IP по DHCP и получать IP сервера по его имени от DNS. У вас могут быть проблемы. 1) Нужен всё время сервер, накладно. 2) Из-за проблем в инете ваше устройство может некоторое или все время находиться в режиме bootloader_а. 3) В это время оно не будет функционировать. А вот моё выкачивает абдейт, не прекращая работу, и перешивается за короткое время, еще использую внешнюю память, LwIP, поскольку еще и WEB сервер нужен. QUOTE (Serj78 @ Apr 19 2013, 18:04)  Я усматриваю тут "подводный камень" 1. Если мы не завершили программирование и загрузчик еще не установил бит защиты от чтения - и сняли питание- программа у нас почти зашита, а бит защиты от чтения- нет. Нет, по другому, почитайте внимательнее об этой процедуре в Datasheet. Вами писаный загрузчик под коде-протектом все время. Коде-протект можно стереть вместе со всей программой только. Запись во внутреннюю флешь происходит из вашего загрузчика. Защита от записи/чтения во флешь это другая отдельная процедура, с коде-протектом не связана! QUOTE (Serj78 @ Apr 19 2013, 18:04)  2. встроенным загрузчиком кажется, можно стирать память постранично- это работает в случае установленного бита защиты от чтения?
записать какой либо кусок встроенным загрузчиком после записи бита защиты от чтения, получается, нельзя- это потенциальные ворота для ввоза троянского коня.. можно записать во флешь при коде-протектнутом чипе, если программа загрузчика позволяет. Но может и запретить, через определенное время, если кому то это нужно.
|
|
|
|
|
Apr 20 2013, 10:59
|

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

|
QUOTE (Allregia @ Apr 20 2013, 13:12)  Народ, сорри за дурацкий вопрос - а чем вы далете исходный файлдля загрузчика (Перед криптованием)? Криптующая программа кушает прямо hex. QUOTE (Allregia @ Apr 20 2013, 13:12)  Я всегда пользовался hex2bin.exe, но на хексы от Кейла для стм32ф4 он ругается. Может он у меня посто старый (95г)? Возможно проблема в том, что программа расположена с адреса 0x0800xxxx и утилите не хватает памяти? Страшно даже представить размер .bin из такого .hex
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 20 2013, 19:01
|
Частый гость
 
Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518

|
Цитата(Aner @ Apr 19 2013, 19:51)  У вас могут быть проблемы. 1) Нужен всё время сервер, накладно. 2) Из-за проблем в инете ваше устройство может некоторое или все время находиться в режиме bootloader_а. 3) В это время оно не будет функционировать. А вот моё выкачивает абдейт, не прекращая работу, и перешивается за короткое время, еще использую внешнюю память, LwIP, поскольку еще и WEB сервер нужен. 1) Сервер есть всегда, т.к. он выполняет не только функцию обновления прошивок. Как у вас происходит удаленная перепрошивка? Сервера нет? 2) Да, есть такой минус. Поэтому в следующей версии запланирована возможность загрузки прошивки основной программой. А теперь представьте, что вы выкачали новую прошивку, перепрошились и в ней оказался баг, из-за которого невозможно обновлять прошивки. Что делать в такой ситуации, если, на сколько я понял, ваш boot loader не умеет обновляться по интернету/ethernet'у. Цитата(Allregia @ Apr 20 2013, 14:12)  Народ, сорри за дурацкий вопрос - а чем вы далете исходный файлдля загрузчика (Перед криптованием)? Я всегда пользовался hex2bin.exe, но на хексы от Кейла для стм32ф4 он ругается. Может он у меня посто старый (95г)? Для создания бинарников использую стандартную кейловскую утилиту - fromelf.
--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
|
|
|
|
|
Apr 20 2013, 21:58
|

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

|
QUOTE (PoReX @ Apr 20 2013, 22:01)  1) Сервер есть всегда, т.к. он выполняет не только функцию обновления прошивок. Как у вас происходит удаленная перепрошивка? Сервера нет? Я же писал, поддержен WEB и по HTTP, абдейт в ручном и автоматическом режиме. В проекте не было необходимости программе следить за абдейтами на сервере в непрерывном режиме. Всё же инет не столь надежная штуковина. QUOTE (PoReX @ Apr 20 2013, 22:01)  2) Да, есть такой минус. Поэтому в следующей версии запланирована возможность загрузки прошивки основной программой. А теперь представьте, что вы выкачали новую прошивку, перепрошились и в ней оказался баг, из-за которого невозможно обновлять прошивки. Что делать в такой ситуации, если, на сколько я понял, ваш boot loader не умеет обновляться по интернету/ethernet'у. Если сами пишите софт на C/C++ для ARM, то какую то нереальную представлялку пишите. Допустить такой баг можно в начале пути или по неопытности. Но есть тестовые устройства на которых делается прогон, контроль новой прошивки. Только затем абдейт. Обычно в новой добавляется какой либо функционал не влияющий на режим перехода в загрузчик. Мои загрузчики умеют по UDP, TCP/IP, HTTP еще может и по USB, RS, CAN, I2C. Много было разных проектов с собственными загрузчиками на STM32Fxx у всех свои особенности.
|
|
|
|
|
Apr 21 2013, 12:15
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(kolobok0 @ Apr 18 2013, 19:19)  о как. а более подробно не осветите аспект? А тут и освещать-то нечего. Прислали платку с производства уже зашитую и залоченную. Я с ней пык-мык - не шьётся... Но стирается и чип прекрасно виден jlink'ом. При этом в среде keil нет никаких возможностей для снятия лока. Почитал доку на jlink - и всё решилось за 1 сек при помощи утилиты j-flash.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|