首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cortex-M4锁定

Cortex-M4锁定
EN

Stack Overflow用户
提问于 2017-05-15 23:07:45
回答 3查看 1.3K关注 0票数 0

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

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

SCB->SHCSR: 0x74001 (所有三个faultHandlers均已启用、busFault挂起、memFault激活)

SCB->HFSR:0x40000000 (即使定义并启用了所有处理程序,故障也会升级到hardFault )

SCB->CFSR: 0x28601 (BFAR有效,精确错误)

SCB->BFAR/SCB->MMFAR: 0xfffffff7 (我假设sub之后的SP错误)

PRIMASK/FAULTMASK/BASEPRI: 0

MSP: 0x2000ffe0 (仍然有效,处理程序应该可以正常运行)

欢迎任何想法。

EN

回答 3

Stack Overflow用户

发布于 2017-05-16 16:44:07

似乎核心再一次是对的,而我是错的。我犯的错误是,尽管我已经将HardFault_Handler实现为一个裸函数,但所有其他故障处理程序都是用C实现的简单的应用程序故障钩子,试图在它们中断的任何上下文中访问堆栈。不用说,事情很快就变得糟糕起来。

在asm中实现所有处理程序解决了损坏的SP上的核心锁定问题。

票数 1
EN

Stack Overflow用户

发布于 2017-05-16 00:42:29

busFault挂起,memFault active - memFault导致了busError -它杀死了micro

票数 0
EN

Stack Overflow用户

发布于 2017-05-16 04:47:54

异常堆栈使用与当前上下文相同的堆栈。通过提供无效的堆栈指针,您已经阻止了任何异常处理程序能够完成。Lockup专门解决了这种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43982894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档