GD32E235C8T6莫名进入HardFault中断

[复制链接]
2297|20
手机看帖
扫描二维码
随时随地手机跟帖
YONNHOR|  楼主 | 2024-12-19 09:27 | 显示全部楼层 |阅读模式
各位大佬,将ST的代码移植到GD32E235C8T6,在运行过程中会出现卡死现象,仿真运行后发现是跑到了HardFault中断里面去了。

发生的时间事不固定的,有时运行半小时左右就发生,有时会运行1~2个小时才出现,代码在ST的MCU上运行完全没有问题。

检查了数组和指针等,均没有发现有异常的地方。

在HardFault中打了断点,根据SP保存的地址,反查发现进入中断前是在执行RTOS的代码,遂怀疑堆栈是否有溢出,检查完个人认为应该没有溢出的(第一次根据网上的方法检查,不确定是否正确),于是增大堆栈,运行结果还是一样,问题没有解决。

目前已经没有任何思路了,有怀疑是不是这个MCU自身的问题,但是不知道怎么验证。

还请各位大佬帮忙提供下思路,帮忙分析下,可能会是什么问题导致的?
3.png 4.png

使用特权

评论回复
elephant00| | 2024-12-19 13:42 | 显示全部楼层
看看是不是时钟设置不正确

使用特权

评论回复
fxyc87| | 2024-12-19 13:53 | 显示全部楼层
这种问题无非就是数组越界,下载线一直连在,让他在调试模式,出问题时,根据堆栈一点点找到上级调用代码

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 14:17 | 显示全部楼层
fxyc87 发表于 2024-12-19 13:53
这种问题无非就是数组越界,下载线一直连在,让他在调试模式,出问题时,根据堆栈一点点找到上级调用代码 ...

上面有截图,你看看

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 14:19 | 显示全部楼层
elephant00 发表于 2024-12-19 13:42
看看是不是时钟设置不正确

MCU主频是72M的,我配置成48M使用,sysTick时基是对的。

使用特权

评论回复
两只袜子| | 2024-12-19 15:00 | 显示全部楼层
检查所有外设(如UART、SPI、I2C等)的初始化代码,要与GD32E235C8T6的寄存器定义和配置要求相匹配。

使用特权

评论回复
阿巴斯| | 2024-12-19 15:38 | 显示全部楼层
数组越界、非法指针、栈溢出、中断没有中断处理函数,都会产生硬件错误,都检查下

使用特权

评论回复
jcky001| | 2024-12-19 16:00 | 显示全部楼层
可能是中断向量表设置有误

使用特权

评论回复
cr315| | 2024-12-19 17:00 | 显示全部楼层
堆栈溢出导致的?

使用特权

评论回复
laocuo1142| | 2024-12-19 18:00 | 显示全部楼层
检查动态内存分配有无内存泄漏或无效的内存访问。

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 18:59 | 显示全部楼层
laocuo1142 发表于 2024-12-19 18:00
检查动态内存分配有无内存泄漏或无效的内存访问。

这个有点不懂,请问如何排查

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 18:59 | 显示全部楼层
cr315 发表于 2024-12-19 17:00
堆栈溢出导致的?

如果是堆栈,该如何验证这个问题?

使用特权

评论回复
flycamelaaa| | 2024-12-19 19:00 | 显示全部楼层
检查RTOS任务优先级和调度

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 19:02 | 显示全部楼层
两只袜子 发表于 2024-12-19 15:00
检查所有外设(如UART、SPI、I2C等)的初始化代码,要与GD32E235C8T6的寄存器定义和配置要求相匹配。 ...

这些都没有问题,外设工作都正常。

使用特权

评论回复
classroom| | 2024-12-19 19:56 | 显示全部楼层
估计MCU本身的质量问题

使用特权

评论回复
powerantone| | 2024-12-19 20:00 | 显示全部楼层
存在资源竞争?

使用特权

评论回复
probedog| | 2024-12-19 20:12 | 显示全部楼层
如果代码中包含内联汇编或特定于ST MCU的指令,请确保它们在GD32E235C8T6上是有效的或已被正确替换。

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 20:33 | 显示全部楼层
classroom 发表于 2024-12-19 19:56
估计MCU本身的质量问题

这个怎么去跟原厂辩论呢

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 20:34 | 显示全部楼层

不知道呀,一头雾水

使用特权

评论回复
YONNHOR|  楼主 | 2024-12-19 20:35 | 显示全部楼层
probedog 发表于 2024-12-19 20:12
如果代码中包含内联汇编或特定于ST MCU的指令,请确保它们在GD32E235C8T6上是有效的或已被正确替换。 ...

GD这款芯片是M23内核,ST是M0内核,M23是M0的增强版,按理应该指令都兼容

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

26

帖子

0

粉丝