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

 
 
9 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Как программно загнать STM32 в бутлоадер?
Salamander
сообщение Mar 7 2015, 17:00
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 466
Регистрация: 17-11-12
Пользователь №: 74 443



На AVR все делалось просто - загрузчик запускался первым и по таймауту отдавал управление основной программе. А в тексте основной программы некая функция слушала USART и по определенной команде перезагружала контроллер.
А как в STM - ну подам я на BOOT0 единичку - ее же нужно держать какое-то время после Reset.
Я хочу прошивать дистанционно - по bluetooth (hс-05)
Go to the top of the page
 
+Quote Post
smalcom
сообщение Mar 7 2015, 17:19
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



программно никак. используйте одновибратор на ножках BOOTx
Go to the top of the page
 
+Quote Post
Porty
сообщение Mar 7 2015, 17:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Цитата(Salamander @ Mar 7 2015, 21:00) *
На AVR все делалось просто - загрузчик запускался первым и по таймауту отдавал управление основной программе. А в тексте основной программы некая функция слушала USART и по определенной команде перезагружала контроллер.
А как в STM - ну подам я на BOOT0 единичку - ее же нужно держать какое-то время после Reset.
Я хочу прошивать дистанционно - по bluetooth (hс-05)

может задержать BOOT0 на RC цепочке?
Go to the top of the page
 
+Quote Post
Salamander
сообщение Mar 7 2015, 17:25
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 466
Регистрация: 17-11-12
Пользователь №: 74 443



Цитата(smalcom @ Mar 7 2015, 20:19) *
программно никак. используйте одновибратор на ножках BOOTx

А какова длительность импульса?
Go to the top of the page
 
+Quote Post
smalcom
сообщение Mar 7 2015, 17:54
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата(Salamander @ Mar 7 2015, 19:25) *
А какова длительность импульса?


Это вам решать, вы же программу пишите. По доке: смотрите сколько необходимо сохранять требуемый уровень на BOOTx после перевода nRESET в неактивное состояние.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 7 2015, 18:08
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Самодельный загрузчик кошернее.
Go to the top of the page
 
+Quote Post
Salamander
сообщение Mar 7 2015, 18:29
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 466
Регистрация: 17-11-12
Пользователь №: 74 443



В доках нашел, что условий запуска загрузчика 6. Вот одно их условий
Цитата
nBoot0(bit) = 0, nBoot1(bit) = 1 and nBoot0_SW(bit) = 0

Так может быть эти биты как-то устанавливаются? И тогда можно программно зайти?



Я уже писал, что хочу использоват bluetooth модуль HC-05.
У него есть пины общего назначения, которые можно включать и выключать AT командой. Эти пины можно подключить и к Boot и к Reset. Но вот как тогда выходить из bootloader...
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 7 2015, 18:50
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Salamander @ Mar 7 2015, 20:00) *
На AVR все делалось просто - загрузчик запускался первым и по таймауту отдавал управление основной программе.


Что мешает то же самое сделать на СТМ?? В авр-же сами писали загрузчик. Не умеете писать загрузчики на стм? Возьмите готовый в аппнотах...



Сообщение отредактировал mantech - Mar 7 2015, 18:53
Go to the top of the page
 
+Quote Post
Salamander
сообщение Mar 7 2015, 18:53
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 466
Регистрация: 17-11-12
Пользователь №: 74 443



Так в AVR не было специального пина, все делалось ручками - пинаешь контроллер по адресу и все. Я усомнился, что так вожно в STM, поскольку у него для этого есть железная ножка. А задав вопрос здесь, услышал "программно никак".
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 7 2015, 18:59
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Salamander @ Mar 7 2015, 21:53) *
Я усомнился, что так вожно в STM, поскольку у него для этого есть железная ножка. А задав вопрос здесь, услышал "программно никак".


Я просто вообще не понимаю, зачем дрыгать какими-то ножками, если все можно сделать программно?? Кто сказал, что "программно никак"?? Всегда делал программно - стартует буллоадер, опрашивает, есть-ли варианты загрузки, если нет, переопределяем контр. прерываний и на адрес основной проги. В основной проге сбрасываем собаку, а если надо рестартануть - не сбрасываем и все!!
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 7 2015, 19:02
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



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

