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

 
 
> Как разместить bootloader по определённому адресу?
juvf
сообщение Dec 9 2009, 11:51
Сообщение #1


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



прескртптум: AVR Studio 4.17, WinAvr, C++, avr-c++

Есть функция-загрузчик. Её нужно поместить по адресу 0xf000. В мануале на avr-c++ написано как это сделать

Цитата
void boot(void) __attribute__ ((section (".bootloader")));
To relocate the section to a fixed address the linker flag -section-start is used.
This option can be passed to the linker using the -Wl compiler option:
-Wl,--section-start=.bootloader=0x1E000

Но как это сделать в AVR Studio? если не указывать -Wl,--section-start=.bootloader=0xF000, то при линковке получаю ошибку
Код
c:/soft/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: section .bootloader [000072ea -> 0000742f] overlaps section .data [000072ea -> 0000744f]


Пробовал переразместить секцию bootlooader в свойствах проекта на вкладке Costom options добавил опцию -Wl,--section-start=.bootloader=0xF000
но при линковке опять таже ошибка. Пробовал создать свою секцию и загрузчик разместить в неё - в результате при линковке таже ошибка.

Как в AVR Studio разместить функцию по нужному адресу? Как задать адрес секции?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
juvf
сообщение Dec 9 2009, 17:29
Сообщение #2


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата
Значит, наверное, нужно указывать. Особенно, если документация говорит, что указывать надо.
Конечно надо. Но я не определял ни каких секций типа .data .text и .bootloader. Однако после линковки я получаю увидомление, что в этих секциях занато столько-то памяти. Может где-то avr-c++ берёт эти секции, ведь я указал во фьюзах размер загрузочного сектора и его размещение. По идее этого должно быть достаточно, чтоб ИДЕ всё остальное сделала сама. Вот я пытаюсь с этим разобраться.
Цитата
Вы обратили вниманте, что там отдельно опции "дла всего", "для конкретного файла" и "для линкера"? Вы куда добавляли?

конечно обратил. я добавлял в "Для всего", потом для конкретного сишного файла опцию "-WI, --section-start=.bootloader=0xf000", и пробывал указать опцию линкеру "--section-start=.bootloader=0xf000", "-section-start=.bootloader=0xf000", "section-start=.bootloader=0xf000". Эффект один и тотже - "... overlaps ...". Пробывал по всякому. ((

(блин, Ctrl+C на это компе не работает, не могу цитировать....) Что значит "скопировать скрипт линкера в проект" AVR Studio? И далее... наверно я не так спросил, или вы не так поняли.... я не хочу скопировать библиотечную функцию в секцию загрузчика. Я написал свой загрузчик (точнее скопировал готовый сишный код из примера), т.е. в вайле *.h объявил свою функцию, в *.c определил тело функции. Теперь мне нужно чтоб линкер разместил эту функцию по адресу 0xF000. Как это сделать?
Go to the top of the page
 
+Quote Post



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

 


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


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