STM32
直播中

张涛

8年用户 1407经验值
私信 关注
[问答]

ClassB的移植后的RAM自检导致控制流计数器损坏怎么解决?

使用STM32F411芯片,移植官方例程en.x-cube_classb/STM324xG_EVAL,使用IAR。
CtrlFlowCntinv是控制流所用变量,使用一切正常。
CtrlFlowCntInv是定义在RAM中0x20000058-0x2000007B地址的no_init型,与它一起定义的还有其他几个变量。



但是在执行了RAMMarch自检之后,控制流所用到的CtrlFlowCntInv变量被清除了,只要使用就会导致堆栈溢出卡死。

注:只有CtrlFlowCntInv在使用时会导致卡死,其它同样被存储在@ "CLASS_B_RAM_REV"空间的变量不会导致卡死。
在官方例程中有注释:

只有CtrlFlowCntInv需要使用到RAM_TEST_CALLEE(0xFFFFFFFF),因为在RAM检测中控制流计数器被破坏。
我想问一下这里为什么只有CtrlFlowCntInv被清除了,而在"CLASS_B_RAM_REV"空间的其他变量不会报错?
而例程中说明的RAM_TEST_CALLEE又该怎么使用呢?重新划出一片空间给CtrlFlowCntInv吗?

回帖(1)

付雯瑶

2024-3-12 14:52:41
第二项改成 0x20000057, 可以试试看
举报

更多回帖

发帖
×
20
完善资料,
赚取积分