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

 
 
> Как разместить 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 10 2009, 09:29
Сообщение #2


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

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



Сергей Борщ Чем умничать, лучше бы толковое сказали что-нибудь.
Цитата
вы не попробовали правильную комбинацию - указать -Wl,--section-start=.bootloader=0xf000 в опциях линкера.

Цитата
проверил перед тем, как писать на форум.
Может мы с разными процессорами пробуем? Вы с каким пробывали? Я пробовал c такой опцией, проект скомпелялся без ошибок, с выводом
Код
avr-c++ -mmcu=at90can128 -Wl,--section-start=.bootloader=0xf000  -Wl,-Map=interfaces.map main.o spi.o Display.o timer.o initialization.o interrupts.o crc.o connection.o modbus.o tcpip.o iso104.o MapModbus.o extRom.o arm150.o boot.o     -o interfaces.elf
Но моя функция разместилась не по адресу 0xf000.

Разобрался в чём была моя проблема. Оказывается, по каждому адресу в проце лежит слово, линкеру нужно адрес указать байтовый. Т.е. 2*0xf000, и правильная опция будет -Wl,--section-start=.bootloader=0x1e000

p.s.
Цитата
Обратите внимание, что после -Wl, (Wl, а не WI) пробела быть не должно.
)))) - ну это вообще на 5 балоф. Еще туда добавить "W - это дубль Вэ, а не две буквы V" и можно эти советы в тираж отдавать. Без обид wink.gif. Я же эту опцию из пдф-ника скопировал в проект, а потом скопировал из проекта в форум. Видно же что там "-Wl".

Цитата
И совсем П.С. Слева вверху есть иконка , под ней прячется линк "новые сообщения". Там ответы на ваше сообщение будут видны независимо от того, куда переместили ветку.
+1

Цитата
Вопросы плана "что значит скопировать скрипт линкера в проект" тоже задают чайники.
Ну конечно, куда нам, любителям IDE до вас, до ГУРУ, пишущих код в vi и соберающих его из командной строки! Выяснил до конца в чём проблема из-за спортивного интереса. А на самом деле это ни к чему. Программист, пишущий в ИДЭ, не должен беспокоится о скриптах, параметрах линкера и компелятора, makefile-ах и т.п., а должен быть сконцентрирован на решении др. задач. Для того и нужна ИДЭ.

опять bb-offtopic.gif .... сколько раз зарекался ......
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 00:27
Рейтинг@Mail.ru


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