|
|
  |
STM32: сброс всей периферии перед переходом из загрузчика в основную прошивку |
|
|
|
May 22 2014, 07:34
|

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

|
Цитата(A. Fig Lee @ May 22 2014, 14:02)  Нет. Есть комманда, по ней делается програмный ресет. То есть все-таки ресет? Цитата(A. Fig Lee @ May 22 2014, 14:02)  Если кнопка не была нажата при ресете, опять уходим в главную программу. Ага, то есть цена вашего велосипеда - необходимо присутствие вблизи устройства homo sapiens, нажимающего на кнопку. И необходимость у устройства иметь эту кнопку (снаружи или внутри, в последнем случае еще и корпус вскрывать надо). Понятно. Цитата(A. Fig Lee @ May 22 2014, 14:02)  Таймаут это фактически "флэшу кирдык", а значит, микросхеме и устройству. Нет смысла обрабатывать такую ситуацию. Везите к нам. Будем разбиратся. Понятно. У меня перепрошивка на лету, таймаут - сбой связи, он обрабатывается, в случае неудачи можно перепрошить снова и ничего никуда возить не надо.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
May 22 2014, 13:06
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Сергей Борщ @ May 22 2014, 06:44)  То есть все-таки ресет? В боотлоадер всегда по ресету, я никогда обратное не утверждал, а в главную программу просто прыжком. Цитата(Сергей Борщ @ May 22 2014, 06:44)  Ага, то есть цена вашего велосипеда - необходимо присутствие вблизи устройства homo sapiens, нажимающего на кнопку. И необходимость у устройства иметь эту кнопку (снаружи или внутри, в последнем случае еще и корпус вскрывать надо). Понятно. Да. Подсоединять то все равно ктото должен к компьютеру. Кстати, сегодня заказали сделать с переходом в бутлоадер по команде. Буду в главной программе писать 0xFE в EEPROM на старте, если там 0xFF. Перед рестартом в бутлоадер сотру на 0xFF. Бутлоадер при 0xFF прыгать не будет. При дисконнекте USB будет прыгать в главную. Но человек там все равно должен быть. Цитата(Сергей Борщ @ May 22 2014, 06:44)  Понятно. У меня перепрошивка на лету, таймаут - сбой связи, он обрабатывается, в случае неудачи можно перепрошить снова и ничего никуда возить не надо. У нас тоже в случае неудачи (удачи тоже) всегда можно перепрошить. Связь по USB, не вижу смысла обрабатывать обрыв связи. Таймаут возможен при плохой микросхеме. Тогда везти придется. Цитата(Allregia @ May 22 2014, 07:11)  Зачем? Достаточно обьявить переменную как __noinit и по абсолютному адресу.
В Ф4 я через backup SRAM передаю. Для перехода из основной программы в бутлоадер и обратно. Ух ты! Класс. Не знал про __no_init. Да, про SRAM бакапную тоже забыл, но аксесс к ней нетривиальный тоже. Так, что мы имеем? STM32 имеет SRAM, то бишь статик RAM. На триггерах, надо понимать. Если погуглить на "sram initial state" то выпадает множество статей на тему "Initial SRAM State as a Fingerprint and Source of True Random Numbers..." из чего можно сделать вывод, что как и следовало ожидать RAM на старте может быть в каком угодно состоянии. На ней rely нельзя. Буду делать через EEPROM.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
May 22 2014, 14:48
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Golikov A. @ May 22 2014, 12:52)  ну можно же не 8 бит, а 32 бита взять, да и положить не FF - FE , а что-то позаковыристей, например название фирмы в 4 32 битных числа положить, что такое будет случайно - настолько маловероятный факт, что если произойдет будет неплохой рекламой фирмы%) Можно. И прошивку поставить куда нибудь в пассажирский самолет. Будет "настолько маловероятный факт", что он грохнется.. "Мы пойдем другим путем" (с)
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
May 22 2014, 14:51
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(A. Fig Lee @ May 22 2014, 21:16)  из чего можно сделать вывод, что как и следовало ожидать RAM на старте может быть в каком угодно состоянии. На ней rely нельзя. Толстый намёк (уже третий раз в этом топике): есть регистр, показывающий причину сброса. Совсем-совсем толсто: если сброс программный, то есть гарантия, что в нужной ячейке ОЗУ не мусор, а то, что нужно. Почему? Потому что программа записала туда то, что нужно перед тем, как вызвать программный сброс. Народ совсем не сообразительный пошёл нынче... Я в печали :-(
|
|
|
|
|
May 22 2014, 16:17
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(scifi @ May 22 2014, 14:01)  Толстый намёк (уже третий раз в этом топике): есть регистр, показывающий причину сброса. Совсем-совсем толсто: если сброс программный, то есть гарантия, что в нужной ячейке ОЗУ не мусор, а то, что нужно. Почему? Потому что программа записала туда то, что нужно перед тем, как вызвать программный сброс. Народ совсем не сообразительный пошёл нынче... Я в печали :-( Да я уже давно ответил: нет смысла ничего писать в РАМ если и так ясно что ресет программный! Цитата(Golikov A. @ May 22 2014, 14:06)  Ну ваще не аргумент,... то есть если вероятность того что 16 символов по 256 позиций на каждый сложились в правильную фразу для человека возможны (вероятность 1.1479437019748901445007192746311e-41), то где гарантия что не пролетит космической частицы, которая изменит именно этот флаг в вашем регистре... это же событие, тогда по вероятности просто каждый день происходит... Правда та же причина не дает реально рассчитывать и на достоверную запись в ЕЕПРОМ, но к своим идеям человек относится менее критически  )) Комиссии попробуйте объяснить, что "скорее всего самолет не грохнется". 2. Это бессмыслица. Если есть програмный ресет, нечего возится с РАМ. Кстати, Су100 не на таком же принципе сделан? Думаю что и ракета с которой спутник грохнулся, была спроектирована аналогично
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
May 22 2014, 19:20
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Golikov A. @ May 22 2014, 16:12)  Как вы победили вероятность сбоя из за попадания космических частиц? Мне просто интересно, если вы настолько скрупулезны, то вы наверняка и это учли... Я вот был в германии в институте, там стоит детектор космических частиц, да их толпы летают, как вы защищаете свои устройства? А что, у РАМ иммунитет к космическим частицам? Везде могут быть проблемы, нет смысла искусственно их увеличивать.
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
May 23 2014, 05:39
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Цитата(Golikov A. @ May 23 2014, 14:15)  сильно опасно, можно сделать кирпич из прибора... Ничего подобного. Кирпич можно сделать только при обновлении загрузчика, если он разрешён. Мой алгоритм действий такой: - если во внешней flash есть валидная прошивка, то сравниваем её с текущей и перешиваем если отличается. Затем запускаем основную прошивку. - если нет новой прошивки, то сразу запускаем основную прошивку.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|