|
Организация USB перепрошивщика... |
|
|
|
Aug 24 2009, 16:52
|
Участник

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

|
Привет!
Значит нужно реализавать следующую штуку... Есть некий девайс в который пользователь вставляет флешку, выбирает функцию смены прошивки, девайс находит *.hex в roote и себя перешивает, причем он должен перешиваться полностью, вместе с лодером с помощью которого он перешиваеться (лодер также должен уметь сгружаться с флешки некие параметры для проги...)... это все на LPC2468...
Как я себе это представляю... в начале в память зашит лодер потом прога...
Как только юзер выбирает смену прошивки, происходит проверка на валидность прошивки, потом лодер копируеться в самый конец памяти и устанавливает старт контроллера на себя, запускаеться оттуда и начинает переписывать прошивку, как только она произведена успешно, лодер устанавливает старт на начало новой прошивки т.е. на новый лодер... в таком раскладе если запись прошивки произошла неудачно, к примеру питание упало, тогда прога стартует со старого лодера и сразу автоматом грузит новую прошивку, если прошивка записалась криво, будет возможность вернуться к стаарому работающему лодеру и повторить прошивку...
Но это все мои измышления, наверняка сея проблема распространена и есть какие либо классические решения... Может чего присоветуете?
П.С. Как можно програмно переустанавливать точки старта в LPC? Можно ли вообще?
|
|
|
|
|
 |
Ответов
|
Aug 24 2009, 17:15
|
Участник

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

|
Цитата(rezident @ Aug 24 2009, 20:59)  Основной принцип - начальный bootloader не перезаписывается никогда! Потому, что в противном случае есть очень большая вероятность получить полностью неработающее устройство. Если хочется модифицировать загрузчик: дополнить его шифрованием, поддержкой новых каналов/интерфейсов для загрузки и т.п., то с помощью основного bootloader загружается дополнительный bootloader, который и реализует все эти новые фичи. В таком случае у меня получаються 2 полностью одинаковых бутлодера просто с разными исполнительными параметрами... Еще один довод, к примеру у меня поддержка только FAT16 в будующем потребуеться что бы работал и с FAT32 и еще несколькимим ФС да и еще просто по USB, пользователю будет не очень удобно прошивать по нескольку раз сначала перешивать лодер лодера*)) потом сам лодер, потом прогу*)) А чем собсна мой вариант плох? всегда есть возможность бэкапа или релода!
|
|
|
|
|
Aug 25 2009, 04:44
|
Участник

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

|
Цитата(rezident @ Aug 24 2009, 22:39)  В том, что вектор сброса - один, а сбой в момент переназначения его являет из себя далеко ненулевую вероятность. Как там в законах Мерфи? "Если вероятность неприятности отлична от нуля, то она обязательно произойдет", как-то так примерно  Не думаю что этот вектор переписываеться дольше нескольких тактов, соответственно вероятность 1 к X миллионам, при условии что сбой происходит всегда при перепрошивки, однако еще надо учесть вероятность возникновение ситуации для сбоя, и это веротность далеко даже не 1\100! гораздо больше вероятность что мне попадеться чип с браком, или какой-нить компонент в схеме, помрет раньше срока... что так или иначе приведет к необходимости ремонта...
Сообщение отредактировал Gizma - Aug 25 2009, 05:14
|
|
|
|
Сообщений в этой теме
Gizma Организация USB перепрошивщика... Aug 24 2009, 16:52    Step_ARM Цитата(Gizma @ Aug 25 2009, 08:44) Не дум... Aug 27 2009, 03:50     zksystem Цитата(Step_ARM @ Aug 27 2009, 07:50) Все... Aug 27 2009, 14:14      Step_ARM Цитата(zksystem @ Aug 27 2009, 18:14) Это... Aug 28 2009, 04:19 microsin Цитата(rezident @ Aug 24 2009, 19:59) Осн... Oct 18 2009, 11:40  aaarrr Цитата(microsin @ Oct 18 2009, 15:40) Кро... Oct 18 2009, 15:12 @Ark Цитата...наверняка сея проблема распространена и е... Aug 27 2009, 14:56 InsolentS Цитата(Gizma @ Aug 24 2009, 20:52) Привет... Aug 29 2009, 08:33 Step_ARM Цитата(InsolentS @ Aug 29 2009, 12:33) Ка... Aug 29 2009, 12:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|