Jump to content
    

scmRTOS 4.0, примеры для LPC2XXX

Добрый день, дамы и господа!

 

Решил попробывать 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...

Share this post


Link to post
Share on other sites

Тулчейн у Вас древний. Со свежим у меня собиралось. И cs-make использовал из поставки CodeSoursery, хотя может это и не важно.

Share this post


Link to post
Share on other sites

К чему я все это... может быть компилятор не тот?

Старенький очень:)

Там вот из-за чего ругается:

#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 вот этот файл. С ним должно всё собраться.

 

ЗЫ. Всё, исправил.

Share this post


Link to post
Share on other sites

Тулчейн у Вас древний. Со свежим у меня собиралось. И cs-make использовал из поставки CodeSoursery, хотя может это и не важно.

А я специально древний взял. Где-то слышал, что более новые дают неоправданно большой размер кода...(

Вы какой конкретно версией пользовались, ежели не секрет?)

 

С ним должно всё собраться.

Спасибо большое) Скачаю новый тулчейн.

 

Не, ну приятно, елки-палки))) Хоть мелкий недочет, а отследил :biggrin: Пойду съем чего-нить вкусненького :bb-offtopic:

 

 

Прошу прощения за офф: каким лучше компилятором пользоваться? Есть yagarto, code sourcery, сборки от уважаемого klen'а. Есть версии EABI, OABI, без них. Я, честно говоря, в этом всем запутался...

 

Хочу более менее однообразным инструментом пользоваться) Т.к. для 9 арма у меня шел Code Sourcery, выбрал его и для 7-го.

 

Как-то мир GCC компиляторов велик, многообразен...

Share this post


Link to post
Share on other sites

Хоть мелкий недочет, а отследил :biggrin:

Да, забыл написать - спасибо.

Прошу прощения за офф: каким лучше компилятором пользоваться?

Я использую сборки от klen-а и sourcery как референсный компилятор. (оба EABI естественно, это сейчас стандарт).

Share this post


Link to post
Share on other sites

Да, забыл написать - спасибо.

Ну что Вы, не стоит благодарности, это мелочь)

Я использую сборки от klen-а и sourcery как референсный компилятор. (оба EABI естественно, это сейчас стандарт).

Понятно! Сборки от klen работают, чего не скажешь о yagarto. У меня он почему-то никогда не выпускал работающую программу. Но это, видимо, что-то личное)

 

Спасибо!!!

Share this post


Link to post
Share on other sites

Сборки от klen работают, чего не скажешь о yagarto. У меня он почему-то никогда не выпускал работающую программу

Ну не знаю: у меня всё как раз наоборот, заработало сразу без вопросов. А с KGP пока не выходит собрать рабочее.

 

 

Share this post


Link to post
Share on other sites

С этим (Sourcery G++ Lite 2011.03-42) 4.5.2 прежние примеры (я смотрю Вы, AHTOXA , уже репозитарий обновили :rolleyes: ) собираются. Причем в 3-channel даже файлик дополнительнй добавлять не надо. Камильфо! :rolleyes: Всем спасибо за участие!

 

Гм, у меня еще при выполнении правила clean не удалялся бинарный файл (директория exe). В makefile добавил строку

-@$(RM) $(BIN)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...