|
bootloader |
|
|
|
 |
Ответов
|
Sep 20 2005, 08:45
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037

|
Цитата(VladislavS @ Sep 20 2005, 08:57) prottoss прав, в IAR размещение сегментов в памяти надо ручками в xcl править. В примере с Atmel лежит экселевский скрипт, который это xcl генерит. Но мне кажется лучше это сделать ручками для полного контроля и понимания. Возможно (а скорее точно), ещё надо будет написать свой cstartup (ассемблерный файл который проводит первичную инициализацию и в котором записан переход на начало кода main). Ну и останется придумать протокол для загрузки и правила входа в загрузчик, когда пользовательское приложение уже будет загружено. // я загрузчик кстати писал
|
|
|
|
|
Sep 20 2005, 09:12
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Olegovich @ Sep 20 2005, 16:45) Цитата(VladislavS @ Sep 20 2005, 08:57) prottoss прав, в IAR размещение сегментов в памяти надо ручками в xcl править. В примере с Atmel лежит экселевский скрипт, который это xcl генерит. Но мне кажется лучше это сделать ручками для полного контроля и понимания. Возможно (а скорее точно), ещё надо будет написать свой cstartup (ассемблерный файл который проводит первичную инициализацию и в котором записан переход на начало кода main). Ну и останется придумать протокол для загрузки и правила входа в загрузчик, когда пользовательское приложение уже будет загружено. // я загрузчик кстати писал  Не вижу смысла писать что то еще на ассемблере. Пишем основную программу, начинающуюся с void main(void) или int main(void), кому как угодно. За тем создаем сегмент кода, где будет располагаться бутлоадер. Пишем бутлоадер void main(void) { bootloader(); ......// основная программа } void bootloader(void) { if(условие для начала перепрошивки) { .......// шьем основную память } else { return; } }
--------------------
|
|
|
|
|
Sep 20 2005, 09:52
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037

|
Цитата(prottoss @ Sep 20 2005, 12:12) Цитата(Olegovich @ Sep 20 2005, 16:45) Цитата(VladislavS @ Sep 20 2005, 08:57) prottoss прав, в IAR размещение сегментов в памяти надо ручками в xcl править. В примере с Atmel лежит экселевский скрипт, который это xcl генерит. Но мне кажется лучше это сделать ручками для полного контроля и понимания. Возможно (а скорее точно), ещё надо будет написать свой cstartup (ассемблерный файл который проводит первичную инициализацию и в котором записан переход на начало кода main). Ну и останется придумать протокол для загрузки и правила входа в загрузчик, когда пользовательское приложение уже будет загружено. // я загрузчик кстати писал  Не вижу смысла писать что то еще на ассемблере. Пишем основную программу, начинающуюся с void main(void) или int main(void), кому как угодно. За тем создаем сегмент кода, где будет располагаться бутлоадер. Пишем бутлоадер void main(void) { bootloader(); ......// основная программа } void bootloader(void) { if(условие для начала перепрошивки) { .......// шьем основную память } else { return; } } Так нехорошо. Загрузчик лучше компилить отдельным проектом, он не должен входить в функцию main, т.к. у AVR под загрузчик отводятся верхние области памяти. При таком (up) построении возможно придется перешивать саму область загрузчика, что чревато. имхо, загрузчик и приложение д.б. независимы.
|
|
|
|
Сообщений в этой теме
Nikola Kirov bootloader Sep 19 2005, 17:32 prottoss Цитата(Nikola Kirov @ Sep 20 2005, 01:32)хочу... Sep 19 2005, 18:31 Nikola Kirov Интересно мнение из человека кто писал bootloader ... Sep 19 2005, 20:05 bmf Именно под IAR и есть у Atmel: AVR109 - Self-progr... Sep 19 2005, 21:04    prottoss Цитата(Olegovich @ Sep 20 2005, 17:52)Так нех... Sep 20 2005, 10:03     ObitJr + если они будут разными проектами и еще выставить... Sep 20 2005, 10:33     Olegovich Цитата(prottoss @ Sep 20 2005, 13:03)Мы ведь ... Sep 20 2005, 12:23      prottoss Цитата(Olegovich @ Sep 20 2005, 20:23)Цитата(... Sep 20 2005, 12:40 IEC Вообще то сначала делается загрузчик, а потом чере... Sep 20 2005, 08:40 BVU Посмотрие еще вот это может пригодиться: Sep 20 2005, 12:58 IEC А можно и сегмент CODE указать начиная с F000h нап... Sep 20 2005, 13:03 Rst7 Есть еще одна маленькая тонкость - где лежит библи... Sep 22 2005, 05:14 Nikola Kirov Пороботал над проблема и он оказался более сериозн... Sep 27 2005, 22:26 prottoss Цитата(Nikola Kirov @ Sep 28 2005, 06:26)...П... Sep 27 2005, 23:49 Nikola Kirov prottoss тъй показал мне хорошее решение. Оно наве... Sep 28 2005, 10:51 prottoss Цитата(Nikola Kirov @ Sep 28 2005, 18:51)-Z(C... Sep 28 2005, 11:14 Nikola Kirov Не будет компилироватся а поставляем в област боот... Sep 28 2005, 12:32 prottoss Цитата(Nikola Kirov @ Sep 28 2005, 20:32)Не б... Sep 28 2005, 12:41 ObitJr Сколько писал, но никогда не видел что линкер ... Sep 29 2005, 18:11 Nikola Kirov И как просто оформит bootloader как библиотеку? Вк... Sep 29 2005, 18:39 prottoss Цитата(Nikola Kirov @ Sep 30 2005, 02:39)И ка... Sep 30 2005, 10:52 prottoss 1 Sep 30 2005, 10:54
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|