Cortex-M3调试:断点与调试事件响应详解
需积分: 50 41 浏览量
更新于2024-08-09
收藏 9.63MB PDF 举报
"调试监视器模式下对调试事件的响应-史上最全的测试用例设计方法总结"
在嵌入式系统开发中,调试是至关重要的环节,特别是在Cortex-M3这样的微控制器中。本文主要探讨了在调试监视器模式下如何响应调试事件,以及Cortex-M3的两种断点机制。
Cortex-M3处理器提供了两种断点机制:断点指令和基于FPB(Fault Perturbation Buffer,故障扰动缓冲区)的地址比较器断点。断点指令以`BKPT #im8`的形式存在,是一个16位的Thumb指令,当执行到这个指令时,会产生调试事件。如果C_DEBUGEN(调试使能)标志被置位,处理器内核会被暂停;如果调试监视器使能,会触发调试监视器异常。但需要注意,由于调试监视器异常的优先级低于NMI(非屏蔽中断)和Hard Fault,因此在处理这些高优先级异常的例程中,不能使用`BKPT`指令来启动调试,只能在其返回时响应。
执行`BKPT`指令后,处理器会在调试监视器异常返回时跳转回`BKPT`指令的地址,而不是继续执行下一条指令。这是因为`BKPT`通常用于替换正常指令,当调试操作完成后,指令内存恢复为原来的指令,而不会影响其他部分。如果在执行`BKPT`指令时,C_DEBUGEN和MON_EN都是0,处理器会因无法进入调试模式而引发Hard Fault,并在HFSR(Hard Fault Status Register)的DEBUGEVT位和DFSR(Debug Fault Status Register)的BKPT位置1。
对于程序存储器不可变的情况,可以利用FPB创建硬件断点。不过,FPB仅支持6个指令地址和2个文字地址的断点设置,具体的配置和使用将在后续章节详细讲解。
调试Cortex-M3处理器时,开发者需要理解这两种断点机制的工作原理,以及调试事件响应的优先级规则,以便有效地进行代码调试和问题排查。此外,书中还强调了翻译的策略和方法,力求让复杂的概念以更易于理解的方式呈现给读者。
2020-04-10 上传
2009-08-05 上传
2022-11-17 上传
点击了解资源详情
2021-06-28 上传
256 浏览量
Matthew_牛
- 粉丝: 41
- 资源: 3810
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析