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

 
 
> Вопросы по реализации бутлоадера, at91sam7s64, IAR5.41
mempfis_
сообщение Jul 29 2010, 08:28
Сообщение #1


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Всем добрый день.
Стоит задача написать бутлоадер для at91sam7s64.
Есть несколько ламерских вопросов по этому поводу.

1. Правильно ли я понимаю что для ARM бутлоадер это обычная программа (в отличии от AVR) которая может начинаться с какого угодно адреса?
2. Чтобы иметь возможность прошить flash собственно подпрограммы прошивки flash должны находится в оперативной памяти?
3. Если п.1 верный то где во flash лучше располагать бутлоадер (в начале или в конце)?
4. Как быть со стартапом приложения? Если я в бутлоадере инициализирую стеки, тактовый генератор и т.д. то можно ли исключить стартап из приложения и просто вызвать main? Или лучше произвести сброс переферии и вызвать приложение со стартапом?
5. Достаточно ли будет выделить в flash сегмент и размещать в нём основную программу или в startup и LowLevelInit() нужно будет както дополнительно учитывать что в МК живёт ещё и бутлоадер?

Теперь мои соображения по поводу бутлоадера - поправте если гдето буду не прав:
- Проект бутлоадера - обычная программа - т.е. создаю в IAR5.41 проект, подключаю стартап и LowLevelInint() в которых инициализируются стеки, тактовый генератор, VIC и т.д.
- В main бутлоадера настраиваю всю необходимую мне переферию (PIT, PIO, USB и т.д.).
- Перехожу в основной цикл прораммы в котором ожидаю команды с usb-терминала.
- Если приходит команда прошивки flash - прошиваю нужную страницу памяти в секции приложения.
- Если приходит команда запуска приложения - вызываю main приложения (это если можно не вставлять startup и LowLevelInit()) или прыгаю на адрес с которого начинается основная программа.

Спасибо всем кто ответит.

P.S. Также буду благодарен ссылкам на какие-либо проекты бутлоадеров для sam7s.
P.P.S. С сайта atmel скачал какойто проект но он для ARM9 и довольно запутанный и непонятный...

Сообщение отредактировал mempfis_ - Jul 29 2010, 08:31
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TU-104
сообщение Feb 19 2014, 11:57
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 10-12-08
Пользователь №: 42 354



Цитата(mempfis_ @ Aug 16 2010, 19:44) *
Сегодня всё проверил - приложение вызванное из загрузчика запустилось и работает как положено sm.gif
Спасибо за помощь sm.gif

КАК у вас это получилось?! Вы даже про вектора не спрашивали в этой ветке. Или у вас основное приложение работает без прерываний?

Цитата(mempfis_ @ Jul 29 2010, 15:31) *
Вот тут мне не всё понятно но спрашивать буду когда дойдёт до этого дело.

А можно мне спросить, что нужно сделать с этими векторами?
У меня похожий контроллер, AT91SAM7X256:
ROM: 0x00100000-0x0013FFFF, RAM : 0x00200000-0x0020FFFF
После старта, на нулевой адрес отображается флэш.
После ремапа с нулевого адреса видна ОЗУ.

К примеру, беру 2 одинаковых проекта (под IAR 6) работающих "мигалок". Оба со своими стартапами (которые мне пока вообще не понять)
1й будет бутлоадером, будет лежать в начале флеш.
В нем пишу так:
Код
    
#define PROG_JUMP_ADDRESS    (0x00110000)
  //запрет всех прерываний
AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;
//запуск основной программы(выход из bootloader)
work_start_address = (void(*)(void))PROG_JUMP_ADDRESS;
work_start_address();

В нем же, в этом тестовом примере в low_level_init сделан ремап RAM.
_________________________________

Беру 2й проект, ставлю в Linker-> Options:
Код
define symbol __ICFEDIT_intvec_start__ = 0x00110000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x00110000;

Загружаю стандартной самбой 1й бинарник с адреса 100000, второй с адреса 110000. Дергаю питание.
Запускается 1я мигалка, прыгает на 0х110000, запускается вторая мигалка(рабочая). Вижу отладочный текст в консоли, все ОК. Но рабочая программа доходит видимо до первого прерывания и виснет.

