当前位置:嗨网首页>书籍在线阅读

18-硬件辅助调试

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.4 硬件辅助调试

现在,你可能已经意识到不能够用KGDB来调试非常早期的内核启动代码。这是因为在大多数底层硬件初始化代码被执行之后KGDB才会被初始化。此外,如果分配给你的任务是将引导加载程序和Linux内核移植到一块新设计的板卡上并让它们正常工作,那么,硬件调试探测器无疑会是最有效的调试工具,它可以用于解决板卡移植早期阶段出现的问题。

有很多种类的硬件调试探测器供你选择。在这一节的例子中,我们使用了Abatron公司(www.abatron.ch)生产的BDI-2000。这些调试器通常被称为JTAG探测器,因为它们所使用的底层通信方法最初是由联合测试行动小组(Joint Test Action Group,JTAG)定义的,用于集成电路的边界扫描测试。Abatron已经推出了更新的BDI-3000,它的特点是包含一个更为快速的以太网(100 MB)接口。

JTAG探测器包含一个专门设计的小型连接器,用于连接到你的目标板上。它通常包含一个简单的方形排针接头和一条带状电缆。大多数主流高性能处理器都包含一个JTAG接口,专门提供这种软件调试能力。JTAG探测器的一端连接到目标板处理器的JTAG接口上,另一端通过以太网、USB或并行端口连接到主机开发系统上。图14-6详细显示了使用Abatron探测器时的环境设置。

447.png

图14-6 使用硬件JTAG探测器进行调试

JTAG探测器的设置会很复杂。直接原因是它们连接的处理器太复杂了。当目标板加电之后处理器复位时,几乎所有的器件都还没有被初始化。实际上,很多处理器都至少需要一些少量的初始化信息才能开始工作。有很多方法可以将此初始配置设置到处理器中。有些处理器会读取一个硬件配置字或是某些特定引脚的初始值,从而获取它们的加电配置。其他一些处理器会从一个非易失性存储设备(比如闪存)的某个默认位置读取配置信息。当使用JTAG探测器,特别是用它来启动一个新设计的板卡时,在做任何其他事情之前必须先要完成处理器和板卡的最基本的初始化。很多JTAG探测器依靠一个配置文件来完成这项工作。

Abatron调试器使用一个配置文件来初始化它所连接的目标硬件,并且在其中定义调试器的其他一些运行参数。这个配置文件包含了一些指令,用于初始化处理器、内存系统和其他必需的板级硬件。开发人员需要针对具体的板卡来定制这个配置文件,并在其中添加合适的指令。JTAG探测器的说明文档中包含了这些配置命令的详细语法规则。然而,只有嵌入式开发人员才能创建一个特定板卡所需的独特的配置文件。这需要深入了解处理器和板卡的设计特性。这非常类似于将Linux移植到一块新的板卡上,没有捷径也无法替代。

附录E中包含了一个Abatron配置文件示例,它是针对一块基于飞思卡尔MPC5200嵌入式控制器的定制板卡而编写的。在附录中,你会看到一个定制板卡所必需的设置。注意其中有很多注释,它们详细描述了各种寄存器和初始化的细节。这确保了后续的更新和维护更加容易,也能够帮助你从一开始就能编写出正确的配置文件。

硬件探测器的使用方式一般有两种。一种是通过探测器的用户界面使用它提供的功能,这样的例子包括对闪存进行编程和下载二进制镜像。另一种是将它作为GDB或其他源码级调试器的前端。我们将分别展示这两种使用场景。