通过GSL引起的STM32硬件故障



我成功地用Arm Cortex M4为STM32F303交叉编译了GNU科学库,正如我在这里所描述的:

如何交叉编译Arm Cortex M4的GSL?

然而,这很好,但现在我从GSL获得了每一个内存分配的HardFault。例如,这一行:

gsl_vector_float *x = gsl_vector_float_alloc(2);

或者这个

T = gsl_multimin_fdfminimizer_conjugate_fr;

直接导致HardFault。有人知道原因是什么吗?我很确定有足够的RAM(IDE一开始显示59 kB的可用RAM(。这个问题只适用于GSL分配,malloc独立运行非常完美。

此外,我在互联网上发现了一些帖子,描述了线程安全,认为malloc使用锁是一个可能的问题。既然GSL是线程安全的,这可能是原因吗?尽管我没有在源代码中找到任何使用锁的线索。

正如在所描述的注释中一样,我在交叉编译过程中确实使用了错误的链接器脚本(默认链接器脚本(。它在指定链接器脚本后工作(我必须为特定的MCU使用链接器脚本(。

相关内容

  • 没有找到相关文章

最新更新