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

 
 
 
Reply to this topicStart new topic
> Организация USB перепрошивщика...
Gizma
сообщение Aug 24 2009, 16:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 3-09-08
Пользователь №: 39 972



Привет!

Значит нужно реализавать следующую штуку...
Есть некий девайс в который пользователь вставляет флешку, выбирает функцию смены прошивки, девайс находит *.hex в roote и себя перешивает, причем он должен перешиваться полностью, вместе с лодером с помощью которого он перешиваеться (лодер также должен уметь сгружаться с флешки некие параметры для проги...)... это все на LPC2468...

Как я себе это представляю... в начале в память зашит лодер потом прога...

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

Но это все мои измышления, наверняка сея проблема распространена и есть какие либо классические решения...
Может чего присоветуете?

П.С. Как можно програмно переустанавливать точки старта в LPC? Можно ли вообще?
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 24 2009, 16:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Основной принцип - начальный bootloader не перезаписывается никогда! Потому, что в противном случае есть очень большая вероятность получить полностью неработающее устройство.
Если хочется модифицировать загрузчик: дополнить его шифрованием, поддержкой новых каналов/интерфейсов для загрузки и т.п., то с помощью основного bootloader загружается дополнительный bootloader, который и реализует все эти новые фичи.
Go to the top of the page
 
+Quote Post
Gizma
сообщение Aug 24 2009, 17:15
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 3-09-08
Пользователь №: 39 972



Цитата(rezident @ Aug 24 2009, 20:59) *
Основной принцип - начальный bootloader не перезаписывается никогда! Потому, что в противном случае есть очень большая вероятность получить полностью неработающее устройство.
Если хочется модифицировать загрузчик: дополнить его шифрованием, поддержкой новых каналов/интерфейсов для загрузки и т.п., то с помощью основного bootloader загружается дополнительный bootloader, который и реализует все эти новые фичи.


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

Еще один довод, к примеру у меня поддержка только FAT16 в будующем потребуеться что бы работал и с FAT32 и еще несколькимим ФС да и еще просто по USB, пользователю будет не очень удобно прошивать по нескольку раз сначала перешивать лодер лодера*)) потом сам лодер, потом прогу*))


А чем собсна мой вариант плох? всегда есть возможность бэкапа или релода!
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 24 2009, 18:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Gizma @ Aug 24 2009, 23:15) *
А чем собсна мой вариант плох? всегда есть возможность бэкапа или релода!
В том, что вектор сброса - один, а сбой в момент переназначения его являет из себя далеко ненулевую вероятность. Как там в законах Мерфи? "Если вероятность неприятности отлична от нуля, то она обязательно произойдет", как-то так примерно wink.gif
Go to the top of the page
 
+Quote Post
Gizma
сообщение Aug 25 2009, 04:44
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 3-09-08
Пользователь №: 39 972



Цитата(rezident @ Aug 24 2009, 22:39) *
В том, что вектор сброса - один, а сбой в момент переназначения его являет из себя далеко ненулевую вероятность. Как там в законах Мерфи? "Если вероятность неприятности отлична от нуля, то она обязательно произойдет", как-то так примерно wink.gif


Не думаю что этот вектор переписываеться дольше нескольких тактов, соответственно вероятность 1 к X миллионам, при условии что сбой происходит всегда при перепрошивки, однако еще надо учесть вероятность возникновение ситуации для сбоя, и это веротность далеко даже не 1\100!
гораздо больше вероятность что мне попадеться чип с браком, или какой-нить компонент в схеме, помрет раньше срока... что так или иначе приведет к необходимости ремонта...

Сообщение отредактировал Gizma - Aug 25 2009, 05:14
Go to the top of the page
 
+Quote Post
Step_ARM
сообщение Aug 27 2009, 03:50
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



Цитата(Gizma @ Aug 25 2009, 08:44) *
Не думаю что этот вектор переписываеться дольше нескольких тактов, соответственно вероятность 1 к X миллионам, при условии что сбой происходит всегда при перепрошивки, однако еще надо учесть вероятность возникновение ситуации для сбоя, и это веротность далеко даже не 1\100!
гораздо больше вероятность что мне попадеться чип с браком, или какой-нить компонент в схеме, помрет раньше срока... что так или иначе приведет к необходимости ремонта...

Все возможно... Пример такой. У меня загрузчик с SD карты работает. Загружается в память из основной программы, ремап... Программа переписывается. Но если вытащить карту при загрузке или просто контакт плохой или сбой питания, то программа не прописывается и соответственно пропадает возможность вновь запустить загрузчик с карты. Хорошо, что у меня есть Загрузчик через USB и он всегда во флэш.
Go to the top of the page
 
+Quote Post
zksystem
сообщение Aug 27 2009, 14:14
Сообщение #7


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



Цитата(Step_ARM @ Aug 27 2009, 07:50) *
Все возможно... Пример такой. У меня загрузчик с SD карты работает. Загружается в память из основной программы, ремап... Программа переписывается. Но если вытащить карту при загрузке или просто контакт плохой или сбой питания, то программа не прописывается и соответственно пропадает возможность вновь запустить загрузчик с карты. Хорошо, что у меня есть Загрузчик через USB и он всегда во флэш.

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


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 27 2009, 14:56
Сообщение #8





Guests






Цитата
...наверняка сея проблема распространена и есть какие либо классические решения...


Классические решения есть - это загрузка операционных систем в PC с внешнего носителя (диска например).
Всегда имеется аппаратный ("железный") загрузчик, которому передается управление после включения питания и успешной отработки тестов (POST-процедур). На самом деле он, конечно, программный по сути, но находится в BIOS и поэтому всегда изначально присутствует в памяти.
Вся задача аппаратного загрузчика - считать с выбранного носителя начальный загрузчик. Про организацию носителя он ничего не знает (какая там FAT и пр.), просто читает начальную область носителя (512 байт), где должен находится начальный загрузчик, в фиксированную область памяти и передает ей управление. Начальный загрузчик тоже много сделать не может, так как должен укладываться в эти фиксированные 512 байт. Его задача - "вытащить" с диска основной загрузчик и передать ему управление. Вот тот уже может быть любого размера, умеет обращаться со структурой носителя, работать с файловой системой, загружать и выполнять программы и так далее... Вот, примерно так, в первом приближении...
Go to the top of the page
 
+Quote Post
Step_ARM
сообщение Aug 28 2009, 04:19
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



Цитата(zksystem @ Aug 27 2009, 18:14) *
Это сколько памяти надо на такую кучу загрузчиков-загрузчиков, неужели нельзя раз и навсегда отладить и использовать универсальный загрузчик?

Почему куча? Всего два. Просто второй загрузчик находится на карте памяти и не жрет флэш.
А USB загрузчик на флэш , потому что не у всех пользователей есть карта памяти.
Если же их совместить, как Вы говорите, то размер съедаемой флэш несколько возрастает за счет драйвера SPI, ФАТ и необходимости увеличенного вывода на дисплей. Причем прилично. А камень-то не резиновый -- LPC2364.
Конечно, при наличии у всех пользователей карты памяти, можно было сделать и как сказал Арк.
Ну, напрмер, маленький модуль в начале флэш. При старте он загружает с карты памяти загрузчик в ОЗУ, а тот уже все остальное делает.
Еще вариант -- использовать датафлэш и на ней держать основной загрузчик.
Go to the top of the page
 
+Quote Post
InsolentS
сообщение Aug 29 2009, 08:33
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Цитата(Gizma @ Aug 24 2009, 20:52) *
Привет!

Значит нужно реализавать следующую штуку...
Есть некий девайс в который пользователь вставляет флешку, выбирает функцию смены прошивки, девайс находит *.hex в roote и себя перешивает, причем он должен перешиваться полностью, вместе с лодером с помощью которого он перешиваеться (лодер также должен уметь сгружаться с флешки некие параметры для проги...)... это все на LPC2468...

Как всегда, всё уже изобретено до нас http://www.nxp.com/acrobat_download/applic...s/AN10711_2.pdf


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
Step_ARM
сообщение Aug 29 2009, 12:10
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



Цитата(InsolentS @ Aug 29 2009, 12:33) *
Как всегда, всё уже изобретено до нас http://www.nxp.com/acrobat_download/applic...s/AN10711_2.pdf

Вы хоть пробовали читать посты и этот документ?
Go to the top of the page
 
+Quote Post
microsin
сообщение Oct 18 2009, 11:40
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 27-11-08
Пользователь №: 41 999



Цитата(rezident @ Aug 24 2009, 19:59) *
Основной принцип - начальный bootloader не перезаписывается никогда!

Это не всегда так. Bootloader можно восстановить простым ISP-программатором (например для чипа AT90USB162 см. http://microsin.ru/content/view/685/). Кроме того, есть чипы с "неудаляемыми" bootloader-ами, например AT91SAM7X256 (http://microsin.ru/content/view/779/44/). В этом чипе bootloader восстановится автоматически, стоит стереть чип (установка перемычки ERASE на 10 секунд).

Сообщение отредактировал microsin - Oct 18 2009, 11:42
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 18 2009, 15:12
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(microsin @ Oct 18 2009, 15:40) *
Кроме того, есть чипы с "неудаляемыми" bootloader-ами, например AT91SAM7X256 (тут была реклама). В этом чипе bootloader восстановится автоматически, стоит стереть чип (установка перемычки ERASE на 10 секунд).

И эти люди делают нам стартеркиты. Для стирания достаточно 0.25с, если что.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 00:49
Рейтинг@Mail.ru


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