P9 GDB通过JTAG接口连接调试目标平台
时间:2026-01-20
时间:2026-01-20
P9 GDB通过JTAG接口连接调试目标平台
GDB通过JTAG接口连接
调试目标平台
作 者:
Steven Horne
RealView调试工具 产品经理ARM 公司
概述
现在越来越多的OEM厂商使用
步执行,设置断点,检查内存,或者其他的一些调试操作。
GDB通常需要一些特定的程序
GNU的工具链来开发基于嵌入式Linux系统的应用程序。传统的设计流程是用GDB的调试器通过专门的通信端口,比如串口或者以太网口,连接驻留在目标平台上的GDB stub/server程序。但是现在的大多数产品追求低成本,所以用一个ICE通过JTAG口来连接GDB调试器可以省去专门的通信调试端口,以达到节省系统开发成本的目的。
本文总结了一些GDB/JTAG-ICE的
(GDB stub)驻留在目标平台上,使得主机能够通过一定的通信协议对目标平台进行调试操作,比如访问目标平台的寄存器或者内存。像Linux这样的操作系统,支持通过运行一个单独的gdbserver进程,来完成和运行着GDB的主机的通信连接,比如TCP/IP协议。
要得到运行在目标平台上的GDB
配置连接方式,和这些连接方式组合带来的好处,比如支持非侵入性的(non-intrusive)Linux内核引导,甚至Linux应用程序和设备驱动的同时开发调试等其他各种调试需求。介绍
Linux操作系统环境通常都是和
stub或者gdbserver这些程序,首先要把这些代码移植到目标平台上,这是一个必须在移植嵌入式Linux内核前做的一个额外的工作。而且怎么样把这些代码烧录到目标平台也是一个需要考虑的问题,因为这时我们不能像通常那样通过GDB客户端来烧写到目标平台。
现在有了一种替代传统的使用串
Unix的桌面应用程序开发联系起来的,但是随着嵌入式Linux内核的日益普及,嵌入式开发者们越来越多的也开始使用GNU的免费开发工具链,包括GCC-GNU的编译器,和GDB-源代码级的调试工具。
GDB可以远程调试程序,在主机上运行GDB客户端通过串口、以太网口或者其他的一些通信端口,和需要调试的目标平台相连接,使得开发者能够完成单
口(缓慢)或者以太网口(昂贵)的方法。本文将描述怎样使GDB连接ICE通过JTAG来控制调试目标平台的。使用JTAG运行控制单元的几种方式
下图列举了使用主机运行GDB,
JTAG运行控制单元,连接目标平台的几种方式。(为了更好的理解JTAG运行控制单元,本文在图中用了RealView ICE来代替)
P9 GDB通过JTAG接口连接调试目标平台
调试操作,而不会互相影响。
RVI还可以同时连接和调试有多个
CPU内核的目标平台,但是如果这个目标平台上有非ARM的CPU内核的话,JTAG的扫描时可能会遇到问题。所以,在使用GDB连接RVI时,告诉RVI哪个设备是需要调试的,还有JTAG的时钟频率之类必要的信息是非常重要的。
目前为止,用于GDB的JTAG连接只
能调试单一的CPU,并且这个连接是不能像通常那样共用的,比如RVD可以调试另
高性能。
第一种的Run/Stop Debug方式和传
上图的前三个例子都是直接地实现。
一个关于RVI配置过程的例子:固定频率和自适应时钟)
1. 设置JTAG扫描链的时钟频率(包括 2. 配置JTAG扫描链(指出哪里是什么)3. 选择JTAG扫描链上的设备(哪一个
连接和配置GDB和JTAG:
当GDB连接远程调试目标平台时,
ARM CPU)
已知的状态下连接,所以我们要先 reset处理器,然后把寄存器归零。经配置好了处理器的状态),比如,取消RVD的连接。
以上步骤可以由自动脚本来完成。GDB通过RVI来连接目标平台的步骤4. 注意:因为GDB需要处理器在一个
当然如果要达到高性能,还有一些技术难题需要SoC和工具开发厂商克服。(比如JTAG的时钟频率问题)
在第二种Non-stop Debug中,开源代码GDB stub可以自行修改以便于使用ARM CPU提供的调试通讯信道(DCC),这样免去了使用一个专门的串口或者以太网口的开销。调试主机上的GDB通过驻留在RealView ICE上的TCP/IP协议和目标平台上的GDB stub通信,由DCC专门负载GDB协议包的传送。
这样的一个stub程序可以是一个为
第四个例子实际上就是把JTAG控制单元变成以太网桥接。作为连接目标平台的stub程序的功能的扩展,DCC还可以在普通的GDB协议上负载IP包。当然,这时候目标平台上必须要运行一个IP协议栈,比
注意:在这种方式里,当CPU停止
如Linux这样的操作系统。
运行时,中断处理程序也同时停止运行,这在某些实时系统调试中并不是总能带来方便。
统的嵌入式软件调试很类似,都是非侵入性的。JTAG运行控制单元(RVI)提供了GDB一组协议能够控制目标平台的CPU,使得CPU在调试分析它的内部状态时是停止运行的。
一个DSP,但不能在GDB调试CPU的时候去连接这个CPU内核。
5. 取消选定的设备(因为在第四步已
它假定认为目标平台的CPU已经配置好可供使用了,然后它会立即询问目标平台(类似关于寄存器的值之类的信息),这时用户才可以输入调试命令。因此,JTAG控制单元必须先被配置好后GDB才能连接目标平台,一般这样的配置可以通过一系列的初始化流程来完成,比如RealView ICE(RVI)就可以通过teln …… 此处隐藏:1415字,全部文档内容请下载后查看。喜欢就下载吧 ……