2017-01-04 12 views
0

私はstm32f4ディスカバリー・ボードを発見しました。 私はLED、ボタンを使用して、シリアルポートを介して通信することができる瞬間です。 私は今このボードでGmpライブラリを使用しようとしています。 私はこれらの指示に従ってアームなし-EABIツールチェーンを構築:https://blog.tan-ce.com/gcc-bare-metal/Stm32f4ディスカバリーボードでGmpを実行

私は、次のオプションでGMPを設定:=アームなし-EABI-gccの に./configure CC CFLAGS = " - nostartfiles --specs = nosys私は次のコードでボード上のmpz_tを初期化しようとすると、.specs -g」--host =アームなし-EABI --disable-アセンブリ

私のプロジェクトがコンパイルされ、すべての問題のないリンクが、 :

mpz_t a; 
mpz_init_set_str(a, "31", 10); 

私はHardFault_Handler()に属していますが、私のarm-none-eabi-gdbは私:

(gdb) bt 
#0 HardFault_Handler() at ./src/stm32f4xx_it.c:34 
#1 <signal handler called> 
#2 0x08016ade in __gmpn_fft_best_k (n=134358201, sqr=134358201) at mul_fft.c:151 
#3 0x0801816e in __gmpn_mul_fft (op=0x80006f5 <HardFault_Handler>, pl=134219497, n=0x8022471 <Reset_Handler>, nl=537001984, m=0x80224b9 <WWDG_IRQHandler>, ml=134358201, k=134358201) at mul_fft.c:870 
Backtrace stopped: previous frame inner to this frame (corrupt stack?) 

既に誰かがマイクロコントローラでGmpを実行している場合、私はそれを行う方法に非常に興味があります!

答えて

0

最後に解決策が見つかりましたが、皮質タイプを指定する必要があります。 stm32f4の場合、CFLAGSに-mcpu = cortex-m4を追加して問題を解決します。

私はここに利用できるツールチェーンを使用します。arm-none-eabi toolchain

全体のコンフィギュレーション・コマンドは次のとおりです。 に./configure CC =アームなし-EABI-gccのCFLAGS = " - nostartfiles --specs = nosys.specs -mcpu = cortex-m4 "--host = arm-none-eabi --disable-assembly --prefix =あなたのベアメタル-gmp-location

ここで、"あなたのメタルgmpの場所 "はインストールですディレクトリ(クラシックな/ usr/localにベアメタルライブラリをインストールしないでください)。