通过GSL导致的STM32硬件故障 [英] HardFault with STM32 caused through GSL

查看:0
本文介绍了通过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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