GDB RSP协议与USB通信在嵌入式调试系统中的应用

发布者:温馨幸福最新更新时间:2013-11-14 来源: dzsc关键字:GDB  RSP协议  USB通信  调试系统 手机看文章 扫描二维码
随时随地手机看文章

  1 引言

  调试嵌入式程序通常采用一种称为交叉调试的调试技术来调试已下载到嵌入式开发板中的程序。该技术可以允许用户通过PC机端的调试器以某种方式远程控制目标开发板上被调试程序的运行方式,并具有查看与修改目标开发板上内存单元、寄存器以及被调试程序中变量值等功能。采用硬件仿真器来调试嵌入式程序是常用的一种开发方式。

  一般嵌入式CPU都设计有JTAG口来进行硬件仿真调试。硬件仿真器通过JTAG口输入该CPU型号专有的JTAG时序来控制CPU的运行,并通过JTAG指令来观察CPU以及开发板上硬件设备的运行情况,主要是各种寄存器以及相关内存地址空间的实时数据。

  同时将嵌入式软件的运行结果通过JTAG口按照特定的JTAG时序输出反馈给硬件仿真器,硬件仿真器再通过USB或者串口、并口等总线返回给PC机端的调试软件。

  硬件仿真器通常采用USB总线与PC机端的调试软件通信,因此硬件仿真器需要采用相关的USB芯片来支持USB通信功能,同时PC端的调试软件也需要开发针对该款USB芯片的驱动功能以支持与硬件仿真器USB芯片的数据交互。此外,PC端的调试系统还包括调试器(比如GDB调试器)、协议转换器以及位于它们之间的远程调试协议(通常是GDB RSP协议),这些都是针对特定型号CPU定制的。

  本文通过对GDB RSP协议与USB通信技术的研究与应用,针对一款具有自主知识产权的ZW100DSP处理器成功开发了一套调试系统,从而为该款DSP的应用提供了极大的便利。该调试系统的框架如图1所示。

  

  2 GDB RSP协议与EZ-USB FX2芯片概述

  2.1 GDB RSP协议

  GDB 远程串行通信协议RSP(GDB RemoteSerial Protocol)是基于消息的 ASCⅡ码字符流协议,规定有服务器端(RSP Server)与客户端(RSP Client)之分,通常在GDB中实现客户端功能,而服务器端通常另起一个进程实现与GDB的RSP协议通信,两者之间的数据交互一般采用进程间的通信方式来实现,常用的有网络socket通信等。

  调试系统的RSP Server和RSP Client双方通过RSP协议进行数据的接收和发送。RSP 数据包包含了调试信息和校验两个部分。调试信息是以“$”作为开始、以“#”作为结尾的ASCⅡ码字符流,后面跟两个字节的校验码,该校验码的值是调试信息中所有字符的 ASCⅡ码相加后取256的模,该值用两个十六进制字符表示,数据包格式如图2所示。

  

  接收方接收到数据包后进行解析,如果接收到的数据包正确,会返回响应信息“+”字符,如果接收到的数据包出错,需要重新传送数据包,则返回响应信息“-”字符。发送方通过接收方发回的响应信息判断数据是否发送成功。

  RSP协议的调试命令是通过第一个ASCⅡ码字符进行区别的。以下是比较常用的调试命令及其功能:

  ● C:报告目标CPU挂起的原因;

  ● c、C、s和S:恢复运行或者单步调试目标CPU;

  ● D:与目标板断开连接;

  ● g和G:读写通用寄存器;

 

  ● m和M:读写内存地址空间;

  ● p和P:读写指定寄存器;

  ● X:加载二进制数据;

  ● z和Z:清除或者设置断点。

  2.2 Cypress EZ-USB FX2功能

  硬件仿真器采用Cypress的EZ-USB FX2芯片与PC端的调试进程(RSP Server)进行通信。Cypress公司的EZ-USB FX2系列芯片是世界第一个集成USB 2.0协议的微处理器,它支持12 Mb/s的全速传输和480 Mb/s的高速传输,可使用4种USB传输方式:控制传输、中断传输、批量传输和同步传输;完全使用USB 2.0,并向下兼容USB1.1.[page]

    EZ-USB FX2的前身是EZ-USB,其芯片固件也是存储在主机上而不是芯片内部,显着特点是代码容易升级。芯片结构也与EZ-USB类似,主要包括USB2.0收发器、串行接口引擎、增强型8051、16 KB的RAM、4 KB的FIFO存储器、I/O口、数据总线、地址总线和通用可编程接口GPIF.

  采用Cypress EZ-USB FX2芯片进行USB通信传输性能稳定,其硬件性能可以进行灵活配置。该芯片的特点在于:

  (1)USB2.0单芯片解决方案,包括USB2.0收发器,串行接口引擎(SIE)和增强型51内核。可“软配置”RAM,大小为16 K,可取代传统51的RAM和ROM,程序可以通过USB口下载或者通过外部EEPROM装载,同时也支持外界存储设备。

  (2)通用可编程接口GPIF.GPIF是FX2一个重要技术,可设置为主从模式,主从模式下可对外部FIFO、存储器、ATA接口设备进行高速读写操作,从模式下外部主控器(如DSP,MCU)可把GPIF端口当做FIFO进行高速读写操作;支持与外设通过并行8位或者16位总线传输;支持通过GPIF编程工具编程,灵活产生各种波形。支持多CTL输出和RDY输入。

  (3)增强工业级8051内核:支持48 MHz时钟;4个时钟指令周期,在时钟为48 MHz时,单指令执行时间为83.3 ns;两个UART;三个TIMER;多中断系统;多数据指针。

  

  3 研究与实现

  GDB RSP协议与USB通信技术在调试系统中主要由三部分组成:EZ-USB FX2芯片USB通信功能开发、RSP Server与GDB的RSP通信、RSP Server与EZUSBFX2芯片的USB数据交互。在进行功能开发之前,我们需要将EZ-USB FX2的开发包安装到PC机上,该开发包主要包括了EZ-USB FX2芯片的USB驱动、EZ-USB FX2进行USB开发所需的链接库和相关头文件、增强型8051单片机开发所需的头文件等开发要件。

  3.1 EZ-USB FX2芯片USB通信功能开发

  为了简化固件编程,Cypress提供了固件编程框架,开发人员只需要在此基础上添加少量代码就可以完成固件编程。固件编程框架已经将USB标准请求和USB电源管理包括进去了,并且提供了任务调度函数,只需要在这任务调度函数中添加部分代码就完成了固件编程。

  上电复位时,固件先初始化一些全局变量,接着调用初始化函数TD_Init(),初始化设备到没有配置的状态和打开中断,循环1 s后重新枚举,直到端点0接收到SETUP包退出循环,进入循环语句while,执行任务函数,函数包括:

  (1)TD_POLL()用户任务调度函数;

  (2)如果发现USB设备请求,则执行对应的USB请求;

  ( 3 ) 如果发现U S B 空闲置位, 则调用TD_Suspend()这个挂起函数,调用成功则内核挂起,直到出现USB远程唤醒信号,调用TD_Resume(),内核唤醒重新进入while循环。

  3.2 PC端USB通信开发

  PC端USB通信的开发主要由三部分组成:设置要读写的内存空间地址、读内存地址空间、写内存地址空间。这三个功能主要由3个函数来实现:voidSetAddr(DWORD addr)、int ReadReg(ULONGaddr, ULONG *val)、int WriteReg(ULONG addr,ULONG data)。

  3.2.1 void SetAddr(DWORD addr)函数的实现

  SetAddr函数的实现过程可以由图4来表示。

  

  3.2.2 int ReadReg(ULONG addr, ULONG *val)函数的实现

  考虑到GDB调试器要频繁读取DS P 内核寄存器及相关的内存地址空间内容, 因此USB采用异步通信的方式来完成读取功能, P C 端的RSP Se r v e r 通过启动传送线程实现数据的异步传输。R e a d R e g 函数的实现流程如图5 所示。

  3.2.3 int WriteReg(ULONG addr, ULONG data)函数的实现

  在调试过程中,通常写寄存器的操作由程序员在调试过程中手动实现,USB通信量相比较于读操作要小得多,因此本调试系统采用简单的Write函数操作来实现DSP内存地址空间的写操作,其实现流程如图6所示。

