Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Порядок следования функций в .bootloader
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Vitёk
Добрый день!

В секции .bootloader имеется несколько функций. После сброса контроллера управление должно передаться одной из них, которая начинается с адреса, скажем, 0x1E000.
Проблема в том, что в памяти программ эти функции расположены не в том порядке, как они идут в исходном коде.
Ниже приведён фрагмент .map файла:
Код
.bootloader    0x0001e000       0xca bootldr2.o
                0x0001e0a0                bootloader_start
                0x0001e000                get_uart_char
                0x0001e016                get_uart_ctr


Т.е. вместо bootloader_start управление будет передано функции get_uart_char, что не является правильным...

Как это можно обойти?
Сергей Борщ
Цитата(Vitёk @ Jul 13 2007, 09:05) *
Как это можно обойти?
Добавить еще одну секцию, скажем .boot_start, и разместить bootloader_start в нее. А .bootloader разместить следом. Или по адресу 0x1E000 разместить JMP на bootloader_start.
Vitёk
Имеется ли возможность размещать секции друг за дружкой? Я имею в виду, можно ли указать линкеру разместить .boot_start по фиксированному адресу, а .boot_other сразу за ней?
Сергей Борщ
Цитата(Vitёk @ Jul 13 2007, 09:50) *
Имеется ли возможность размещать секции друг за дружкой? Я имею в виду, можно ли указать линкеру разместить .boot_start по фиксированному адресу, а .boot_other сразу за ней?
Чесно говоря я с WinAVR работаю редко и наскоками, но насколько видел краем глаза - да, можно. В каком порядке они перечислены в скрипте линкера или в командной строке - в таком и будут линковаться. Подробнее надо искать в описании скрипта линкера.
Vitёk
Спасибо, полегчало. smile.gif
Пока обе секции разместил по фиксированным адресам. Не будет хватать места (?) - буду разбираться с линкером (а документации по нему кот наплакал).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.