P9 GDB通过JTAG接口连接调试目标平台

时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……

P9 GDB通过JTAG接口连接调试目标平台.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219