Копать в сторону скрипта линкера и стартапа.
Для bare metall проектов всегда есть ассемблерный файлик который линкуется по адресу 0 и с выполнения которого начинается всё веселье. Там в этом файлике происходит копировние всех необходимых секций из ROM в RAM, очистка RAM нулями там где надо, заполнение таблицы прерываний.. и т.д.. Короче всё для того, чтоб дальше Сишный код работал. Очень похоже, что у вас этого стартапа просто нет.
У вас кстати скорее наоборот - нет скрипта линкера, который переменные __bss_start__ __bss_end__ объявляет, а стартап на них ссылается, но их нет. В итоге фиаско )
--------------------
The truth is out there...
|