kimushu / tinythreads

POSIX-compatible tiny multi-threading library for Intel Nios II / Xilinx Zynq-7000
MIT License
12 stars 3 forks source link

Unrecognised instruction error in alt_hooks.h #4

Closed yamamo2shun1 closed 4 years ago

yamamo2shun1 commented 4 years ago

Wikiのマニュアルに沿って、Nios IIでTinyThreadsを使おうとしています。 BSP TypeをTinyThreadsにしたBSPプロジェクトを作成し、ビルドしてみたところ以下のようなエラーが出ました。

make all 
Info: Building ../candy_gw_tt_bsp
C:/intelFPGA_lite/18.1/nios2eds/bin/gnu/H-x86_64-mingw32/bin/make --no-print-directory -C ../candy_gw_tt_bsp
Compiling altera_vic_funnel_non_preemptive.S...
nios2-elf-gcc -MP -MMD -c   -O0 -g -Wall  -mno-hw-div -mhw-mul -mno-hw-mulx -mgpopt=global    -I./TINYTH/inc -I./HAL/inc -I. -I./drivers/inc -pipe -D__hal__ -DALT_NO_INSTRUCTION_EMULATION -D__tinythreads__  -Wa,-gdwarf2  -o obj/drivers/src/altera_vic_funnel_non_preemptive.o drivers/src/altera_vic_funnel_non_preemptive.S
./TINYTH/inc/os/alt_hooks.h: Assembler messages:
./TINYTH/inc/os/alt_hooks.h:4: Error: unrecognised instruction extern
./TINYTH/inc/os/alt_hooks.h:5: Error: unrecognised instruction extern
./TINYTH/inc/os/alt_hooks.h:6: Error: unrecognised instruction extern
./TINYTH/inc/os/alt_hooks.h:7: Error: unrecognised instruction extern
drivers/src/altera_vic_funnel_non_preemptive.S:77: Error: unrecognised instruction alt_os_int_enter_asm
drivers/src/altera_vic_funnel_non_preemptive.S:92: Error: unrecognised instruction alt_os_int_exit_asm
make[1]: *** [obj/drivers/src/altera_vic_funnel_non_preemptive.o] Error 1
make: *** [../candy_gw_tt_bsp-recurs-make-lib] Error 2

alt_hooks.hの4~7行目(externで始まる宣言部)をコメントアウトして、

#define ALT_OS_INT_ENTER_ASM
#define ALT_OS_INT_EXIT_ASM

を加えると、ビルドは通りましたが、プログラムを実行するとpthread_createで指定した関数が実行される前にデバッガーが強制的にNIOS2_BREAK()でbreakしてしまいます。

kimushu commented 4 years ago

現状、TinyThreadsはExternal Interrupt Controller + VICを用いた割り込み構成のシステムに対応しておらず、 Internal Interrupt Controller専用です。

Interrupt ControllerはTinyThreadsの動作に密接に関わってくるため、小手先での修正で動くようにはならないと思われます。 対応可否・時期は不明ですが、別途Ext+VICサポートに関するissueを起票した上で、本チケットはクローズします。