通过GSL导致的STM32硬件故障 [英] HardFault with STM32 caused through GSL
本文介绍了通过GSL导致的STM32硬件故障的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用ARM Cortex M4成功地为我的STM32F303交叉编译了GNU Science Library,如下所述:
How to crosscompile GSL for Arm Cortex M4?
但是,这可以很好地工作,但现在我从GSL获得了每个内存分配的HardFault值。例如,下面这行:gsl_vector_float *x = gsl_vector_float_alloc(2);
或者这个
T = gsl_multimin_fdfminimizer_conjugate_fr;
直接导致硬件故障。有谁知道原因是什么吗?我非常肯定有足够的内存(IDE在开始时显示59kB的空闲内存)。该问题仅适用于GSL分配,因为Malloc单机版运行良好。
此外,我在互联网上发现了一些帖子,其中描述了为Malloc使用锁的意义上的线程安全是一个可能的问题。既然GSL是线程安全的,这可能是原因吗?虽然我在源代码中没有找到使用锁的任何线索。
推荐答案
正如所描述的注释,我在交叉编译期间确实使用了错误的链接器脚本(默认链接器脚本)。它在指定链接器脚本(我必须使用特定MCU的链接器脚本)后才能工作。
这篇关于通过GSL导致的STM32硬件故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文