簡體   English   中英

在Stm32f4發現板上運行Gmp

[英]Running Gmp on Stm32f4 discovery board

我發現了stm32f4發現板。 目前,我可以使用LED,按鈕和通過串行端口進行通信。 我現在正在嘗試在此板上使用Gmp庫。 我按照以下說明構建arm-none-eabi工具鏈: https ://blog.tan-ce.com/gcc-bare-metal/

我使用以下選項配置Gmp:./configure CC = arm-none-eabi-gcc CFLAGS =“-nostartfiles --specs = nosys.specs -g” --host = arm-none-eabi --disable-assembly

我的項目可以編譯和鏈接,沒有任何問題,但是當我嘗試使用以下代碼在板上初始化mpz_t時:

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,那么我對該方法非常感興趣!

我終於找到了解決方案,必須指定皮質類型。 對於stm32f4,將-mcpu = cortex-m4添加到CFLAGS可解決此問題。

我使用此處提供的工具鏈: arm-none-eabi工具鏈

整個配置命令為:./configure CC = arm-none-eabi-gcc CFLAGS =“-nostartfiles --specs = nosys.specs -mcpu = cortex-m4” --host = arm-none-eabi --disable- Assembly --prefix =您的裸機gmp位置

其中“ your-bare-metal-gmp-location”是安裝目錄(您不得在經典的/ usr / local中安裝裸機庫)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM