基于USB虚拟技术的FPGA远程片内调试方法实现
2016-01-23翟刚毅王静娇姜小祥中国船舶重工集团公司第七二四研究所南京211153
翟刚毅,王静娇,姜小祥,杨 阳(中国船舶重工集团公司第七二四研究所,南京211153)
基于USB虚拟技术的FPGA远程片内调试方法实现
翟刚毅,王静娇,姜小祥,杨阳
(中国船舶重工集团公司第七二四研究所,南京211153)
摘要:为了方便FPGA调试,针对Xilinx公司的FPGA提出了一种远程片内调试方法。该方法主要分调试计算机端和测试板卡端两部?分的实现。调试计算机端开发上层应用软件,创建虚拟USB设备;测试板卡端以ARM为核心,具有网络和USB主机功能,并完成USB到JTAG转换,最终实现调试计算机上通过网络进行远程调试。
关键词:虚拟USB设备; FPGA远程调试; ARM; USB主机;网络传输
0 引言
雷达研制中大量使用FPGA进行预处理,FPGA系统在使用和调试过程中需要通过USB电缆进行bit流下载、chipscope调试等。而下载电缆传输距离有限,在某些狭小空间和无人值守场所急需实现FPGA的远程加载和调试。
本文基于USB虚拟技术针对Xilinx公司的FPGA开发了一种远程调试方法,利用网络接口方便、传输距离远的优点,在FPGA板卡上嵌入相应电路,直接通过FPGA板卡网口连接到调试计算机实现远程加载、调试功能。
1 总体设计
如图1所示,本系统主要包括调试计算机和测试板卡两部分。调试计算机上开发的应用软件通过网络连接板卡,实现FPGA的远程调试。上层应用软件基于MFC编写,并内嵌基于DSF架构的虚拟USB设备。板卡电路核心ARM处理器采用TI公司的TM4C129XNCZAD芯片,USB转JTAG电路采用FTDI公司的FT232芯片。
ARM处理器为每一块板卡分配唯一的IP地址,调试计算机端的应用软件通过IP地址来选择不同的板卡。板卡上电后,ARM对USB设备进行枚举,USB设备信息通过网络上传到调试计算机。应用软件使调试计算机端的Xilinx软件(如impact和chipscope)与板卡无缝连接,从而进行FPGA的加载、调试,就像本地连接了FPGA下载电缆。
图1 系统总体框架
2 调试计算机端软件开发
调试计算机端主要开发上层应用软件,其内嵌虚拟USB设备。在开发的上层应用软件中,用户可以增加或删除相应板卡的IP地址,工作时选择某个IP地址的板卡,与其建立连接,并创建下载电缆的虚拟USB设备,其在操作系统层面上与实际设备没有区别,可以无缝地和Xilinx软件交互。
本文的虚拟设备是基于DSF(Device Simulation Framework)开发的。DSF提供了通过软件编程来虚拟USB设备的架构[1]。DSF编程环境包括一套完成USB虚拟设备中各种组件的COM对象、运行服务和USB2.0 EHCI虚拟控制器,具体架构如图2所示。微软已经提供了可用的虚拟USB控制器,本文主要开发了COM组件。COM组件分为服务器和客户端两部分:服务器即一个描述设备功能的动态链接库,客户端用于控制虚拟设备行为。
图2 DSF架构
2.1 COM动态链接库开发
COM动态链接库实际是一个COM实体类(如CJTAGDevice)的实现,USB设备虚拟器主要使用DSF架构提供的SoftUSBDevice COM组件直接和控制器通信,并处理标准USB设备请求和其他事件等。
图3 SoftUSB对象结构图
SoftUSBDevice对象结构如图3所示,其下属包含了USB设备的配置信息,其中SoftUSBConfiguration、SoftUSBInterface、SoftUSBEndpoint对象分别包含了配置描述符、接口描述符、端点描述符特性。SoftUSBEndpoint同时控制USB数据的输入和输出,本文设置了一个IN端点和一个OUT端点。端点可以使用事件触发(event-driven)或轮询(polled data)模式传输,考虑到传输数据量较大,速度要尽量快,所以选用事件触发模式。开始事件处理前,在各个端点的ISoftUSBEndpointEvents连接点上分别安装事件池,其内部定义了数据传输的事件:主机向设备传输数据时触发OnWriteTransfer事件,设备向主机发送数据时触发On-ReadTransfer事件,标准/厂商请求触发OnDeviceRequest事件。
所有事件都由主机先发起,通知设备,设备再对其作出响应。在事件响应函数中分别添加相应的处理代码,最后返回ACK、NAK、ERR、STALL状态信息,告知主机此次传输是否成功。在设备枚举阶段会触发OnDeviceRequest事件,向ARM端发送标准/厂商请求命令,ARM和实际物理设备通信,从而获取设备信息并反馈给电脑端。枚举成功后,impact/chipscope软件调用电脑端的设备驱动,由虚拟控制器向设备发出读/写命令,触发数据传输事件,实际的数据传输由底层ARM端实现。
2.2 COM控制脚本开发
COM控制脚本创建虚拟设备对象实例,调用动态链接库中的函数,发出设备插拔等各种控制命令[2]。控制脚本可以有多种实现方式,最早使用Wscript的脚本语言,考虑到在应用软件中的内嵌以及界面的美观,改用C + +语言,具体启动流程为:创建DSF根设备对象?检测虚拟控制器是否存在?创建虚拟USB设备对象?从USB根hub中获取一个端口?将新创建的虚拟USB设备对象插入USB根hub中?开始事件处理。
3 基于ARM的测试板卡端开发
测试板卡的核心是TI公司的TM4C129XNCZAD ARM处理器,连接USB转JTAG的电路。图4为ARM的外围电路框图,图5为测试板卡实物图。TM4C129XNCZAD基于ARM Cortex-M4 MCU,是业界首批具有以太网MAC + PHY的ARM Cortex-M4,支持10个I2C端口、2个12位ADC、2个正交编码器输入、3个片上比较器、外部外设接口以及高级脉宽调制输出[3],其丰富的外设使其在完成本系统设计外仍能用于板卡上其他辅助功能(故检、软件加载等)。
图4 ARM外设框图
图5 硬件实物图
ARM处理器上移植了TI公司面向MCU平台、基于抢占式多线程内核的完整实时操作系统RTOS,其组件包括了普及型SYS/BIOS实时内核,网络开发套件NDK TCP/IP协议栈,USB、EMAC、MMC/SD主机及器件协议栈以及类驱动器等。基于该TI-RTOS操作系统设计开发了多线程下的网络、USB传输通信。
在系统中FPGA下载器为USB设备,ARM作为USB主机,需要进行ARM的USB主机开发。
上电后ARM首先进行USB驱动初始化,将其配置为USB Host CDC类,即主机类型,然后周期性地轮询监听USB设备的状态。当有新设备连接时,通过中断传输通知主机,然后调用枚举驱动对USB设备进行枚举。具体枚举过程如图6所示。
图6 USB枚举流程
枚举成功后,一旦接收到USB传输命令即开始数据传输。USB有控制传输、同步传输、中断传输和批量传输[4]4种传输方式,这里主要涉及控制传输和批量传输。ARM通过解析网络命令,从而区分不同的传输类型。具体网络命令协议如图7所示。
图7 网络数据协议
4 结束语
本文介绍了一种基于USB虚拟技术实现FPGA远程调试的方法,主要包括调试计算机端的控制软件
和虚拟USB设备的开发,以及板卡上的ARM和USB 转JTAG电路的设计,最后直接通过板卡上的网络连接到电脑上,即可实现FPGA的加载和调试。
该方法只需利用FPGA板卡上的ARM处理器,并增加USB转JTAG部分电路,具有成本低、占用空间小的特点,可以全面替代目前使用的FPGA下载电缆实现其功能,在方便调试的同时节约了开销。目前该方法已经应用到数字T/R组件中,大大方便了组件的调试工作,即将广泛应用于雷达FPGA信号处理板卡。
参考文献:
[1]张帆,史彩成,等.Windows驱动开发技术详解[M].北京:电子工业出版社,2008.
[2]陈林虎.基于DSF架构的USB设备虚拟[J].计算机系统应用,2011(2),221-222.
[3]Texas Instruments Incorporated.Tiva TM4C129 XNCZAD Microcontroller Data Sheet.2013,58-61.
[4]Jan Axelson.USB开发大全[M].李鸿鹏,等译.北京:人民邮电出版社,2011.
Realization of a FPGA remote on-chip debugging method based on USB virtual technology
ZHAI Gang-yi,WANG Jing-jiao,JIANG Xiao-xiang,YANG Yang
(No.724 Research Institute of CSIC,Nanjing 211153)
Abstract:A remote on-chip debugging method for the FPGA of Xilinx is proposed to facilitate the FPGA debugging.This method mainly consists of the PC and the test board.The high-level application software is developed on the PC with the USB virtual device created.The test board with the ARM as its core has the functions of the network and the USB host,and completes the USB-to-JTAG conversion.Finally,the remote debugging is realized via the Ethernet.
Keywords:USB virtual device; FPGA remote debugging; ARM; USB host; network transmission
作者简介:翟刚毅(1978-),男,高级工程师,硕士,研究方向:雷达信息处理;王静娇(1990-),女,助理工程师,硕士,研究方向:雷达信息处理;姜小祥(1984-),男,工程师,硕士,研究方向:雷达信息处理;杨阳(1989-),男,助理工程师,硕士,研究方向:雷达信息处理。
收稿日期:2015-03-15;修回日期:2015-04-02
文章编号:1009-0401(2015)02-0042-03
文献标志码:A
中图分类号:TP31