再上一篇:14.3 启用MPU
上一篇:14.4 MPU 的典型设置
主页
下一篇:15.2 CoreSight 技术概览
再下一篇:15.3 调试模式
文章列表

第15章

《Cortex-M3 权威指南》,嵌入式处理器开发教程。

调试系统架构

调试特性概览

CoreSight技术概览

调试模式

调试事件

Cortex-M3中的断点

调试时访问寄存器

内核的其它调试特性


15.1 调试特性概览

一直以来,单片机的调试不是很突出的主题,很多山寨点的程序在开发中,甚至都没有调试的
概念,而只是把生成的映像直接烧入片子,再根据错误症状来判断问题,然后修改程序重新烧,周 而复始,直到问题解决或放弃为止。能够格算得上调试的活动,至少也是设置断点、观察寄存器和 内存、监视变量等。使用仿真头和 JTAG(如 AVR),可以方便地实现这些基本的调试要求。在开发 比较大的应用程序时,强劲的调试手段是非常重要的。当 bug复杂到无法分析时,只能用调试来追 踪它。如果没有调试手段,简直就束手无策。
正因为此,在 CM3 中,调试机能突然在一夜之间,就从丑小鸭变成了白天鹅,得到了登峰造极 般的,令人非常惊艳的强化。CM3 提供了多种多样的调试模型和调试组件,很多想到的和没想到的 调试方式这里都有,让人惊叹“原来调试还可以做到这种程度”。为了方便进一步学习,我们把 CM3 丰满的调试功能分为两类,每类中都有更具体的调试项目,如下所列:

侵入式调试(这也是基本的调试机能)

a) 停机以及单步执行程序

b) 硬件断点

c) 断点指令(BKPT)

d) 数据观察点,作用于单一地址、一个范围的地址,以及数据的值。

e) 访问寄存器的值(既包括读,也包括写)

f) 调试监视器异常

g) 基于 ROM的调试(闪存地址重载(flash patching) )

非侵入式调试(大多数人更少接触到的,高级的调试机能)

h) 在内核运行的时候访问存储器

i) 指令跟踪,需要通过可选的嵌入式跟踪宏单元(ETM)

j) 数据跟踪

k) 软件跟踪(通过 ITM(指令跟踪单元))

l) 性能速写(profiling)(通过数据观察点以及跟踪模块) 可见,我们以前最常用的调试都属于侵入式调试。所谓“侵入式”,主要是强调这种调试会打

破程序的全速运行。非侵入式调试则是锦上添花的一类,当调试大型软件和多任务环境下的软件系 统时,非侵入式调试有不可替代之强大功效。
在 CM3处理器的内部,包含了一系列的调试组件。CM3的调试系统基于 ARM亲手打造且吐血推 荐的“CoreSight(内核景象)”调试架构。该架构是一个专业设计的体系,它允许使用标准的方案 来访问调试组件,收集跟踪信息,以及检测调试系统的配置。