×
嵌入式 > 嵌入式开发 > 详情

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

发布时间:2020-07-09 发布时间:
|

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.


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
发明专利在疫情影响下的逆势增长