Перейти к содержанию
    

Ошибка undefined reference

Пытаюсь собрать в 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'

и т.п.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Копать в сторону скрипта линкера и стартапа.

 

Для bare metall проектов всегда есть ассемблерный файлик который линкуется по адресу 0 и с выполнения которого начинается всё веселье.

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

Очень похоже, что у вас этого стартапа просто нет.

 

У вас кстати скорее наоборот - нет скрипта линкера, который переменные __bss_start__ __bss_end__ объявляет, а стартап на них ссылается, но их нет. В итоге фиаско )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас кстати скорее наоборот - нет скрипта линкера, который переменные __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;

 

В общем, пока ясности не прибавилось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень даже прибавилось. Все пустое и какое-то стандартное. Вам нужны стартап и скрипт линкера под ваш камень.

Ну, либо вы не распутали историю до конца.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень даже прибавилось. Все пустое и какое-то стандартное. Вам нужны стартап и скрипт линкера под ваш камень.

Ну, либо вы не распутали историю до конца.

 

Просто скрипт линкера я не весь привёл, он реально большой. А стартовый код вот такой, да.

Камень Cyclone V.

Ещё раз спасибо, буду дальше думать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...