Перейти к содержанию
    

STM32: сброс всей периферии перед переходом из загрузчика в основную прошивку

Нет. Есть комманда, по ней делается програмный ресет.
То есть все-таки ресет?

Если кнопка не была нажата при ресете, опять уходим в главную программу.
Ага, то есть цена вашего велосипеда - необходимо присутствие вблизи устройства homo sapiens, нажимающего на кнопку. И необходимость у устройства иметь эту кнопку (снаружи или внутри, в последнем случае еще и корпус вскрывать надо). Понятно.

Таймаут это фактически "флэшу кирдык", а значит, микросхеме и устройству.

Нет смысла обрабатывать такую ситуацию.

Везите к нам. Будем разбиратся.

Понятно. У меня перепрошивка на лету, таймаут - сбой связи, он обрабатывается, в случае неудачи можно перепрошить снова и ничего никуда возить не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это значит надо писать собственный startup файл.

Тоже можно, конечно.. Но по мне так это уже извращения пошли.

 

Зачем? Достаточно обьявить переменную как __noinit и по абсолютному адресу.

 

В Ф4 я через backup SRAM передаю. Для перехода из основной программы в бутлоадер и обратно.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть все-таки ресет?

В боотлоадер всегда по ресету, я никогда обратное не утверждал, а в главную программу просто прыжком.

 

Ага, то есть цена вашего велосипеда - необходимо присутствие вблизи устройства homo sapiens, нажимающего на кнопку. И необходимость у устройства иметь эту кнопку (снаружи или внутри, в последнем случае еще и корпус вскрывать надо). Понятно.

Да. Подсоединять то все равно ктото должен к компьютеру.

Кстати, сегодня заказали сделать с переходом в бутлоадер по команде.

Буду в главной программе писать 0xFE в EEPROM на старте, если там 0xFF.

Перед рестартом в бутлоадер сотру на 0xFF.

Бутлоадер при 0xFF прыгать не будет.

При дисконнекте USB будет прыгать в главную.

Но человек там все равно должен быть.

 

Понятно. У меня перепрошивка на лету, таймаут - сбой связи, он обрабатывается, в случае неудачи можно перепрошить снова и ничего никуда возить не надо.

У нас тоже в случае неудачи (удачи тоже) всегда можно перепрошить.

Связь по USB, не вижу смысла обрабатывать обрыв связи.

Таймаут возможен при плохой микросхеме.

Тогда везти придется.

 

 

Зачем? Достаточно обьявить переменную как __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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну можно же не 8 бит, а 32 бита взять, да и положить не FF - FE , а что-то позаковыристей, например название фирмы в 4 32 битных числа положить, что такое будет случайно - настолько маловероятный факт, что если произойдет будет неплохой рекламой фирмы%)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну можно же не 8 бит, а 32 бита взять, да и положить не FF - FE , а что-то позаковыристей, например название фирмы в 4 32 битных числа положить, что такое будет случайно - настолько маловероятный факт, что если произойдет будет неплохой рекламой фирмы%)

Можно. И прошивку поставить куда нибудь в пассажирский самолет.

Будет "настолько маловероятный факт", что он грохнется..

 

"Мы пойдем другим путем" (с)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

из чего можно сделать вывод, что как и следовало ожидать RAM на старте может быть в каком угодно состоянии.

На ней rely нельзя.

Толстый намёк (уже третий раз в этом топике): есть регистр, показывающий причину сброса.

Совсем-совсем толсто: если сброс программный, то есть гарантия, что в нужной ячейке ОЗУ не мусор, а то, что нужно. Почему? Потому что программа записала туда то, что нужно перед тем, как вызвать программный сброс.

Народ совсем не сообразительный пошёл нынче... Я в печали :-(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну ваще не аргумент,...

то есть если вероятность того что 16 символов по 256 позиций на каждый сложились в правильную фразу для человека возможны (вероятность 1.1479437019748901445007192746311e-41), то где гарантия что не пролетит космической частицы, которая изменит именно этот флаг в вашем регистре... это же событие, тогда по вероятности просто каждый день происходит...

 

Правда та же причина не дает реально рассчитывать и на достоверную запись в ЕЕПРОМ, но к своим идеям человек относится менее критически:)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Толстый намёк (уже третий раз в этом топике): есть регистр, показывающий причину сброса.

Совсем-совсем толсто: если сброс программный, то есть гарантия, что в нужной ячейке ОЗУ не мусор, а то, что нужно. Почему? Потому что программа записала туда то, что нужно перед тем, как вызвать программный сброс.

Народ совсем не сообразительный пошёл нынче... Я в печали :-(

Да я уже давно ответил: нет смысла ничего писать в РАМ если и так ясно что ресет программный!

 

 

Ну ваще не аргумент,...

то есть если вероятность того что 16 символов по 256 позиций на каждый сложились в правильную фразу для человека возможны (вероятность 1.1479437019748901445007192746311e-41), то где гарантия что не пролетит космической частицы, которая изменит именно этот флаг в вашем регистре... это же событие, тогда по вероятности просто каждый день происходит...

 

Правда та же причина не дает реально рассчитывать и на достоверную запись в ЕЕПРОМ, но к своим идеям человек относится менее критически:)))

Комиссии попробуйте объяснить, что "скорее всего самолет не грохнется".

2. Это бессмыслица. Если есть програмный ресет, нечего возится с РАМ.

 

Кстати, Су100 не на таком же принципе сделан?

Думаю что и ракета с которой спутник грохнулся, была спроектирована аналогично

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как вы победили вероятность сбоя из за попадания космических частиц? Мне просто интересно, если вы настолько скрупулезны, то вы наверняка и это учли... Я вот был в германии в институте, там стоит детектор космических частиц, да их толпы летают, как вы защищаете свои устройства?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как вы победили вероятность сбоя из за попадания космических частиц? Мне просто интересно, если вы настолько скрупулезны, то вы наверняка и это учли... Я вот был в германии в институте, там стоит детектор космических частиц, да их толпы летают, как вы защищаете свои устройства?

А что, у РАМ иммунитет к космическим частицам?

Везде могут быть проблемы, нет смысла искусственно их увеличивать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так это ваша позиция что так жить нельзя, и надо быть защищенным даже от вероятности 10^-14 :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня переход делается если во внешней flash нет новой прошивки. Возможно это сильно сложно. Зато не требует участия человека.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сильно опасно, можно сделать кирпич из прибора...

Ничего подобного. Кирпич можно сделать только при обновлении загрузчика, если он разрешён.

 

Мой алгоритм действий такой:

- если во внешней flash есть валидная прошивка, то сравниваем её с текущей и перешиваем если отличается. Затем запускаем основную прошивку.

- если нет новой прошивки, то сразу запускаем основную прошивку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...