[page]

   

  

  3.3 RSP通信功能开发

  RSP通信功能的开发主要包括RSP Client和RSP Server功能的开发,其中RSP Client内嵌于GDB调试器中实现。GDB与RSP Server的通信主要通过基于TCP/IP的网络Socket编程来实现。在RSP Server中,RSP命令处理函数主要用来对RSP的各种命令包在解析之后作出符合DSP条件的具体操作,该命令处理函数对RSP命令包的处理情况如表1所示。

  在实现了GDB RSP协议的各个命令包之后,就可以将GDB调试命令映射到RSP命令包的组合实现常用的GDB调试命令,如表2所示。

  

  

  4 结束语

  GDB RSP协议与USB通信在嵌入式调试系统中发挥了重要作用。本文给出了一种在嵌入式调试系统中应用GDB RSP协议与USB通信的应用案例,解决了通过USB对特定DSP开发板的硬件仿真调试问题,使得该DSP平台的嵌入式应用程序的开发更加方便,缩短了开发周期并提高了下载目标程序的速度。该调试系统已经通过测试并通过了国家重点项目的验收。

关键字:GDB  RSP协议  USB通信  调试系统 引用地址:GDB RSP协议与USB通信在嵌入式调试系统中的应用

上一篇:基于USB3.0电路可靠性的PTC/ESD方案
下一篇:串口服务器RS232和485转以太网模块的选购技巧

推荐阅读最新更新时间:2024-05-02 22:51

基于USB从机技术的绝缘电阻表自动检定系统通信接口设计
随着我国电力工业的快速发展,电气设备预防性实验成为保障电力系统安全运行和维护工作的一个重要环节 。绝缘诊断是检测电气设备绝缘缺陷或故障的重要手段。绝缘电阻表作为测试绝缘电阻的专用仪表,要保证其测量精度在国家规定范围之内,须定期进行检定。目前的绝缘电阻表检定系统均为孤立检测装置,其报表生成和对历史数据的查询均由人工完成,已无法满足仪表检定行业对该检定装置的智能化要求 。 USB作为一种基于令牌式且对外设有统一接口的新型高速串行标准总线,具有使用便捷、易扩展、低成本、低干扰、速度快等特点 ,将USB从机技术应用于绝缘电阻表自动检定系统,使现有孤立的检定装置 与主机有机地融合成智能化检定装置,实现检测数据快速上传,配合主机软件系统和数据
[工业控制]
基于<font color='red'>USB</font>从机技术的绝缘电阻表自动检定<font color='red'>系统</font><font color='red'>通信</font>接口设计
德州仪器在 C2000™ Piccolo™ 实时浮点微控制器上集成 USB,可实现移动现场诊断与通信
2013 年 2 月 18 日,北京讯 日前,德州仪器 (TI) 宣布推出集成 USB 连接功能的最新 32 位实时 C2000™ Piccolo™ F2806xU 微控制器 (MCU),为客户开发需要现场连接的终端产品助一臂之力。 在消费类及工业电机控制系统、工业电源系统、电信及数据系统、风力与太阳能发电、普通电力电子应用等众多应用中,能够进行存取诊断并进行现场动态修改非常重要。有了 Piccolo F2806xU MCU,TI 客户可便捷地为其应用整合 USB 连接功能。 Piccolo F2806xU MCU 的特性与优势: • 集成型 USB 2.0 及 CAN 外设可充分满足现场移动通信需求; • 支持同步双通道采样
[单片机]
应用调试-----使用strace命令来跟踪系统调用
使用strace命令来跟踪系统调用(open/read/write): 1、压缩文件在主光盘debug目录下面,先解压: tar xjf strace-4.5.15.tar.bz2 2、进入strace-4.5.15文件,打补丁: patch -p1 ../strace-fix-arm-bad-syscall.patch 3、配置: .configure --host=arm-linux CC=arm-linux-gcc 4、编译: make 5、在strace-4.5.15目录下生成一个名为strace的可执行程序,将其复制到开发板根文件系统中bin/目录下面即可使
[单片机]
SylixOS的BSP开发实例之S3C2416 【第四篇】S3C2416 的 GDB 初始化脚本
#connect to jlink jdbserver target remote localhost:2331 #reset target monitor reset #select endian monitor endian little # WTCON INTMSK1 INTMSK2 INTSUBMSK INTMOD1 INTMOD2 monitor long 0x53000000 = 0x00000000 monitor long 0x4A000008 = 0xFFFFFFFF monitor long 0x4A000048 = 0xFFFFFFFF monitor long 0x4A00001C = 0x
[单片机]
基于USB2I2C接口的CMOS图像传感器在线调试系统
CMOS图像传感器是近年来发展最为快速的新型固态图像传感器,它利用其自身的工艺和集成的特点将光电成像阵列与信号模拟放大和数字图像处理电路集成于单芯片内,与CCD图像传感器相比,具有体积小、功耗低、控制简单、价格低廉等优点。伴随CMOS工艺的不断进步和完善,以及其自身缺点如noise、颜色还原度、动态范围等筹的改进,CMOS图像传感器的应用越来越广。以上CMOS图像传感器的诸多缺点大部分可以在其流片后通过调试克服或者改进,所以对CMOS图像传感器的快速调节显得尤为重要。 USB(Universal Serial Bus)总线接口是一种PC机与外围设备间高速通信接口,具有速率快,热插拔等特性,可以广泛应用于与计算机通信;I2C(In
[工业控制]
基于<font color='red'>USB</font>2I2C接口的CMOS图像传感器在线<font color='red'>调试</font><font color='red'>系统</font>
国网西北分部完成河西电网稳控系统调试
12月9日,从国网西北分部获悉,750千伏河西电网加强工程稳控系统经过严格测试,顺利通过出厂调试验收。 据了解,稳控系统是电网的第二道防线,是750千伏新疆与西北联网通道的重要组成部分,更是联网通道输送能力的重要保障。750千伏河西电网加强工程的建设投产涉及西北—新疆联网工程安控系统中9个变电站20套装置的升级改造,覆盖甘肃、新疆、青海三省区。因750千伏河西电网加强工程工期紧、任务重、且分阶段投产,造成安控系统升级改造工作工作量大、涉及面广、协调难度大、电网过渡阶段控制方案复杂。西北分部精心组织相关省调、设计、建设、科研单位,经过五个月的奋战,圆满完成了稳控系统设计施工、分阶段调试、最终方案策略分析计算、稳控程序开发等工作
[新能源]
OK6410A 开发板 (八) 84 linux-5.11 OK6410A arm-gdb+kgdb+串口 调试 linux
理论知识 调试过程 调试过程都是 这样子的 : 让核心停下来,查询信息,让核心继续运行 我们看一下 kgdb 是怎么做的 kgdb: 让核心停下来: 1. linux启动前期会自动进入kgdb 或 2. linux启动完成,挂载了procfs,用echo g /proc/sysrq-trigger 来进入 kgdb 查询信息 1. bash#gdb vmlinx 2. gdb target remote /dev/ttyS0 3. gdb set remotebaud 115200 // set serial baud 115200 4. gdb bt // 查询信息 6. gdb
[单片机]
复杂的实时嵌入式系统调试
  随着实时嵌入式系统的复杂程度不断提高,低效率的调试方法的成本日益增加。鉴于当前嵌入式应用的复杂性还有继续上升的趋势,对这些系统的调试将成为加速产品上市和提供鲁棒性最终产品的关键因素。随着应用对多线程和中断嵌套的使用,开发商的大部分时间目前都花在调试上。应用的实时属性使得将伴随同时发生多个事件的故障问题孤立起来变得更为困难。本文将讨论常见的调试问题以及预防和检查这些故障问题的一些方法。   从历史角度上来看,嵌入式应用代码的调试流程可以分为两类。第一类调试流程是回答 “我的代码现在执行到哪里?” 的问题。当开发商依靠打印语句或者LED的闪烁来指示应用程序执行到某个节点的调试方法时,往往就属于这种情形。如果开发工具支持这种调试方法,
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved