Цитата(Сергей Борщ @ 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.