Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка undefined reference
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Fujitser
Пытаюсь собрать в DS-5 Altera Edition проект BareMetalBoot-GNU (с сайта rocketboards.org)
Тулчейн arm-none-eabi-gcc.
Возникают ошибки типа:
undefined reference to `__bss_start__'
undefined reference to `__bss_end__'
undefined reference to `alt_clk_ext_clk_freq_set'
и т.п.

Что делать и в какую сторону копать вообще?
sigmaN
Копать в сторону скрипта линкера и стартапа.

Для bare metall проектов всегда есть ассемблерный файлик который линкуется по адресу 0 и с выполнения которого начинается всё веселье.
Там в этом файлике происходит копировние всех необходимых секций из ROM в RAM, очистка RAM нулями там где надо, заполнение таблицы прерываний.. и т.д.. Короче всё для того, чтоб дальше Сишный код работал.
Очень похоже, что у вас этого стартапа просто нет.

У вас кстати скорее наоборот - нет скрипта линкера, который переменные __bss_start__ __bss_end__ объявляет, а стартап на них ссылается, но их нет. В итоге фиаско )
Fujitser
Цитата(sigmaN @ Jan 25 2017, 15:24) *
У вас кстати скорее наоборот - нет скрипта линкера, который переменные __bss_start__ __bss_end__ объявляет, а стартап на них ссылается, но их нет. В итоге фиаско )


Спасибо за подсказку. Скрипт линкера есть, в нём есть такие строки:
Код
  .bss : ALIGN (8)
  {
    *(.shbss)
    *(.bss .bss.* .gnu.linkonce.b.*)
    *(COMMON)
    . = ALIGN (8);
    *(.ram.b .bss.ram)
    . = ALIGN (8);
    _end = .;
    __end = .;
  } >ram

и ещё куча всего.

startup.s тоже есть, но он какой-то почти пустой:
Код
.globl __reset

.text

__reset:
   b _start

и всё. То есть он ссылается только на _start, в скрипте линковки это определено как:
Код
    PROVIDE(__cs3_reset = __reset);
    *(.cs3.reset)
    _start = DEFINED(__cs3_start_asm) ? __cs3_start_asm : _start;


В общем, пока ясности не прибавилось.
sigmaN
Очень даже прибавилось. Все пустое и какое-то стандартное. Вам нужны стартап и скрипт линкера под ваш камень.
Ну, либо вы не распутали историю до конца.
Fujitser
Цитата(sigmaN @ Jan 25 2017, 21:23) *
Очень даже прибавилось. Все пустое и какое-то стандартное. Вам нужны стартап и скрипт линкера под ваш камень.
Ну, либо вы не распутали историю до конца.


Просто скрипт линкера я не весь привёл, он реально большой. А стартовый код вот такой, да.
Камень Cyclone V.
Ещё раз спасибо, буду дальше думать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.