Что нужно сделать еще?
Заранее спасибо за ответы.



Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mempfis_   Вопросы по реализации бутлоадера   Jul 29 2010, 08:28
- - aaarrr   Цитата(mempfis_ @ Jul 29 2010, 12:28) 1. ...   Jul 29 2010, 08:40
|- - mempfis_   Спасибо за быстрый ответ. В целом начинает проясня...   Jul 29 2010, 08:53
|- - aaarrr   Цитата(mempfis_ @ Jul 29 2010, 12:53) Обо...   Jul 29 2010, 09:23
|- - mempfis_   ЦитатаПомимо стеков есть еще копирование секций, и...   Jul 29 2010, 09:31
|- - mempfis_   Дошёл до того момента когда бутлоадер вот-вот уже ...   Aug 12 2010, 08:04
|- - aaarrr   Цитата(mempfis_ @ Aug 12 2010, 12:04) Дос...   Aug 12 2010, 12:15
|- - mempfis_   Цитата(aaarrr @ Aug 12 2010, 15:15) На пе...   Aug 16 2010, 13:44
- - dimka76   Цитата(mempfis_ @ Jul 29 2010, 12:28) P.S...   Jul 29 2010, 08:57
|- - mempfis_   Цитата(dimka76 @ Jul 29 2010, 11:57) http...   Jul 29 2010, 08:59
- - sergeeff   Ну и если вы задумаете еще и на С++ постепенно пер...   Jul 29 2010, 11:13
- - Exeland   Я тоже занят написанием загрузчика. А как заставит...   Aug 16 2010, 10:18
|- - aaarrr   Цитата(Exeland @ Aug 16 2010, 14:18) Я то...   Aug 16 2010, 10:24
- - Exeland   Я с линкером не работал. Можете дать кусочек кода ...   Aug 16 2010, 10:27
|- - aaarrr   Цитата(Exeland @ Aug 16 2010, 14:27) Я с ...   Aug 16 2010, 11:10
|- - Wano   Цитата(Exeland @ Aug 16 2010, 13:27) Я с ...   Aug 16 2010, 15:06
- - Exeland   Поменял в Target Diolog адреса, грузится если pc=S...   Aug 17 2010, 06:16
|- - Wano   Цитата(Exeland @ Aug 17 2010, 09:16) Поме...   Aug 17 2010, 08:18
- - Exeland   Хотя нет все работает. Прыжок на ПО делаю так, е...   Aug 17 2010, 07:36
- - Exeland   Еще один вопрос. Необходимо разместить константы (...   Aug 17 2010, 09:42
|- - aaarrr   Цитата(Exeland @ Aug 17 2010, 13:42) Как ...   Aug 17 2010, 10:26
|- - Exeland   Цитата(aaarrr @ Aug 17 2010, 14:26) Можно...   Aug 19 2010, 05:41
|- - Wano   Цитата(Exeland @ Aug 19 2010, 08:41) Не м...   Aug 20 2010, 09:30
- - skripach   Цитата3. Не делать фиксированную область, а создат...   Aug 17 2010, 12:50
- - aaarrr   Думаю, восьми байт как раз достаточно. Если ...   Aug 17 2010, 12:57
- - skripach   ЦитатаЕсли "потолком" служил генератор п...   Aug 17 2010, 13:32
- - TU-104   Добавил копирование первых 64 байт прошивки в нача...   Feb 20 2014, 04:39
- - ar__systems   Я расскажу как я делал. (1788) И приложение, и пр...   Feb 20 2014, 22:07
|- - toweroff   Цитата(ar__systems @ Feb 21 2014, 02:07) ...   Feb 20 2014, 22:10
|- - ar__systems   Цитата(toweroff @ Feb 20 2014, 17:10) а з...   Feb 21 2014, 01:06
|- - toweroff   Цитата(ar__systems @ Feb 21 2014, 05:06) ...   Feb 21 2014, 07:36
|- - ar__systems   так прерывания выключил, и все ок   Feb 21 2014, 17:03
|- - toweroff   Цитата(ar__systems @ Feb 21 2014, 21:03) ...   Feb 21 2014, 22:12
- - TU-104   Цитата(ar__systems @ Feb 21 2014, 04:07) ...   Feb 21 2014, 05:07
- - RabidRabbit   Как было сделано у меня (AT91SAM7S32): бутлоадер (...   Feb 21 2014, 06:25
- - TU-104   а все-таки подскажите, как запустить приложение с ...   Feb 23 2014, 17:39


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

 


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


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