打印
[STM32H7]

STM32H743对关键中断函数,使用ITCM搬至RAM运行,仿真进入HardFault_Handler报错

[复制链接]
687|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2025-1-15 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32H743对关键中断函数,使用ITCM搬至RAM运行,STM32CubeIDE仿真进入HardFault_Handler报错。其中,ITCM已查找网上多篇教程,修改了ld链接文件,CubeIDE编译能正常通过,且map文件中,对已搬至ITCM RAM区域运行的中断函数的地址是OK的。只要上电一仿真运行就会进入HardFault_Handler函数,MCU主频是480MHz,不知是否主频过高所致,请各位大神指点下。

使用特权

评论回复
沙发
哈根达斯uz| | 2025-1-15 22:14 | 只看该作者
其中,ITCM已查找网上多篇教程,修改了ld链接文件,CubeIDE编译能正常通过

使用特权

评论回复
板凳
flycamelaaa| | 2025-1-17 12:01 | 只看该作者
检查内存配置

使用特权

评论回复
地板
powerantone| | 2025-1-17 13:00 | 只看该作者
当改变ISR的位置时,必须更新中断向量表,使其指向新的ISR地址。

使用特权

评论回复
5
stormwind123| | 2025-1-17 16:00 | 只看该作者
检查ISR中是否有堆栈溢出或越界访问的问题

使用特权

评论回复
6
probedog| | 2025-1-17 19:00 | 只看该作者
检查是否有任何仿真配置错误或不一致。

使用特权

评论回复
7
classroom| | 2025-1-17 21:00 | 只看该作者
关闭编译器优化选项设置

使用特权

评论回复
8
Amazingxixixi| | 2025-1-21 17:18 | 只看该作者
学习一下啊,还有好多需要学习的。

使用特权

评论回复
9
SophiaOP| | 2025-1-22 21:42 | 只看该作者
链接文件怎么改啊

使用特权

评论回复
10
公羊子丹| | 2025-1-23 10:24 | 只看该作者
ITCM这块我也踩过坑,首先确认你搬到ITCM的函数有没有启用 attribute((section(".itcmram"))) 这种方式标记。

使用特权

评论回复
11
周半梅| | 2025-1-23 10:25 | 只看该作者
主频480MHz应该没问题,STM32H743本来就是支持这个频率的,问题大概率还是内存映射上。

使用特权

评论回复
12
帛灿灿| | 2025-1-23 10:27 | 只看该作者
你在 HardFault_Handler 里用栈回溯看一下出错的具体地址,有时候能直接定位问题。

使用特权

评论回复
13
童雨竹| | 2025-1-23 10:29 | 只看该作者
ITCM要启用Cache,你确认初始化代码里有开Cache吗?否则访问会有问题。

使用特权

评论回复
14
万图| | 2025-1-23 10:30 | 只看该作者
修改链接文件后最好检查下编译生成的.map文件,看看那些函数的地址是否真落在ITCM区域。

使用特权

评论回复
15
Wordsworth| | 2025-1-23 10:31 | 只看该作者
仿真的时候进入HardFault,有可能是访问了非法地址,检查一下中断函数里的指针操作有没有越界。

使用特权

评论回复
16
Bblythe| | 2025-1-23 10:33 | 只看该作者
我记得H7系列要手动使能AXI到ITCM的映射功能,你看看RCC和SYSCFG的配置有没有问题。

使用特权

评论回复
17
Pulitzer| | 2025-1-23 10:34 | 只看该作者
再检查一下中断优先级配置,H7的中断优先级分组和F4系列不一样,可能是优先级冲突了。

使用特权

评论回复
18
Uriah| | 2025-1-23 10:35 | 只看该作者
尝试降低优化级别(比如O0),有时候高优化会导致ITCM搬移的函数出问题。

使用特权

评论回复
19
Clyde011| | 2025-1-23 10:36 | 只看该作者
如果上面都没问题,建议用Debug模式一步步跟踪,看看是从哪一步开始跑偏到HardFault的。

使用特权

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

本版积分规则

1555

主题

4977

帖子

6

粉丝