你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
hOtT67 提问时间:2025-1-14 21:05 / 未解决

STM32H743对关键中断函数,使用ITCM搬至RAM运行,STM32CubeIDE仿真进入HardFault_Handler报错。其中,ITCM已查找网上多篇教程,修改了ld链接文件,CubeIDE编译能正常通过,且map文件中,对已搬至ITCM RAM区域运行的中断函数的地址是OK的。只要上电一仿真运行就会进入HardFault_Handler函数,MCU主频是480MHz,不知是否主频过高所致,请各位大神指点下。

收藏 评论6 发布时间:2025-1-14 21:05

举报

6个回答
xmshao 回答时间:2025-1-16 16:54:01
你是指将某个特定函数放到ITCM去运行吧。


我这边也找了相应开发板做了相关测试,的确碰到了你说的现象。


说实话,目前还没找到原因。找了个变通的方法,将整个xxx_it.c文件放到ITCM去,这样操作可行。我这样修改的ld文件,


你参考试试看:


.itcm_text :
{
. = ALIGN(4);
_sITCM = .;
*stm32h7xx_it.o (.text .text*)
*stm32h7xx_it.o (.rodata .rodata*)
. = ALIGN(4);
_eITCM = .;
}>ITCMRAM AT> FLASH
hOtT67 回答时间:2025-1-14 21:09:15

对于搬至ITCM RAM区域运行的中断函数,如果不搬至此区域,上电仿真则正常,不会进入HardFault_Handler函数。这个问题,已查找两三天,FAE也无法联系上,实在是找不到人帮忙解决,请各位大神指点下。

hOtT67 回答时间:2025-1-18 15:22:03

xmshao 发表于 2025-1-16 16:54
你是指将某个特定函数放到ITCM去运行吧。</p>
<p>

谢谢大佬的意见,我再研究研究

hOtT67 回答时间:2025-1-18 16:49:43

查看汇编代码,我发现是一些无用的函数(代码文件中有此函数,但未调用的函数)会自动编译至0x0处,这可能是原因所在,但不好解决啊。d20ea08c85d104dea0284c7d4da1274.png我尝试过MPU开启,关闭指令CAHE等都没用,奇怪的是DTCM都可以正常使用。

xmshao 回答时间:2025-1-18 18:18:24

hOtT67 发表于 2025-1-18 16:49
查看汇编代码,我发现是一些无用的函数(代码文件中有此函数,但未调用的函数)会自动编译至0x0处,这 ...

[md]是的。这些fault提示我也看到了。后面会继续关注这个问题。

hOtT67 回答时间:2025-1-18 19:10:09

xmshao 发表于 2025-1-16 16:54
你是指将某个特定函数放到ITCM去运行吧。</p>
<p>

我试了下,文件方式还是不行,用汇编代码发现在地址0x0处还是有其他函数

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版