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

 
 
> Ещё про бутлоадер
andrewlekar
сообщение May 20 2013, 08:25
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Нужно сделать очередной USB бутлоадер, но с некоторыми особенностями. Имеющиеся в природе бутлоадеры загружают софт с фиксированного адреса и стартуют независимо от основного приложения (по кнопке или перемычке). Мне же хочется, чтобы прямо из USB приложения на ПК можно было перевести устройство в режим бута и тут же безопасно залить свежую прошивку.
У меня созрела вот такая схема бутлоадера:
Загрузка новой прошивки происходит при работающем приложении, а новая прошивка спокойно заливается в свободную область памяти. После загрузки ещё одна область флэша патчится и меняет местами указатель на новую и на старую прошивки. При сбросе проца бут проверяет наличие прошивки по основному адресу и по запасному в случае сбоя. Всё это должно работать при условии позиционно независимого кода прошивки.

Кто-нибудь работал с позиционно независимыми прошивками (IAR мой софт с ходу не смог собрать как позиционно независимый)? Прокомментируйте предложенную схему работы бутлоадера. В обычных бутах не устраивает, что для прошивки приходится что-то дополнительно нажимать на плате и то, что устройство перецепляется к ПК (требует повторного подключения). Для сравнения, в U-Boot этого не требуется.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-SANYCH-
сообщение May 20 2013, 09:56
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



Цитата
USB приложения на ПК можно было перевести устройство в режим бута и тут же безопасно залить свежую прошивку


Цитата
У меня созрела вот такая схема бутлоадера:
Загрузка новой прошивки происходит при работающем приложении, а новая прошивка спокойно заливается в свободную область памяти.


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

Цитата
Кто-нибудь работал с позиционно независимыми прошивками (IAR мой софт с ходу не смог собрать как позиционно независимый)?


Вы хотите скомпилить так программу для контроллера что бы она работала неважно с какого адреса ее залили в контроллер при этом сама прошивка не должна меняться?
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 20 2013, 11:31
Сообщение #3


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

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



Цитата(-SANYCH- @ May 20 2013, 11:56) *
Как то эти два предложения противоречат друг с другом.
Вам нужно либо бут (это маленькая программка которая только умеет загружать основную программу и выполнять минимальные требования) либо вместо бута уже полноценное приложение которое умеет принимать и прошивать новую прошивку.
В случае с бутом как на меня это более хороший вариант так как программка бута маленькая и ее отладить намного проще. После чего она не изменяется а только обновляется основная программа.


Есть еще вариант, на процах с достаточным ОЗУ:
1) бут компилиться для работы в ОЗУ, потом его бинарник подстыковывается любым образом в основную программу как массив данных.
2) в основной программе, при выборе апдейта прошивки - бут перегружается в ОЗУ и ему передается управление.

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

Недостаток вроде только один - сбой питания или передачи данных в процессе записи может привести к полной неработоспособности устройства. Но это можно обойти различными методами (например еще один неизменный супербут).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:01
Рейтинг@Mail.ru


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