嵌入式系统故障处理与分析全解析
在嵌入式系统开发中,故障异常是常见的问题。本文将详细介绍故障处理和分析的方法,包括硬故障(HardFault)和非屏蔽中断(NMI)处理程序的开发、故障事件的分析方法、不同架构处理器故障处理的差异、堆栈跟踪以及故障处理程序的编写等内容。
1. 硬故障和非屏蔽中断处理程序开发
开发硬故障和非屏蔽中断处理程序的一种方法是对异常处理任务进行分区。这样,硬故障和非屏蔽中断处理程序仅执行基本任务,而其他任务(如硬故障异常的错误报告)可以使用单独的异常(如PendSV)来执行。这种分区有助于确保硬故障处理程序和/或非屏蔽中断处理程序保持简洁(即更易于检查和提高代码质量)且健壮。
此外,需要确保非屏蔽中断和硬故障处理程序代码不会调用意外使用系统服务调用(SVC)的函数。
2. 故障事件分析
2.1 概述
在软件开发过程中,故障异常并不罕见。幸运的是,有几种方法可以获取所需信息来确定问题的原因:
- 指令跟踪 :如果使用的设备支持嵌入式跟踪宏单元(ETM)或微跟踪缓冲区(MTB),可以利用ETM和MTB来了解故障是如何发生的,即查看故障异常发生前刚刚执行的指令。这些信息可用于识别导致故障的处理器操作。还可以设置调试环境,使处理器在故障处理程序启动时自动停止。Cortex - M23和Cortex - M33处理器支持ETM和MTB,但基于这些处理器的设备可能并不总是包含这些功能。使用ETM跟踪时,需要具有跟踪端口捕获功能的调试探头。虽然使用MTB进行指令跟踪不需要跟踪端口捕获功能,但它提供的信息比ETM少,因为它只捕获有限的历史记录。
-
超级会员免费看
订阅专栏 解锁全文
1757

被折叠的 条评论
为什么被折叠?



