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

 
 
 
Reply to this topicStart new topic
> Перепрошивка контроллера с SD, Порядок действий для прошивки с SD карты...
vkle
сообщение Jan 10 2011, 18:25
Сообщение #1


Участник
*

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



Привет!

Возникла задача реализовать обновление прошивки контроллера LPC2378 с SD карты, а точнее из файла с карточки (т.е. нужна поддержка FAT16).

Я реализовал чтение файла с карточки и могу прочитать его по частям во внутреннюю RAM контроллера (при этом используются прерывания).
Дальше как я понимаю я должен записать эти данные во flash при помощи IAP.

Но тут начинается пока что непонятная для меня каша с переносом таблиц прерываний в RAM и т.д...

Подскажите пожалуйста правильно ли я представляю себе алгоритм "самоперепрошивки" контроллера?

1. Включается контроллер и попадает в стартап, и далее в main().
2. Я инициализирую SD и считываю оттуда версию файла прошивки, если она старая, то передаю управление программе по некоторому адресу ADDR.
3. Если прошивка новая, то я считываю максимально возможный ее кусок в RAM записываю этот кусок во flash по адресу ADDR при помощи IAP.
4. Выполняю п.3 до тех пор пока не считаю и не запишу весь файл в IAP.
5. Передаю управление по адресу ADDR.

Спасибо.
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Jan 10 2011, 18:31
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Очень похоже на правду, но:
1а. Если на SD лежит бекап прошивки, восстанавливаю бекап.
2а. Если прошивка новая, сохраняю бекап старой чтоб потом откатиться если что.
Приложение должно вскоре после удачного запуска прибить бекап.
Так гораздо сложнее остаться с устройством без прошивки вообще. Может быть не слишком актуально, у меня FOTA вместо SD...
Go to the top of the page
 
+Quote Post
Nixon
сообщение Jan 10 2011, 18:42
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



В принципе все верно. Обратите только внимание на правильную генерацию новой прошивки. Там будут нюансы.


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
skripach
сообщение Jan 10 2011, 19:12
Сообщение #4


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



vkle Используйте поиск, всё необходимое для реализации подобных загрузчиков давно есть на форуме.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
vkle
сообщение Jan 10 2011, 20:18
Сообщение #5


Участник
*

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



Цитата
В принципе все верно. Обратите только внимание на правильную генерацию новой прошивки. Там будут нюансы.

А что за нюансы? Можете подсказать где об этом почитать?

Цитата
Используйте поиск, всё необходимое для реализации подобных загрузчиков давно есть на форуме.

Я искал, но не нашел ясного изложения вопроса.

Go to the top of the page
 
+Quote Post
kovigor
сообщение Jan 11 2011, 06:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(vkle @ Jan 11 2011, 00:25) *
Подскажите пожалуйста правильно ли я представляю себе алгоритм "самоперепрошивки" контроллера?


Примерно так. Не забывайте, что:

1. Все ваши функции, участвующие в прошивке Flash, константы и проч. должны вызываться из RAM и размещаться в RAM. В Кейле это настраивается парой нажатий кнопок. Про IAR не скажу ничего.
2. Прерывания на все время прошивки должны быть запрещены. Или же вам придется размещать обработчики прерываний и таблицу векторов в RAM.
3. По окончании прошивки контроллер можно перегрузить автоматически с помощью WDT.

Вот, кажется, и все особенности ...
Go to the top of the page
 
+Quote Post
Wano
сообщение Jan 12 2011, 12:06
Сообщение #7


Местный
***

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



Жизнь станет легче если залить один раз загрузчик в начало флэша. Он займёт там места не более , чем тот же код в основной прошивке.

1)Стартанул загрузчик из флэш - глянул надо ли шить ROM.
2)Если надо то скачиваем сектор(ы) положенного размера (согласно шиту на проц) с SD в RAM и зашиваем.

Плюсы перед тем, чтобы прога шила сама себя:
1)Пользуемся прерываниями на здоровье
2)В случае падения прошивки её можно перезалить ещё раз.
3)Стартовать можем и без WDT

p.s. Данный совет мне дал уважаемы aaarr.
Go to the top of the page
 
+Quote Post

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

 


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


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