做一个网站建设需要多少钱,网站推广营销案例,定西做网站,wordpress文件调用函数请阅读【嵌入式开发学习必备专栏】 文章目录 Cortex-M7 Debug eventDebug events Cortex-M7 Debug event
在ARM Cortex-M7架构中#xff0c;调试事件#xff08;Debug Event#xff09;是由于调试原因而触发的事件。一个调试事件会导致以下几种情况之一发生#xff1a; 进…请阅读【嵌入式开发学习必备专栏】 文章目录 Cortex-M7 Debug eventDebug events Cortex-M7 Debug event
在ARM Cortex-M7架构中调试事件Debug Event是由于调试原因而触发的事件。一个调试事件会导致以下几种情况之一发生 进入调试状态如果启用了停滞调试Halting Debug一个调试事件会使处理器在调试状态下停滞。通过将DHCSR.C_DEBUGEN位设置为1来启用停滞调试。一个导致进入调试状态的调试事件会将DHCSR.C_HALT设置为1。 DebugMonitor异常如果停滞调试被禁用且 DebugMonitor 异常被启用当 DebugMonitor 异常的组优先级大于当前执行优先级时一个调试事件会导致DebugMonitor异常。停滞调试被禁用是通过将DHCSR.C_DEBUGEN位设置为0或通过调试认证接口禁用 而 DebugMonitor 异常被启用是通过将DEMCR.MON_EN位设置为1。 MON_EN, bit[16] Enable the DebugMonitor exception: 0 DebugMonitor exception disabled.1 DebugMonitor exception enabled. 如果DebugMonitor组优先级小于或等于当前执行优先级
处理器会将由执行BKPT指令生成的断点调试事件升级为HardFault。处理器升级由FPB生成的断点为HardFault或忽略FPB断点这是由具体实现定义的。然而处理器只有在受断点影响的指令显示其架构行为时才能忽略FPB断点。处理器忽略其他调试事件。这意味着它忽略看点Watchpoints和外部调试请求。
HardFault异常如果停滞调试和监视器都被禁用一个断点调试事件会升级为HardFault并且处理器忽略其他调试事件。在NMI或HardFault异常处理程序中发生断点时如果在NMI或HardFault异常处理程序中断点发生时停滞调试被禁用系统会因不可恢复的错误Unrecoverable exception而锁定。断点可能是由BKPT指令产生或由FPB生成的。FPB在DHCSR.C_DEBUGEN设置为0且DEMCR.MON_EN设置为0时是否生成断点调试事件是由具体实现定义的。导致HardFault或锁定的断点调试事件被视为不可恢复。
在ARM Cortex-M7架构中关于调试事件行为特别是关于HardFault和锁定Lockup情况的触发机制主要涉及当处理器在以下情况下执行BKPT断点指令时
因为禁止停滞而不设置DHCSR.C_HALT。因为DebugMonitor被禁用或处理器未在比DebugMonitor优先级低的优先级上执行而不设置DEMCR.MON_PEND。
处理器的DFSRDebug Fault Status Register调试故障状态寄存器包含每个调试事件的状态位。当一个调试事件导致处理器停滞或生成异常时这些位被设置为1并且之后通过写1来清除write-one-to-clear。是否在事件被忽略或导致锁定时更新这些位是由具体实现定义的。
Debug events