|
Обновление ПО с удаленного сервера., Как правильнее разделить ПО и самописный bootloader |
|
|
|
Dec 18 2013, 20:10
|
Местный
  
Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468

|
Доброго времени суток, армоводы!
Есть железка на Cortex-M0, в которой хотелось бы иметь возможность обновления ПО с фирменного FTP-сервера. Все части загрузчика: скачивание файла в SPI Flash, собственно запись в MCU Flash - готово. Но пока не могу всё это взаимоувязать, чтобы получился надежный загрузчик (чтобы из-за провалов питания и кривых рук персонала - не умирал насовсем).
На msp430 делал следующим образом (обновление по rs485): все обработчики прерывания - были расположены по жестким адресам и обслуживали основное ПО. Сам загрузчик не использовал вообще прерывания - вся обработка была через контроль соответствующих флагов (кроме reset-а). Соответственно как бы чего не происходило - всегда после перевключения стартовал загрузчик и в этот момент его можно было перехватить (нужным пакетом на rs485) и обновить ПО. Если перехвата нет - уходим в основное ПО.
Ровно сделать также на кортексе - не получается: почему-то uart-ы периодически подвисают.
Вообще мне видится несколько решений задачи загрузчика: 1. Сделать работу загрузчика чисто по флагам и оставить прерывания для основного ПО. Хорошо, но пока - не получается. 2. Сделать загрузчик как часть основной программы, но тогда - все вызовы между ними надо будет делать по жестким адресам. Муторно писАть и отлаживать. 3. Сделать работу загрузчика по прерываниям, но внутри сделать ветвление: в функцию загрузчика или в функцию основного ПО. Убиваем скорость реакции. Не айс.
Вопросы, которые хотелось бы прояснить для себя: 1. Какой вариант загрузчика все-таки лучше ? 2. Нет ли каких-то подводных камней при работе с флагами прерывания, но без самих прерываний ? Возможно ли это в принципе на кортексе ?
Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Dec 20 2013, 06:10
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Golikov A. @ Dec 20 2013, 01:18)  надо 2 загрузчика делать 1. примитивный, на 1 путь загрузки данных, не убиваемый никогда и ничем, в который схема валиться во всех критических ситуациях. Вернее она начинает работу всегда с него и если все хорошо уходит дальше. 2. уже с наваротами, изменяемый, и прочее прочее...
правда что-то до 2 никогда не доходил, обычно уже шла рабочая прошивка, так как канала смены от 1 базового загрузчика всегда хватало.... В принципе так и есть. Мне тоже хватало первого, причем загрузчик - это не ахти какая сложная прога, чтоб при тестировании не выявить принципиальные баги...
|
|
|
|
Сообщений в этой теме
Atridies Обновление ПО с удаленного сервера. Dec 18 2013, 20:10 A. Fig Lee А там что,
NVIC_SetVectorTable()
не присутствует?
... Dec 18 2013, 20:37 KRS Цитата(A. Fig Lee @ Dec 19 2013, 00:37) А... Dec 18 2013, 20:58 jcxz Цитата(A. Fig Lee @ Dec 19 2013, 02:37) У... Dec 19 2013, 02:50  A. Fig Lee Цитата(jcxz @ Dec 18 2013, 21:50) При про... Dec 19 2013, 03:08  demiurg_spb Цитата(jcxz @ Dec 19 2013, 06:50) При про... Dec 19 2013, 06:33   scifi Цитата(demiurg_spb @ Dec 19 2013, 10:33) ... Dec 19 2013, 06:49 mantech Цитата(A. Fig Lee @ Dec 19 2013, 00:37) У... Dec 19 2013, 09:22  scifi Цитата(mantech @ Dec 19 2013, 13:22) Можн... Dec 19 2013, 11:05   mempfis_ Цитата(scifi @ Dec 19 2013, 15:05) Не все... Dec 19 2013, 11:51  A. Fig Lee Цитата(mantech @ Dec 19 2013, 04:22) Можн... Dec 19 2013, 11:55   mantech Цитата(A. Fig Lee @ Dec 19 2013, 15:55) В... Dec 19 2013, 16:37 kolobok0 Цитата(Atridies @ Dec 19 2013, 00:10) ..х... Dec 18 2013, 21:14 Atridies Спасибо за ответы!
Проблема несколько модифиц... Jan 4 2014, 23:53 Atridies Проблема решена.
"указатель Reset-а - на 0x0... Jan 6 2014, 21:40 alx125 Цитата(Atridies @ Jan 7 2014, 01:40) Проб... Jan 6 2014, 22:29
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|