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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> bootloader
Rst7
сообщение Sep 22 2005, 05:14
Сообщение #16


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Есть еще одна маленькая тонкость - где лежит библиотека.

Разрабатывал я прибор, он в флеше программ хранил архив событий, соответственно код работы с архивом, прерываний, сидел в сегменте BOOT (который был определен в xcl). А библиотеку пришлось xlib'ом пришлось трахнуть: все функции перенести в сегмент LIBCODE (из CODE) и пристегнуть его к бутсектору (в xcl). Сегмент INTVEC - туда же, в бутсектор.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Sep 27 2005, 22:26
Сообщение #17


Местный
***

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



Пороботал над проблема и он оказался более сериознъи.
Значит боттлоадер сделаем. Ето не проблем.
Сделаем в другой проект. Там будем конфигурироват линкера с внешнии xcl файл.
И в примера от Атмел ето так. Потом запрограмируем процесор с проект боотлоадера и установим защиту на област боотлоадера.

Проблем получается потом. А в проекте где боотлоадер будем ползоват нада указат что верхная граница флаша ето начало боотлоадера. Иначе линкер может ползоват област боотлоадера и разположит там кое что. А для ето нада полности написат xcl фаил и конфигурироват линкер из него. Для маленкого проекта как боотлоадер не проблем сконфигурироват все из фаила. Но ето проблем при реалнъи проект. Я вручно так и не смог успешно конфигурироват мой проект.

Ест ли в IAR более простой метод сконфигурироват верхная граница флаш памяти?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 27 2005, 23:49
Сообщение #18


Гуру
******

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



Цитата(Nikola Kirov @ Sep 28 2005, 06:26)
...Проблем получается потом. А в проекте где боотлоадер будем ползоват нада указат что верхная граница флаша ето начало боотлоадера. Иначе линкер может ползоват  област боотлоадера и разположит там кое что...


Проблема решается, что называется, в лоб:

перед функцией int main(void), в области, где, например, определяешь глобальные переменные пишем:

#define BOOT_LOADER_SIZE 0xFF // 256 байт, хотя можно сколь угодно
#pragma location = FLASHEND - BOOT_LOADER_SIZE
__root char __flash boot_loader_code[BOOT_LOADER_SIZE];

макрос FLASHEND определен в заголовочном модуле на примененный в проекте CPU. Например, в фйле для МК ATmega8515 - iom8515.h макрос FLASHEND имеет значение 0x1FFF

Естественно, перед прошивкой, массив boot_loader_code можно удалить. Однако, неоходимо проверять не увеличился ли код, после удаления массива. Размер сгенерированного кода можно увидеть, если в меню Tools->Options, на вкладке Messages в поле Show build messages установить пункт All


--------------------
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Sep 28 2005, 10:51
Сообщение #19


Местный
***

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



prottoss тъй показал мне хорошее решение. Оно навело меня на пут истиннъй.

Для тех кто тепер будут сталкиватся с етого опишу как сделат все.

Сначала делаем проект толко для боотлоадера. Пример из ATMEL достаточно нагляднъй.

Потом из hex фаил с помочи редактора записъиваем в бин файл област боотлоадера.

В проект в которъй нада боотлоадер поставит в опциях линкера добавляем
ето для АТмега16

-Z(CODE)BOOT=1C00-1FFF
--image_input=C:\boot.rnn,Bootloader,BOOT,2
-gBootloader

Первая опция создает сегмент BOOT , нада диапазон указат в соотсветствие с памяти соответного контролера.
Вторая опция load file C:\boot.rnn (ето бинарнъи фаил боотлоадера) в сегмент BOOT и присвоивает ему индентификатор Bootloader.
Третая опция разрешает линкера place Bootloader.

Ето и все.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 28 2005, 11:14
Сообщение #20


Гуру
******

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



Цитата(Nikola Kirov @ Sep 28 2005, 18:51)
-Z(CODE)BOOT=1C00-1FFF
--image_input=C:\boot.rnn,Bootloader,BOOT,2
-gBootloader


Хм... Это получается, что все таки в проекте с основной программой будет компилится код бутлоадера?


--------------------
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Sep 28 2005, 12:32
Сообщение #21


Местный
***

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



Не будет компилироватся а поставляем в област боотфлаша готовъи машиннъи код.
Так является что в изходнъй файл проекта присуствует и боотлоадер и если област боотфлаша не защитена прописъивается и он. Мне кажется что етот вариант удобнъй.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 28 2005, 12:41
Сообщение #22


Гуру
******

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



Цитата(Nikola Kirov @ Sep 28 2005, 20:32)
Не будет компилироватся а поставляем в област боотфлаша готовъи машиннъи код.
Так является что в изходнъй файл проекта присуствует и боотлоадер и если област боотфлаша  не защитена прописъивается и он. Мне кажется что етот вариант удобнъй.
*


Может быть так и на самом деле удобней, на вкус и цвет товарищей нет


--------------------
Go to the top of the page
 
+Quote Post
ObitJr
сообщение Sep 29 2005, 18:11
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 23-07-05
Пользователь №: 7 043



Сколько писал, но никогда не видел что линкер "случайно" положит "что-нить" в верхние адреса...
А по идее вставки кода бутлоадера - какой собственно в этом толк и зачем тогда вообще использовать эту возможность - пишите стандартную либу, включаете в каждый проект и первой строкой вызывайте его тело...
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Sep 29 2005, 18:39
Сообщение #24


Местный
***

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



И как просто оформит bootloader как библиотеку? Включения боотлоадера в проект приводит к необходимости конфигурироват все опции проекта из xlc фаила а ето неудобно и сложно.
Я вообще не понимаю почему IAR не сделали работа с боотлоадера боолее удобной. И в документации вообще молчат по етой теме.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 30 2005, 10:52
Сообщение #25


Гуру
******

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



Цитата(Nikola Kirov @ Sep 30 2005, 02:39)
И как просто оформит bootloader как библиотеку? Включения боотлоадера в проект приводит к необходимости  конфигурироват все опции проекта из xlc фаила а ето неудобно и сложно.
Я вообще не понимаю почему IAR не сделали работа с боотлоадера боолее удобной. И в документации вообще молчат по етой теме.
*


Вам же еще в самом начале топика говорли, что вообще не зачем бутлоадер включать в проект. В этом ПРИНЦИПИАЛЬНО нет необходимости. Бутлоадер сидит в микросхеме. Вы пишете новый проект, или, что более естественно, обновляете старый. Компилируете его. Естественно у вас есть программа для РС, не ажно для какой операционной системы, которая знает как общатся с Вашим бутлоадером. Эта программа Ваш новый код передает бутлоадеру, который, в свою очередь, записывает этот код поверх старого, то есть обновляет действующее ПО микроконтроллера.
И, по моему даже незачем парится со вставкой разных массивов (что я предлагал выше) и кода бутлоадера. Сам себя бутлоадер преписать не сможет - его область защищена от записи. Вам же достаточно только произвести контроль объема кода, что легко выполняется в ИАРе.
Зачем создавать себе много проблем из пустого места.
А обновить бутлоадер можно имея под рукой любой доступный программатор АВРов, который скорее всего у Вас есть, раз Вы общаетесь в этом разделе форума.
Так что совет Вам, не парьтесь, а пишите спокойно новые программы или обновляйте старые через бутлоадер.
Удачи.


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 30 2005, 10:54
Сообщение #26


Гуру
******

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



1


--------------------
Go to the top of the page
 
+Quote Post

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

 


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


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