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

 
 
> BootLoader, Newbee наступает с вопросами!
Злодей
сообщение Feb 11 2009, 16:12
Сообщение #1


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

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



Здравствуйте, ребята!

Написал бутлоадер, написал пользовательскую программу. Оба в WinAVR. Есть в результате два .elf (ну или просто два сишника с main), теперь надо их соединить, да ещё так, чтоб бутлоадер попадал в "Boot Loader Flash Section".
Направьте меня, в какую сторону копать. Есть ли что-то в MakeFile's, что должно быть подправлено?

Ещё есть несколько конкретных впросов:

В даташите на мегу уделено много внимания "Read-While-Write Section" и "No Read-While-Write Section", я не очень с ними разобрался, вообще это важно?

Я сомниваюсь при выборе алгоритма обновления прошивки, сейчас в голове такая картина:
1. Пользовательская программа, решив обновиться, произносит заклинание asm{ jmp $3F00 }, где - $3F00 - Boot Loader Flash Section. (хоть это я правильно понял? Начнёт работать бутлоадер?)
2. Бутлоадер обновляет флэш и делает asm{ jmp $02A }, запуская тем самым пользовательскую программу (или она не там?)
Но почему-то хочется сделать всё через перезагрузку, вроде:
1. пользовательская программа ставит в EEPROM флаг "обновиться" и перезагружает МК
2. бутлоадер видит флаг, обновляет, снимает флаг, перезагружает МК
3. бутлоадер видит - флага нет, и запускает пользовательскую программу.
Но есть ли в этом смысл, и будет ли разница между была перезагрузка - не было?

Помогите, пожалуйста, у меня очень большое желание сделать красиво :)

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Feb 11 2009, 20:51
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Злодей @ Feb 11 2009, 18:12) *
да ещё так, чтоб бутлоадер попадал в "Boot Loader Flash Section".
Делайте загрузчик отдельным приложением. При линковке задайте параметр -Wl,-section-start=.text=адрес, где адрес - начало области загрузчика (в байтах!)
Цитата(Злодей @ Feb 11 2009, 18:12) *
Бутлоадер обновляет флэш и делает asm{ jmp $02A }, запуская тем самым пользовательскую программу (или она не там?)
Вектор сброса находится по адресу 0. Вот туда и передавайте управление. Не забывайте перед этим вернуть периферию в исходное состояние, а в приложении явно проинициализировать всю использованную периферию.
Цитата(Злодей @ Feb 11 2009, 18:12) *
Но почему-то хочется сделать всё через перезагрузку, вроде:
Я использую одну из ножек, при нормальной работе настроенную на вывод. Если загрузчик видит ее настроенной на ввод - было включение питания, работа штатная. Если при этом нога притянута снаружи не туда, куда ее тянет внешняя подтяжка - это сигнал принудительной перепрошивки. Если нога притянута куда надо - проверка приложения и если все хорошо - его запуск. Если нога настроена на вывод - значит приложение передало управление загрузчику и надо сразу идти на перепрошивку.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Feb 12 2009, 08:20
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(Сергей Борщ @ Feb 11 2009, 21:51) *
Не забывайте перед этим вернуть периферию в исходное состояние, а в приложении явно проинициализировать всю использованную периферию

Ух, как сложно и ненадежно. Переход в приложение должен быть выполнен практически сразу после входа в загрузчик (после сброса), тогда голова об инициализации болеть не будет. А сброс, конечно же, выполняется по собаке.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Злодей   BootLoader   Feb 11 2009, 16:12
- - Dog Pawlowa   Цитата(Злодей @ Feb 11 2009, 19:12) 1. По...   Feb 11 2009, 16:21
|- - Злодей   Спасибо большое, значит поставлю фьюз, чтоб первым...   Feb 11 2009, 16:28
|- - defunct   Цитата(Огурцов @ Feb 12 2009, 10:20) Ух, ...   Feb 13 2009, 01:27
|- - Огурцов   Цитата(defunct @ Feb 13 2009, 01:27) Запу...   Feb 13 2009, 05:42
|- - Сергей Борщ   Цитата(Огурцов @ Feb 13 2009, 07:42) Я эт...   Feb 13 2009, 07:00
|- - Dog Pawlowa   Цитата(Сергей Борщ @ Feb 13 2009, 10:00) ...   Feb 13 2009, 07:26
|- - Злодей   Цитата(Сергей Борщ @ Feb 13 2009, 10:00) ...   Feb 13 2009, 09:53
||- - defunct   Цитата(Злодей @ Feb 13 2009, 11:53) Так в...   Feb 13 2009, 10:10
||- - Dog Pawlowa   Цитата(defunct @ Feb 13 2009, 14:10) Я со...   Feb 13 2009, 10:50
|- - Огурцов   Цитата(Сергей Борщ @ Feb 13 2009, 07:00) ...   Feb 13 2009, 19:46
|- - defunct   Цитата(Огурцов @ Feb 13 2009, 21:46) Есть...   Feb 14 2009, 00:13
|- - smac   Цитата(defunct @ Feb 14 2009, 03:13) Резе...   Feb 14 2009, 06:56
|- - Огурцов   Цитата(defunct @ Feb 14 2009, 00:13) - Ес...   Feb 14 2009, 10:17
|- - defunct   Цитата(Огурцов @ Feb 14 2009, 12:17) Очен...   Feb 14 2009, 20:57
|- - Огурцов   Цитата(defunct @ Feb 14 2009, 21:57) Еще ...   Feb 14 2009, 21:43
|- - defunct   Цитата(Огурцов @ Feb 14 2009, 23:43) И эт...   Feb 14 2009, 22:42
|- - Огурцов   Цитата(defunct @ Feb 14 2009, 23:42) Непр...   Feb 14 2009, 23:03
|- - defunct   Цитата(Огурцов @ Feb 15 2009, 01:03) Разб...   Feb 14 2009, 23:16
|- - Огурцов   Цитата(defunct @ Feb 15 2009, 00:16) AVR1...   Feb 15 2009, 00:02
|- - defunct   Цитата(Огурцов @ Feb 15 2009, 02:02) Вот ...   Feb 15 2009, 01:27
|- - Огурцов   Цитата(defunct @ Feb 15 2009, 02:27) Да н...   Feb 15 2009, 02:01
|- - defunct   Цитата(Огурцов @ Feb 15 2009, 04:01) Аха,...   Feb 15 2009, 02:11
|- - Огурцов   Цитата(defunct @ Feb 15 2009, 03:11) Меша...   Feb 15 2009, 02:25
- - Злодей   Спасибо за советы, я скопирую сюда уже тысячу раз ...   Feb 13 2009, 06:16
- - defunct   Цитататак я ж сказал, как сделать правильно С этим...   Feb 15 2009, 02:31
- - Огурцов   Цитата(defunct @ Feb 15 2009, 03:31) С эт...   Feb 15 2009, 02:51


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

 


RSS Текстовая версия Сейчас: 26th August 2025 - 09:08
Рейтинг@Mail.ru


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