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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Вопрос по WINAVR
yvk
сообщение Nov 1 2007, 14:32
Сообщение #46


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-02-06
Из: Kharkiv
Пользователь №: 14 770



Использую Winavr-20070525. При компиляции бутлоадера на выходе код, в котором сама программа расположена в области бутлоадера, но все инициализация лежит в младших адресах. Каким образом заставить линкер ложить секции .initN в секцию бутлоадера?


--------------------
Не плыви по течению. Не плыви против течения. Плыви туда, куда тебе нужно.
К.Прутков-инженер.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2007, 17:17
Сообщение #47


Гуру
******

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



Цитата(yvk @ Nov 1 2007, 17:32) *
на выходе код, в котором сама программа расположена в области бутлоадера, но все инициализация лежит в младших адресах.
Каким образом вы заставили его положить код в верхние адреса? От этого зависит что посоветовать. Я добавил в опции линкера -Wl,--section-start=.text=0x1800 и все кладется как надо.


--------------------
На любой вопрос даю любой ответ
"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
yvk
сообщение Nov 1 2007, 17:45
Сообщение #48


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-02-06
Из: Kharkiv
Пользователь №: 14 770



Цитата(Сергей Борщ @ Nov 1 2007, 20:17) *
Каким образом вы заставили его положить код в верхние адреса? От этого зависит что посоветовать. Я добавил в опции линкера -Wl,--section-start=.text=0x1800 и все кладется как надо.

именно таким образоми заставил
в авр студио (4.13.528) в Project Option\Memory Settings: Memory type - Flash; Name - .bootloader; Address - 0xf000;
сама прога BOOTLOADER_SECTION uint8_t main (void){...}
если стартовать с нулевого адреса, то все будет работать, но с фьюзом Boot Reset Enabled как минимум не будет инициализации стека

Сообщение отредактировал yvk - Nov 1 2007, 17:50


--------------------
Не плыви по течению. Не плыви против течения. Плыви туда, куда тебе нужно.
К.Прутков-инженер.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2007, 18:11
Сообщение #49


Гуру
******

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



Цитата(yvk @ Nov 1 2007, 20:45) *
в авр студио (4.13.528) в Project Option\Memory Settings: Memory type - Flash; Name - .bootloader; Address - 0xf000;
сама прога BOOTLOADER_SECTION uint8_t main (void){...}
если стартовать с нулевого адреса, то все будет работать, но с фьюзом Boot Reset Enabled как минимум не будет инициализации стека
Выкиньте из проги BOOTLOADER_SECTION, верните настройки Memory Settings как были, а в Project options->Custom Options->Linker options добавьте -Wl,--section-start=.text=0xF000. Не буду утверждать, что это единственно правильное решение, но так работает. Вы же не собираетесь в одном проекте собирать и приложение и загрузчик?
А еще можно скопировать из AVR/LIB/LDSCRIPTS в папку проекта скрипт от вашего процессора, отредактировать в нем размещение (раздел MEMORY в самом начале) и подключить этот скрипт через ключ линкера -Wl,-T,имя скрипта


--------------------
На любой вопрос даю любой ответ
"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
yvk
сообщение Nov 1 2007, 22:11
Сообщение #50


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-02-06
Из: Kharkiv
Пользователь №: 14 770



Спасибо, помогло. Нужно было заменить .bootloader на .text


--------------------
Не плыви по течению. Не плыви против течения. Плыви туда, куда тебе нужно.
К.Прутков-инженер.
Go to the top of the page
 
+Quote Post

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

 


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


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