微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > GDB RSP协议与USB通信在嵌入式调试系统中的应用

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

时间:11-14 来源:互联网 点击:

断系统;多数据指针。

  

  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所示。

  

  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平台的嵌入式应用程序的开发更加方便,缩短了开发周期并提高了下载目标程序的速度。该调试系统已经通过测试并通过了国家重点项目的验收。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top