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

 
 
> bootloader
Nikola Kirov
сообщение Sep 19 2005, 17:32
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



хочу написат свой bootloader для ATmega но не поннял из документации как написат его в IAR.
1. Как указат IAR-а какой обем Boot Memory?
2. Как указат что соответсвущие функции принадлежат bootloadera?
3. Как из своеи програме въизват bootloadera?

или написания bootloader -a под IAR совершенно по другому делается?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VladislavS
сообщение Sep 20 2005, 05:57
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



prottoss прав, в IAR размещение сегментов в памяти надо ручками в xcl править. В примере с Atmel лежит экселевский скрипт, который это xcl генерит.
Но мне кажется лучше это сделать ручками для полного контроля и понимания.
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Sep 20 2005, 08:45
Сообщение #3


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(VladislavS @ Sep 20 2005, 08:57)
prottoss прав, в IAR размещение сегментов в памяти надо ручками в xcl править. В примере с Atmel лежит экселевский скрипт, который это xcl генерит.
Но мне кажется лучше это сделать ручками для полного контроля и понимания.
*


Возможно (а скорее точно), ещё надо будет написать свой cstartup (ассемблерный файл который проводит первичную инициализацию и в котором записан переход на начало кода main).
Ну и останется придумать протокол для загрузки и правила входа в загрузчик, когда пользовательское приложение уже будет загружено. // я загрузчик кстати писал smile.gif
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 20 2005, 09:12
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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).
Ну и останется придумать протокол для загрузки и правила входа в загрузчик, когда пользовательское приложение уже будет загружено. // я загрузчик кстати писал smile.gif
*



Не вижу смысла писать что то еще на ассемблере.
Пишем основную программу, начинающуюся с void main(void) или int main(void), кому как угодно.
За тем создаем сегмент кода, где будет располагаться бутлоадер. Пишем бутлоадер

void main(void)
{ bootloader();

......// основная программа
}


void bootloader(void)
{ if(условие для начала перепрошивки)
{ .......// шьем основную память
}
else
{ return;
}
}


--------------------
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Sep 20 2005, 09:52
Сообщение #5


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

Группа: Свой
Сообщений: 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).
Ну и останется придумать протокол для загрузки и правила входа в загрузчик, когда пользовательское приложение уже будет загружено. // я загрузчик кстати писал smile.gif
*



Не вижу смысла писать что то еще на ассемблере.
Пишем основную программу, начинающуюся с void main(void) или int main(void), кому как угодно.
За тем создаем сегмент кода, где будет располагаться бутлоадер. Пишем бутлоадер

void main(void)
{ bootloader();

......// основная программа
}


void bootloader(void)
{ if(условие для начала перепрошивки)
{ .......// шьем основную память
}
else
{ return;
}
}
*



Так нехорошо. Загрузчик лучше компилить отдельным проектом, он не должен входить в функцию main, т.к. у AVR под загрузчик отводятся верхние области памяти. При таком (up) построении возможно придется перешивать саму область загрузчика, что чревато.
имхо, загрузчик и приложение д.б. независимы.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 20 2005, 10:03
Сообщение #6


Гуру
******

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



Цитата(Olegovich @ Sep 20 2005, 17:52)
Так нехорошо. Загрузчик лучше компилить отдельным проектом, он не должен входить в функцию main, т.к. у AVR под загрузчик отводятся верхние области памяти. При таком (up) построении возможно придется перешивать саму область загрузчика, что чревато.
имхо, загрузчик и приложение д.б. независимы.
*


Мы ведь говорили выше, что загрузчик располагается по адресам, ранее определенным отдельным сегментом в xcl-файле. Т.е при получении прошивки после компиляции функция загрузчика будет располагаться по нужным нам адресам, т.е. по верхним адресам. Таким образом это возможно. Но на счет того, что загрузчик лучше компилить отдельным проектом я с Вами согласен полностью.


--------------------
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Sep 20 2005, 12:23
Сообщение #7


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(prottoss @ Sep 20 2005, 13:03)
Мы ведь говорили выше, что загрузчик располагается по адресам, ранее определенным отдельным сегментом в xcl-файле. Т.е при получении прошивки после компиляции функция загрузчика будет располагаться по нужным нам адресам, т.е. по верхним адресам.
*


Тогда придется перед написанием каждой функции указывать, в каком сегменте ей находиться, это не очень удобно и гибко smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - ObitJr   + если они будут разными проектами и еще выставить...   Sep 20 2005, 10:33
|- - 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


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

 


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


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