haker_fox 162 May 13, 2012 Posted May 13, 2012 · Report post Добрый день, дамы и господа! Решил попробывать 4-ю ветку. Собрал примеры, идущие с осью под LPC2XXX. Вернее, попытался собрать. Компилятор: arm-2007q1-21-arm-none-eabi (Code Sourcery). Результаты: 1. Пример "1-EventFlag". E:\My\Projects\scmRTOS_ARM\1-EventFlag>mingw32-make --- compiling ./src/main.cpp... --- compiling ../SamplesCommon/init.cpp... --- compiling ../scmRTOS/Common/usrlib.cpp... --- compiling ../scmRTOS/Common/OS_Kernel.cpp... --- compiling ../scmRTOS/Common/OS_Services.cpp... --- compiling ../scmRTOS/ARM7/OS_Target_cpp.cpp... --- assembling ../SamplesCommon/crt.S... --- assembling ../scmRTOS/ARM7/OS_Target_asm.S... --- linking... ./obj/crt.o: In function `IRQAddr': ../SamplesCommon/crt.S:80: undefined reference to `IRQHandler' collect2: ld returned 1 exit status mingw32-make: *** [exe/1-EventFlag.elf] Error 1 2. Пример "2-Message". E:\My\Projects\scmRTOS_ARM\2-Message>mingw32-make --- compiling ./src/main.cpp... --- compiling ../SamplesCommon/init.cpp... --- compiling ../scmRTOS/Common/usrlib.cpp... --- compiling ../scmRTOS/Common/OS_Kernel.cpp... --- compiling ../scmRTOS/Common/OS_Services.cpp... --- compiling ../scmRTOS/ARM7/OS_Target_cpp.cpp... --- assembling ../SamplesCommon/crt.S... --- assembling ../scmRTOS/ARM7/OS_Target_asm.S... --- linking... ./obj/crt.o: In function `IRQAddr': ../SamplesCommon/crt.S:80: undefined reference to `IRQHandler' collect2: ld returned 1 exit status mingw32-make: *** [exe/2-Message.elf] Error 1 3. Пример "3-Channel". E:\My\Projects\scmRTOS_ARM\3-Channel>mingw32-make --- compiling ./src/main.cpp... --- compiling ../SamplesCommon/init.cpp... --- compiling ../scmRTOS/Common/usrlib.cpp... --- compiling ../scmRTOS/Common/OS_Kernel.cpp... --- compiling ../scmRTOS/Common/OS_Services.cpp... --- compiling ../scmRTOS/ARM7/OS_Target_cpp.cpp... --- assembling ../SamplesCommon/crt.S... --- assembling ../scmRTOS/ARM7/OS_Target_asm.S... --- linking... ./obj/crt.o: In function `IRQAddr': ../SamplesCommon/crt.S:80: undefined reference to `IRQHandler' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-abort.o): In function `abort': abort.c:(.text+0xc): undefined reference to `_exit' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-sbrkr.o): In function `_sbrk_r': sbrkr.c:(.text+0x1c): undefined reference to `_sbrk' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-signalr.o): In function `_getpid_r': signalr.c:(.text+0x8): undefined reference to `_getpid' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-signalr.o): In function `_kill_r': signalr.c:(.text+0x38): undefined reference to `_kill' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-makebuf.o): In function `__smakebuf': makebuf.c:(.text+0xf8): undefined reference to `isatty' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-writer.o): I n function `_write_r': writer.c:(.text+0x24): undefined reference to `_write' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-closer.o): I n function `_close_r': closer.c:(.text+0x1c): undefined reference to `_close' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-fstatr.o): I n function `_fstat_r': fstatr.c:(.text+0x20): undefined reference to `_fstat' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-lseekr.o): I n function `_lseek_r': lseekr.c:(.text+0x24): undefined reference to `_lseek' c:/sft/sourcery/arm_none_eabi/bin/../lib/gcc/arm-none-eabi/4.2.0/../../../../arm-none-eabi/lib\libc.a(lib_a-readr.o): In function `_read_r': readr.c:(.text+0x24): undefined reference to `_read' collect2: ld returned 1 exit status mingw32-make: *** [exe/3-Channel.elf] Error 1 Если в первых двух примерах в crt.S закомментировать IRQHandler, то они компилируются без ошибок, третий пример - ошибки остаются...( К чему я все это... может быть компилятор не тот? Хочу попробывать прикрутить ее к LPC2478... Quote Share this post Link to post Share on other sites More sharing options...
IgorKossak 1 May 13, 2012 Posted May 13, 2012 · Report post Тулчейн у Вас древний. Со свежим у меня собиралось. И cs-make использовал из поставки CodeSoursery, хотя может это и не важно. Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 May 13, 2012 Posted May 13, 2012 · Report post К чему я все это... может быть компилятор не тот? Старенький очень:) Там вот из-за чего ругается: #if scmRTOS_CONTEXT_SWITCH_SCHEME == 1 && !defined(GCC_IRQ_PATCH_REQUIRED) LDR PC, [PC, #-0xFF0] /* Read address from AIC */ #else LDR PC, IRQAddr /* IRQ interrupt */ #endif Компилятор старый, для него нужен патч (GCC_IRQ_PATCH_REQUIRED), потому и прыгает на IRQAddr. А IRQHandler переименовали в irq_handler. У меня компилятор новее, вот я и проглядел этот момент. (Сейчас исправлю, а то неаккуратненько.) Так что либо дождитесь исправления, либо исправьте вручную IRQHandler на irq_handler, либо обновите компилятор (наверное это наиболее правильный путь, там много чего поправили). Если всё же решите остаться на старом компиляторе (ну мало ли), то для третьего примера положите в папку src вот этот файл. С ним должно всё собраться. ЗЫ. Всё, исправил. Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 162 May 13, 2012 Posted May 13, 2012 · Report post Тулчейн у Вас древний. Со свежим у меня собиралось. И cs-make использовал из поставки CodeSoursery, хотя может это и не важно. А я специально древний взял. Где-то слышал, что более новые дают неоправданно большой размер кода...( Вы какой конкретно версией пользовались, ежели не секрет?) С ним должно всё собраться. Спасибо большое) Скачаю новый тулчейн. Не, ну приятно, елки-палки))) Хоть мелкий недочет, а отследил Пойду съем чего-нить вкусненького :bb-offtopic: Прошу прощения за офф: каким лучше компилятором пользоваться? Есть yagarto, code sourcery, сборки от уважаемого klen'а. Есть версии EABI, OABI, без них. Я, честно говоря, в этом всем запутался... Хочу более менее однообразным инструментом пользоваться) Т.к. для 9 арма у меня шел Code Sourcery, выбрал его и для 7-го. Как-то мир GCC компиляторов велик, многообразен... Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 May 13, 2012 Posted May 13, 2012 · Report post Хоть мелкий недочет, а отследил Да, забыл написать - спасибо. Прошу прощения за офф: каким лучше компилятором пользоваться? Я использую сборки от klen-а и sourcery как референсный компилятор. (оба EABI естественно, это сейчас стандарт). Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 162 May 13, 2012 Posted May 13, 2012 · Report post Да, забыл написать - спасибо. Ну что Вы, не стоит благодарности, это мелочь) Я использую сборки от klen-а и sourcery как референсный компилятор. (оба EABI естественно, это сейчас стандарт). Понятно! Сборки от klen работают, чего не скажешь о yagarto. У меня он почему-то никогда не выпускал работающую программу. Но это, видимо, что-то личное) Спасибо!!! Quote Share this post Link to post Share on other sites More sharing options...
Артём__ 1 May 13, 2012 Posted May 13, 2012 · Report post Сборки от klen работают, чего не скажешь о yagarto. У меня он почему-то никогда не выпускал работающую программу Ну не знаю: у меня всё как раз наоборот, заработало сразу без вопросов. А с KGP пока не выходит собрать рабочее. Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 May 13, 2012 Posted May 13, 2012 · Report post На Yagarto недавно кто-то жаловался... Ага, вот та тема. Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 162 May 14, 2012 Posted May 14, 2012 · Report post С этим (Sourcery G++ Lite 2011.03-42) 4.5.2 прежние примеры (я смотрю Вы, AHTOXA , уже репозитарий обновили :rolleyes: ) собираются. Причем в 3-channel даже файлик дополнительнй добавлять не надо. Камильфо! :rolleyes: Всем спасибо за участие! Гм, у меня еще при выполнении правила clean не удалялся бинарный файл (директория exe). В makefile добавил строку -@$(RM) $(BIN) Quote Share this post Link to post Share on other sites More sharing options...