|
GNU Tools ARM Embedded неопределённые ссылки из файла startup_ARMCM3.S |
|
|
|
Apr 7 2017, 12:46
|
Группа: Участник
Сообщений: 9
Регистрация: 25-02-09
Пользователь №: 45 366

|
Доброго времени дня! Никак не могу найти решение проблемы.
linking... ./gnu/startup_armcm3.o: In function `Reset_Handler': E:\ARM_F/SRC/startup_ARMCM3.S:172: undefined reference to `__copy_table_start__' E:\ARM_F/SRC/startup_ARMCM3.S:173: undefined reference to `__copy_table_end__' E:\ARM_F/SRC/startup_ARMCM3.S:204: undefined reference to `__data_start__' E:\ARM_F/SRC/startup_ARMCM3.S:205: undefined reference to `__data_end__' E:\ARM_F/SRC/startup_ARMCM3.S:233: undefined reference to `__zero_table_start__' E:\ARM_F/SRC/startup_ARMCM3.S:234: undefined reference to `__zero_table_end__' collect2.exe: error: ld returned 1 exit status
Toolchain GNU Tools ARM Embedded\5.4 2016q3
Файл startup_ARMCM3.S взят из папки c тулчейном. Включён взамен стартового файла рабочего проекта, собранного на ARM MDK. Проект на GCC успешно компилится но не хочет собираться по указанным выше причинам. Вопрос - чего в супе не хватает? Это ведь области RAM, которые при старте инициализируются или обнуляются, что не так? Спасибо.
|
|
|
|
|
 |
Ответов
|
Apr 7 2017, 13:49
|

Местный
  
Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007

|
заимствовали стартап файл и линкер-файл от разных проектов? нотация имён необычная. ищите в ld-файле что-то вида: Код _etext = .; .data : /* AT makes the LMA follow on in the binary image */ { . = ALIGN(4); _sidata = _etext; /* start of initialized data label */ _sdata = .; /* start of .data label */ KEEP( *(.data) ) KEEP( *(.data.*) ) . = ALIGN(4); _edata = .; /* end of .data label */ } > RAM AT > FLASH
/* .bss section - uninitialized data */ .bss : { . = ALIGN(4); _sbss = .; /* start of .bss label (for startup) */ *(.bss) *(.bss.*) *(COMMON) . = ALIGN(4); _ebss = .; /* end of .bss label (for startup) */ _end = .; /* end of used ram (start of free memory, for malloc) */ __end = .; /* the same */ end = .; /* the same */ } > RAM и приводите имена в ссылках на память (строчки вида _end = .  к вашим именам из ассемблерного файла
Сообщение отредактировал IgorKossak - Apr 7 2017, 14:02
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
|
|
|
|
|
Apr 7 2017, 14:04
|
Группа: Участник
Сообщений: 9
Регистрация: 25-02-09
Пользователь №: 45 366

|
Линкер файл я даже не цеплял. Думал, по аналогии с MDK, что по умолчанию что то должно быть. Стартап взят отсюда C:\Program Files (x86)\GNU Tools ARM Embedded\5.4 2016q3\share\gcc-arm-none-eabi\samples\startup, тул скачан с ARMа. Я посмотрел *.ld файл, предлагаемый в тулчейне, там тоже нет этих символов, кроме __bss_start__, этот совпадает. Ok, спасибо за подсказки, пошёл изучать скрипты линкера.
|
|
|
|
|
Apr 11 2017, 07:50
|
Группа: Участник
Сообщений: 9
Регистрация: 25-02-09
Пользователь №: 45 366

|
Ещё раз благодарю за подсказки, с multi RAM разбрался. А вот как быть с multi ROM? Только когда секция FLASH едина, только тогда правильно выставляестя топ стека и стартовый переход. А вот стоит мне порезать FLASH на куски, то секция векторов прерываний и стартовый код ложатся таки куда надо, а вот топ стека адрес перехода на стартовый код нулевые выходят. И параллельно вопрос- а что в GCC нет возможности одной директивой все функции одного файла исходника отправить в свою секцию, только каждой функции __attribute__ прикручивать?
|
|
|
|
|
Apr 11 2017, 09:50
|
Знающий
   
Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842

|
Цитата(vovo @ Apr 11 2017, 10:50)  все функции одного файла исходника отправить в свою секцию, только каждой функции __attribute__ прикручивать? В скрипте линкера. В нужную секцию добавить: *<имя файла>.o(.text .text* .rodata .rodata.* .constdata .constdata.*) потом в той секции откуда взят файл: *(EXCLUDE_FILE(*<имя файла>.o ...) .text*) Имена секций поправьте сами.
|
|
|
|
Сообщений в этой теме
vovo GNU Tools ARM Embedded неопределённые ссылки из файла startup_ARMCM3.S Apr 7 2017, 12:46 DmitryM А в линкер-файле эти регионы определены и именуютс... Apr 7 2017, 13:27   Сергей Борщ QUOTE (vovo @ Apr 11 2017, 10:50) А вот с... Apr 11 2017, 09:09    vovo Да, по второму вопросу протупил, виноват, исправлю... Apr 11 2017, 10:54     Сергей Борщ QUOTE (vovo @ Apr 11 2017, 13:54) Вот так... Apr 11 2017, 11:20      vovo Цитата(Сергей Борщ @ Apr 11 2017, 14:20) ... Apr 11 2017, 13:13       Сергей Борщ QUOTE (vovo @ Apr 11 2017, 16:13) Попробо... Apr 11 2017, 15:20        vovo Цитата(Сергей Борщ @ Apr 11 2017, 18:20) ... Apr 11 2017, 17:04         Сергей Борщ QUOTE (vovo @ Apr 11 2017, 20:04) загрузч... Apr 11 2017, 19:08     Kabdim Цитата(vovo @ Apr 11 2017, 13:54) Да, по ... Apr 11 2017, 12:30 vovo Хорошая ссылка, гораздо гораздее чем штатный pdf, ... Apr 12 2017, 14:37
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|