繁体   English   中英

Cortex-M4锁定

[英]Cortex-M4 lock-up

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

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

SCB-> SHCSR:0x74001(所有三个faultHandler均已启用,busFault挂起,memFault处于活动状态)
SCB-> HFSR:0x40000000(即使已定义并启用所有处理程序,故障也会升级为hardFault)
SCB-> CFSR:0x28601(BFAR有效,精确错误)
SCB-> BFAR / SCB-> MMFAR:0xfffffff7(假设子程序后有错误的SP)

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

任何想法都欢迎。

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

busFault待处理,memFault处于活动状态 -memFault导致busError-并杀死了微型计算机

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM