gpt4 book ai didi

Cortex-M4 锁定

转载 作者:行者123 更新时间:2023-11-30 14:57:20 30 4
gpt4 key购买 nike

我正在尝试调试基于运行 FreeRTOS 的 STM32F3 uC 的应用程序。我已在应用程序的线程上下文中的随机位置手动将 PSP 设置为无效值(例如 0),希望触发 memManageFault/busFault/usageFault/hardFault 处理程序。不幸的是,没有执行任何故障处理程序,但核心在第一次推送到无效堆栈时锁定。我错过了什么?

锁定状态的更多详细信息:

SCB->SHCSR:0x74001(所有三个故障处理程序均已启用,总线故障待处理,memFault 处于事件状态)
SCB->HFSR:0x40000000(即使定义并启用了所有处理程序,故障也会升级为硬故障)
SCB->CFSR:0x28601(BFAR有效,精确错误)
SCB->BFAR/SCB->MMFAR: 0xfffffff7(我认为 sub 之后的 SP 是错误的)

PRIMASK/FAULTMASK/BASEPRI:0
MSP:0x2000ffe0(仍然有效,处理程序应该运行得很好)

欢迎任何想法。

最佳答案

看来核心又是对的,而我是错的。我犯的错误是,尽管我已将 HardFault_Handler 实现为裸函数,但所有其他故障处理程序都是用 C 实现的简单应用程序故障 Hook ,试图在它们中断的任何上下文中访问堆栈。不用说,事情很快就变脏了。
在 asm 中实现所有处理程序解决了核心锁定损坏的 SP 的问题。

关于Cortex-M4 锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43982894/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com