А что вам мешает написать программу, которая будет принимать данные по блютусу, и записывать их во флэш?

Так все и делают, пишут свою программу, которая запускается первой проверяет надо ли - можно ли грузить нормальную программу, и если да передают управление ей, а если нет сидят и ждут когда придется прошивка.
Приходящую прошивку распихивают во флэш память и запускают...

ножка - это не ограничение а доп фишка, используя ее, данные загрузки надо будет слать в специальном формате, ваш блютус с этим справиться?
Go to the top of the page
 
+Quote Post
Salamander
сообщение Mar 7 2015, 19:12
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 466
Регистрация: 17-11-12
Пользователь №: 74 443



Цитата(mantech @ Mar 7 2015, 21:59) *
Я просто вообще не понимаю, зачем дрыгать какими-то ножками, если все можно сделать программно?? Кто сказал, что "программно никак"?? Всегда делал программно - стартует буллоадер, опрашивает, есть-ли варианты загрузки, если нет, переопределяем контр. прерываний и на адрес основной проги. В основной проге сбрасываем собаку, а если надо рестартануть - не сбрасываем и все!!

Где почитать, а то мне в основном какая-то вода попадается.
Как сделать, чтобы бутлодер стартовал без ножки Boot0 ?


Цитата
А что вам мешает написать программу, которая будет принимать данные по блютусу, и записывать их во флэш?

Погодите.... У меня подуль HC-05. Ни компьютер, ни STM32 понятия не имеют, что работают с блютус. Они думают, что работают с USART.
Сегодня когда я озадачился бутлоадером, я не подключая блютус модуль скачал FlashLoader Demonstrator, а к STM32 подключил USB-COM конвертер. ПРошивать не пробовал, но контакт контроллера и компа состоялся. ЗАчем мне писать загрузчик, если он уже есть внутри STM32? ПРоцесс заливки прошивки по блютус я могу организовать хоть сейчас (был бы у меня второй HC-05), но мне не нравится только одно - я не хочу жать на кнопку Boot0.


Цитата
первой проверяет надо ли - можно ли грузить нормальную программу,

А как это понять?
Смотрите, как я хочу сделать - работает STM, принимает команды по USART (через блютус). Выполняет их. Как только получает заранее оговореную последовательнось байт - делает что-то, чтобы запустить bootloader. Перепрошивается и вновь запускает основную программу.

То есть мне нужно проверять условие не при старте, а во время работы и из работающей программы посылать контроллер на перепрошивку. На АВР я 3 года назад как-то так делал...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 7 2015, 19:12
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Ну тогда вам стоит написать бутлоадер хотя бы для того чтобы "не жать на кнопку Boot0."


Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 7 2015, 19:13
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Salamander @ Mar 7 2015, 22:11) *
ЗАчем мне писать загрузчик, если он уже есть внутри STM32

Для расширения кругозора?
Ну или для того, чтобы он снял все ограничения, присущие заводскому загрузчику, и добавил кучу полезных плюшек.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 7 2015, 19:18
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



как вы хотите все уже поняли, и вам сообщили что не зажав ногу бут при ресете никак...


правильно делается так.

Первой стартует программа загрузчик.
Она проверяет
1. наличие флага обновления прошивки
2. целостность прошивки
3. секретный код (если не хотите чтобы левые люди запускали свои прошивки)
если все хорошо, дальше запускается нормальная прошивка... нет ждет обновления прошивки....


Когда вы хотите обновить прошивку из программы, вы ставите флаг обновления и перегружаетесь, после этого запуститься бутлоадер и по 1 условию останется ждать прошивку, а когда обновите прошивку, просто снимаете флаг, и опять перегружаетесь...


все работает по одному сценарию, предсказуемо и надежно. Доп бонусом идет что загрузчик следит сам за тем чтобы ничего в его область не записали, это делает не убиваемый загрузчик.... Можно добавить 4 условие таймаут в загрузчике, если придут данные остается в загрузчике, на случай если будет корректная по всем условиям прошивка не могущая выставить 1 флаг. Ну или кнопку, я кнопку предпочитаю...


Из плюсов что бутлоадер может делать какую-то диагностику, и вести какой-то диалог, хотя бы сможет объяснить что что-то плохо

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:54
Рейтинг@Mail.ru


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