王 兵 武 杰 张 杰
(中国科学技术大学近代物理系,中国科学院核探测技术与核电子学重点实验室,物理电子学安徽省重点实验室 合肥 230026)
基于ARM的通信接口测试系统的开发
王 兵 武 杰 张 杰
(中国科学技术大学近代物理系,中国科学院核探测技术与核电子学重点实验室,物理电子学安徽省重点实验室 合肥 230026)
分布式数据采集系统各子系统间的连接测试,需要专门的接口测试工具。随着私有协议的广泛使用,设备生产、维修中的调试测试问题也大大增加。这些问题往往无法使用传统的通用协议测试仪器进行测试,本文提出一种由测试模块加PC机方式构成专用接口测试系统的开发策略,并且重点介绍基于ARM的测试模块设计实现方法。文章分析了测试模块的接口特性、基本结构和软件流程,随后探讨了其与PC组成测试系统的应用方法。实验结果表明,该测试系统较好地满足了专用接口测试需求。这种测试模块加PC机构成简便系统的开发思路,为此类专用接口测试系统的快速开发提供了一种途径。
分布式数据采集系统,私有协议,高速数据传输协议,接口测试,ARM
分布式数据采集系统广泛应用于核聚变实验装置、同步辐射装置、核电站[1–3],也是军事、勘探和工业测控技术的发展方向。这些系统一般分为数据采集、数据处理、数据存储、自动控制等若干模块,各模块通过事先定义的接口进行连接。在基于模块的开发方式中,组成系统的各个模块子系统分别独立地并行开发。为保证各模块间的互连互通,系统联调前需要专门的测试工具,通过接口对各模块进行测试。
这些采集系统都针对一些专门应用,现有的标准通信协议往往无法满足它们的要求,也即这些系统的最优化设计并非标准的通信协议,而是非标准的私有通信协议,并由此来定义系统各模块的接口。对这些私有协议接口的测试,很难采用通用仪器,往往需要自行开发。
ARM 嵌入式芯片由于具有丰富的外围接口,非常适于接口测试模块的快速开发。本文介绍了利用ARM芯片快速开发专用接口测试模块的设计思路和关键技术,对接口测试系统的应用进行了讨论。
分布式数据采集系统由多个节点构成,每个节点单独完成自己的数据采集和分析任务,采集节点间由通信线缆连接,进行串行通信,最终将采集数据上传给主机。实时性是分布式数据采集系统的重点考虑问题,通行的做法是定义适合系统自身特点的高效精简协议。
以我们研制的地震信号采集系统为例:根据应用要求和特点,定义了私有高速数据传输协议HDTP(High-speed Data Transfer Protocol)。HDTP 协议的数据和命令按以太网MAC帧封装,格式如图1所示。由图1,HDTP协议对通行的网络协议进行了大量精简,帧内封装数据的有效数位比率也大大提高。
图1 HDTP协议格式Fig.1 HDTP protocol format.
该系统连接各模块节点间的传输大线(传输大线是地震仪器中对数据通信线缆的一种称谓,一般由几对双绞线加保护外套构成),分别由两对双绞线实现。传输大线的数据通道和命令通道是分离的,称为上行通道和下行通道,采用不对等信号单向传输设计,其上行通道传输HDTP协议数据帧,下行通道传输HDTP协议命令帧。
系统中采用的协议一旦确定,则各模块的接口也需要做相应的设计。接口一般可以划分为若干子接口,子接口尽可能采用某种标准定义,这样便于开发,也便于独立调试。拟开发的专用接口测试系统的接口规程必须根据需要测试的接口确定,其协议也要相匹配。
本文例子中,采集系统各节点对本地数据按HDTP协议进行封装后向上级发送,收到上级节点命令进行解析后给予响应。上行通道采用 100M MII(Medium Independent Interface),下行通道采用RS232。因此,待测节点接口中主要包含 MII和RS232子接口。
媒体独立接口MII是IEEE802.3u规定的与介质无关的接口,负责 MAC和以太网 PHY之间的通信[4]。MII接口一共有16根信号线,可以分成发送信号线、接收信号线以及网络状态信号线三组。
发送信号线由发送时钟 TX_CLK、数据线TXD[3:0]、发送使能TX_EN和发送错误TX_ER组成。接收信号线由接收时钟 RX_CLK、数据线RXD[3:0]、接收有效 RX_DV和接收错误 RX_ER组成。任何数据帧收发前,以同步位‘0x5D’为引导,图2给出了MII接口的收发时序,其工作速率可达100 Mbps。
图2 MII时序Fig.2 MII timing.
RS232接口是 DTE(数据终端设备)和 DCE(数据通信设备)之间的一个接口,来源于串行通信的国际标准。数据收发分开,支持全双工。在短距离(<15 m)较低波特率串行通信中得到广泛应用。信号线的电压均为负逻辑关系,不使用对方的传送控制信号时,仅需“发送数据”、“接收数据”和“信号地”三条接口线。
需开发的专用接口测试系统设计要求为:接口匹配待测节点接口硬件规范;对待测节点下达各种命令,接收并识别待测节点上传的数据。所谓识别命令和正确接收数据,即测试系统对收到的命令和数据具有协议解析能力;所谓下达命令和发送测试数据,即测试系统具有数据封装能力。测试系统还应该能正确保存部分接收数据供进一步分析。
为快速设计实现这一测试工具,我们提出一种由接口测试模块加上PC机共同构成简便高效的专用接口测试系统的实现方法。此方法充分利用了PC机强大的计算能力和丰富的软件资源,可大大简化对测试模块的硬件要求。
我们选取支持上述接口的芯片搭建测试模块的电路,同时在软件上实现协议解析和转换。ARM微处理器集成度高,软件支持好。利用ARM集成的强大片内外围接口电路,辅以必要的外围芯片,加上针对具体应用的软件,便形成一个简便高效的嵌入式系统,可快速实现专用接口测试所需的各项功能[5]。
选用Samsung公司的芯片S3C4510B,这是一款基于以太网应用的高性价比处理器,内含一个低功耗的16/32位ARM7TDMI RISC处理器核,支持2个UART通道和1个以太网MAC控制器。由于以太网MAC控制器,支持100M MII和带缓冲的DMA接口(Buffered DMA Interface, BDI),因此特别适合高速数据的通信。
构成接口测试模块的外围器件主要有:Flash存储器 AM29LV160DB90EC、SDRAM 芯片MT48LC4M32B2-7G、串口芯片MAX3232E。系统选择 10 MHz的有源晶体振荡器,其频率经过S3C4510B内部PLL电路倍频后,最高可达50 MHz。图3为接口测试模块示意图。
接口测试模块通过排线接口管脚与待测节点接口的管脚相互连接。由于接口测试模块只利用S3C4510B的MII接收数据,故排线与待测节点只连接8根接收信号线。S3C4510B有两个RS232接口,其中一个用于与上位PC机的通信,采用DB-9连接器;另一个用于与待测节点的命令交换,只使用RXD、TXD、GND三根信号线。
图3 测试模块示意图Fig.3 Schematic diagram of the testing module.
命令通道采用UART协议,字符格式为1个起始位,8个数据位,1个停止位。传输时还采用了HDLC封装。协议帧封装时,为了不把数据中出现的协议字符当成帧头或帧尾,确保帧的完整性,采用数据转义的办法。在接收时逐个检查数据内容,当遇到协议字符0x7E时,连续传送2个字符:0x7D和0x5E,以实现协议字符的转义;当遇到转义字符0x7D时,连续传送2个字符:0x7D和0x5D,以实现转义字符的转义。
协议解析就是要根据协议帧格式,去除帧封装时的帧头帧尾标志和填充的各种控制字符,将帧中所封装的数据信息部分按照测试的需要格式配置输出[6]。
为提高测试模块的硬件响应速度,其软件直接由启动代码和应用程序两部分构成。这些代码编译成映像文件后,经JTAG口烧写到Flash芯片中。
启动代码的功能:CPU的初始化和内存重映射。将Flash连接到ROMCON0处,这样上电复位时读的第一条指令是Flash的0x00000000处的值,首先进行ROM和SDRAM的初始化,设置各个部件的时钟和片选。将BootLoader拷贝到SDRAM中,然后在SDRAM运行程序。
应用程序是针对具体测试要求而设计的,在程序前部首先要进行硬件寄存器初始化、栈指针初始化、数据区初始化等工作,此时可以设置RS232的波特率,然后再调入主程序语句。该接口测试模块的软件主要实现MII接口数据的接收和两个RS232接口的命令收发,辅以数据的识别、封装、转换等功能。MII接收数据帧实现是整个软件中相对复杂的部分。
通过MII接口接收一个完整的数据帧,包含以下五个部分[7]:帧间隔、前导段、帧起始符 SFD、数据以及帧结束符。其中帧起始符的比特序列为10101011,可以通过寻找“0x5D”这个关键字来判断帧的起始,主要流程如图4。
图4 MII数据接收流程图Fig.4 MII data receiving process.
利用 ARM 的丰富接口资源可使设计工作简化,还可充分利用PC机的软件资源以最大限度地发挥测试模块的能力,是快速实现专用接口测试系统的关键。接口测试模块在系统中的位置如图5所示,测试模块通过排线与待测节点接口连接,串口接PC机。实际上由接口测试模块与PC机共同搭建了一个非常灵活的简便测试系统。用户可在PC机上利用串口调试助理软件编排各种测试命令,方便地与测试模块进行双向通信,进行显示控制和交互操作。用户通过PC机串口发送采集命令给接口测试模块,接口测试模块再通过专用接口中的RS232将采集命令发送给待测节点,待测节点通过传输大线向两边的仿真节点转发命令。两个仿真节点收到采集命令后分别产生固定个数的测试数据帧,以设定速率向通过传输大线发送给待测节点,待测节点将这些测试数据帧通过专用接口中的MII接口传给测试模块。
图5 测试示意图Fig.5 Testing scheme.
实际测试过程如下:
数据帧测试:仿真节点向待测节点发送测试数据帧,待测节点接收后通过专用接口向测试模块上传。测试模块的ARMS3C4510B中的MAC控制器,以 DMA操作将收到的测试数据帧存储到本地SDRAM 中,同时进行接收帧数量统计工作,统计结果通过串口发送给上端PC机。测试数据全部接收完毕后,测试模块还可将保存在SDRAM中的数据帧通过串口上传给PC机,做进一步离线校验分析。如果校验通过就验证了待测节点能正确处理并发送数据。
命令帧测试:测试命令通过RS232接口排线下传给待测节点,经待测节点转换后,广播发送,左、右端仿真节点进行接收。通过对命令内包含的地址和指令内容进行判别,仿真节点给出相应的响应(在数据通道正常情况下,也可由仿真节点生成反馈信息经数据通道返回测试模块)。
按照上述测试方法,我们设定两端仿真节点以不同的数据率产生测试数据帧,对待测节点进行了多次接口测试实验。测试结果表明,在两边仿真节点以40 Mbps速率发送测试数据帧的情况下,测试模块仍能够正确接收这80 Mbps的数据;测试模块通过RS232向PC机转发数据,在9600、19200和38400波特率(仿真节点发送数据率低于转发速度)下,连续40 h测试均正确上传数据。由测试模块加PC机共同构成的简便测试系统可以用较低成本较好地满足专用接口测试的需要。
本文介绍的专用接口测试系统,在大型地震信号采集系统样机的研制、测试、联调及后期维护中发挥了重要作用。随着采用私有协议接口的数据采集系统和测控系统的大量应用,设备生产、维修中的调试问题也大大增加,接口测试系统成为一个必备的测试工具。如何为不同接口快速开发出专用测试系统,是常须面对的问题。ARM 芯片外围接口全、软件资源丰富、价格便宜、功能稳定,便于开发出针对性很强的接口测试模块。本文开发的基于ARM的测试模块,实现了收包、发包、下达命令、帧统计等功能。若系统的私有协议发生改变,则可修改软件使该模块对新协议具有解析能力,灵活方便。这种模块加PC构成简便系统的开发思路具有一定的通用性,为专用接口测试系统的快速开发提供了一条解决途径。
1 王喜鹏, 陈灼民, 钱静, 等. 微计算机信息, 2005,21(10-1): 78–80
WANG Xipeng, CHEN Zhuomin, QIAN Jing,et al.Control & Automation, 2005, 21(10-1): 78–80
2 Li W M, Li J Y, Liu G F,et al. EPICS at NSRL [C].Proceedings of the 2ndAsian Particle Accelerator Conference, 2001. 678–680
3 徐慧, 黄文君, 江竹轩, 等. 核动力工程, 2006, 27(4):93–96
XU Hui, HUANG Wunjun, JIANG Zhuxuan,et al.Nuclear Power Engineering, 2006, 27(4): 93–96
4 IEEE Computer Society, IEEE std 802.3TM-2005.SECTION TWO, 9–59
5 Fang Y J, Hu J. Development of Innovative Electrical Parameter Measuring Instrument with Net Link Access Based on ARM and uClinux. International Conference on Information Acquisition, 2004. 168–171
6 Von Gordon A F J, Hancke G P. Protocol conversion for real-time energy management systems. Factory Communication Systems, 2004. Proceedings. 2004 IEEE International Workshop on 22–24 Sept. 2004, 319–322
7 IEEE Computer Society, IEEE std 802.3TM-2005.SECTION ONE, 83–89
CLCTP274.+2
Development of a communication interface testing system based on ARM
WANG Bing WU Jie ZHANG Jie
(Fast Electronics Lab, University of Science and Technology of China, Hefei 230026, China)
As the use of private protocols becomes popular in distributed data acquisition system, it is urgent to test interfaces of these systems. The interfaces cannot be tested by general communication protocol testing equipments, so a simple strategy of how to develop an efficient custom interface testing system with a testing module based on PC is proposed. In this paper, we focus on the design and implementation of how to realize an interface testing module based on ARM. Analyses of the interface characteristics, basic structure and software processes of the interface testing module, and application method of interface testing with the PC and the interface testing module, are discussed.Experimental results show that the custom interface testing system well meets the testing requirements. This proposes a way to do a rapid development of custom interface testing systems.
Distribution data acquisition system, Private protocol, High-speed data transfer protocol, Interface testing, ARM
TP274.+2
国家重大科技专项(2008ZX05008-005-004)资助
王 兵,男,1968年出生,博士研究生,研究方向:高速数据采集及嵌入式系统
2009-10-09,
2009-11-16