ошибка связывания blackfin gcc-toolchain неопределенная ссылка на `Ret_Add ' - PullRequest
0 голосов
/ 31 октября 2011

После исключения:

https://blackfin.uclinux.org/gf/project/uclinux-dist/forum/?_forum_action=ForumMessageBrowse&thread_id=46813&action=ForumBrowse&forum_id=39

Я конвертирую алгоритм FFT для компилятора VDSP в приложение «голое железо» для работы на ядре B и запуска uclinux на ядре A. У меня ошибка компоновки, я не понимаю, откуда она взялась:

Вызов: '/opt/uClinux/bfin-elf/bin/../bfin-elf/bin/ld.real' '-v' '-o' 'test_ad1836_driver' '-T' 'coreb_test_ad1836_driver.lds' '--just-symbol' '../../icc_core/icc' 'queue.o' 'ezkit_561.o' 'heap_2.o' 'port.o' 'tasks.o' 'test_ad1836_driver.o' 'list .o '' croutine.o '' user_isr.o '' bfin_isr.o '' app_c.o '' context_sl_asm.o '' cycle_count.o '' CFFT_Rad4_NS_NBRev.o '' -Ttext '' 0x3c00000 '' -L '' / opt / uClinux / bfin-elf / bfin-elf / lib '' -L '' / opt / uClinux / bfin-elf / bfin-elf / lib '' -lc ' GNU ld версия 2.17 cycle_count.o: в функции Compute_Cycle_Count': /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.asm:22: undefined reference to Ret_Add ' /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.asm_9_0: 100: 9 /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.as__0_0_0: 101: 28 /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.asm_1_1: 101: 45: /home/william/Development_new/Music_Recognition/code/uCLinux/uclinux-dist/user/blkfin-apps/icc_utils/example/DSP_imp/CFFT_Rad4_NS_NBRev/corea/cycle_count.dd '1012

код выглядит так:

.section l1.data;
.align 4;
.var _Ret_Add = 0;
.var _Save_R7 = 0;

.section l1.text;
.global _Compute_Cycle_Count;
.align 8;
_Compute_Cycle_Count: P0.L = _Ret_Add;
P0.H = _Ret_Add;
R3 = RETS;
[P0] = R3;

    P0.L = _Save_R7;                                                       
    P0.H = _Save_R7;                                                       
    [P0] = R7; 

........

Спасибо

William

1 Ответ

0 голосов
/ 01 ноября 2011

У вас нет декларации _Ret_Add и _Save_R7 в вашем коде для понимания ассемблером GNU.Вы должны перенести его из VDSP asm в GNU asm:

_Ret_Add: .int 0;

или, может быть, если вы предпочитаете поддерживать обратную совместимость:

.if defined (__GNUC__)
_Ret_Add:
.int 0;
.else
.var _Ret_Add =0;
.endif

Взгляните на this .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...