新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > GDB RSP协议与USB通信在嵌入式调试系统中的应用

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

作者:时间:2013-11-14来源:网络收藏

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

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

  (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 研究与实现

   技术在中主要由三部分组成:EZ-USB FX2芯片功能开发、RSP Server与的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)函数的实现

  考虑到调试器要频繁读取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所示。

数字通信相关文章:数字通信原理


通信相关文章:通信原理




评论


相关推荐

技术专区

关闭