Fujitser 0 25 января, 2017 Опубликовано 25 января, 2017 · Жалоба Пытаюсь собрать в 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 0 25 января, 2017 Опубликовано 25 января, 2017 · Жалоба Копать в сторону скрипта линкера и стартапа. Для bare metall проектов всегда есть ассемблерный файлик который линкуется по адресу 0 и с выполнения которого начинается всё веселье. Там в этом файлике происходит копировние всех необходимых секций из ROM в RAM, очистка RAM нулями там где надо, заполнение таблицы прерываний.. и т.д.. Короче всё для того, чтоб дальше Сишный код работал. Очень похоже, что у вас этого стартапа просто нет. У вас кстати скорее наоборот - нет скрипта линкера, который переменные __bss_start__ __bss_end__ объявляет, а стартап на них ссылается, но их нет. В итоге фиаско ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fujitser 0 25 января, 2017 Опубликовано 25 января, 2017 · Жалоба У вас кстати скорее наоборот - нет скрипта линкера, который переменные __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 0 25 января, 2017 Опубликовано 25 января, 2017 · Жалоба Очень даже прибавилось. Все пустое и какое-то стандартное. Вам нужны стартап и скрипт линкера под ваш камень. Ну, либо вы не распутали историю до конца. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fujitser 0 26 января, 2017 Опубликовано 26 января, 2017 · Жалоба Очень даже прибавилось. Все пустое и какое-то стандартное. Вам нужны стартап и скрипт линкера под ваш камень. Ну, либо вы не распутали историю до конца. Просто скрипт линкера я не весь привёл, он реально большой. А стартовый код вот такой, да. Камень Cyclone V. Ещё раз спасибо, буду дальше думать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться