APP下载

uIP协议栈在SOPC系统中的应用

2012-07-25刘一民

计算机工程与设计 2012年3期
关键词:调用以太网嵌入式

何 宾,刘一民

(北京化工大学 信息科学与技术学院,北京100029)

0 引 言

目前,在单芯片上实现一个完整的嵌入式系统已经成为可能,把在单芯片上实现一个系统级的设计称为片上系统 (system on a chip,SOC)。随着 FPGA 技术的不断发展,专用集成电路 (application specific integrated circuit,ASIC)设计发展到FPGA阶段。FPGA芯片除了集成度非常高外,还具有一个显著的特点——具有可编程能力,因此系统级设计也由SOC设计阶段发展到SOPC设计阶段。SOPC设计可裁剪,可扩充,可升级,具备软硬件在线编程能力,并且在一个SOPC平台上可以通过定制IP核来满足不同的应用要求,设计非常灵活,被广泛的应用于嵌入式系统设计中。许多嵌入式系统中都需要支持网络功能,如网络数据采集、网络监控等,这些应用需要一个性能优良的适合嵌入式系统设计的以太网传输协议。作为一种开放源码、简化的TCP/IP协议栈,uIP协议栈占用资源少,使用C语言编程,可移植性好,易于使用,非常适合嵌入式系统设计。本文从硬件和软件的设计角度出发,使用SOPC技术实现了以太网数据传输。介绍了使用Xilinx嵌入式开发平台实现uIP协议栈在SOPC平台上应用的基本原理,工作流程和实现方法,并通过与上位机间的网络通信对设计进行了验证。本课题既可以通过使用SOPC技术来降低嵌入式设计的难度和开发风险,又可以解决嵌入式系统中的网络接入问题,具有一定的代表性。

1 系统硬件设计

如图1所示,本设计由Xilinx Spartan-3EFPGA芯片,DM9000A以太网控制器芯片,SRAM,串口,扩展口以及一些辅助电路构成。SOPC的功能是在FPGA芯片内完成的,主要包含microblaze软核处理器,外围设备控制器、串口控制器、存储器控制器、定时器和中断控制器等IP核。所有控制器IP都是在XPS下使用microblaze软核处理器提供的处理器本地总线 (processor local bus,PLB)进行连接、通过微处理器硬件规范 (microprocessor hardware specification,MHS)文件实现关联的。MHS文件中对嵌入式硬件信息进行了详细的描述,包括总线架构、外围设备、处理器类型、系统内部信号互连和地址映射等。

图1 系统硬件结构

1.1 Xilinx嵌入式开发工具EDK

Xilinx的 EDK 工具主要包含:Xilinx Platform Studio(XPS)人机界面、嵌入式系统工具套件、IP核资源、Xilinx Software Development Kit (SDK)。SDK 基于 Eclipse开放源码框架,读者可以在SDK中开发嵌入式软件程序。

XPS是xilinx公司提供的,为实现SOPC开发而设计的高度可定制的嵌入式系统开发平台。它提供高级向导指导用户创建基于PLB总线的处理器系统并提供图形化的系统编辑器来添加更多的处理器和外设,从而帮助用户快速创建和定制采用microblaze或PowerPC的单核或多核处理器设计,可以在Windows、Solaris和Linux等平台下使用。Xilinx XPS提供的集成开发环境的主要功能有3个:

(1)生成微处理器硬件规范 (MHS)文件,调用硬件开发工具产生包含硬件信息的二进制位流文件。

(2)生成微处理器软件规范 (microprocessor software specification,MSS)文件,调用软件开发工具产生驱动文件和库。

(3)调用硬件调试工具ChipScope和软件调试工具GDB对系统进行调试。

1.2 Xilinx SOPC设计流程

SOPC设计是一个软件和硬件协同处理和设计的过程,本文以Xilinx SOPC设计为例,介绍了SOPC设计的基本流程。Xilinx的SOPC设计大致可以分为以下几个阶段:

(1)系统整体设计阶段:对目标系统进行功能性需求分析,确定目标系统的性能指标和软硬件整体设计框架。

(2)建立硬件平台:硬件平台主要是通过XPS工具生成的MHS文件来建立的。XPS以MHS文件作为硬件信息的基本输入,调用平台生成工具 (platform generator,platgen)将MHS文件编译成能在目标FPGA芯片上实现的HDL网表。随后调用Xilinx的综合、布局布线工具生成可下载的包含系统硬件信息的位流文件。

(3)建立软件平台:软件平台主要是通过XPS工具生成的MSS文件来建立的。MSS文件为每个IP核指定定制库、驱动和文件系统等,XPS以MSS文件作为软件信息的基本输入,通过调用库生成工具 (library generator,libgen)利用 MSS文件生成板级支持包 (board support package,BSP)和操作系统内核。然后调用GNU编译工具生成包含全部软件信息的elf文件。

(4)软硬件协同调试:通过Data2MEM工具将包含硬件信息的位流文件和包含软件信息的elf文件合并,生成包含软硬件信息的可下载的位流文件。并调用ChipScope和GDB调试工具进行软硬件协同调试。

(5)生成可执行内核映像文件:生成可执行的内核映像文件,通过相关下载工具将映像文件下载到PROM配置芯片中。

1.3 microblaze软核处理器

MicroBlaze内核是一款32位哈佛架构软核处理器,采用RISC精简指令集架构,支持32位独立的地址总线和数据总线,可以全速执行存储在片上存储器和外部存储器中的程序,并访问其的数据。它运行速度快、占用资源少、可配置型强,并广泛的应用于网络、电信、数据通信和消费市场的复杂嵌入式系统中MicroBlaze处理器提供了本地存储器总线 (local memory bus,LMB)、PLB总线和cachelink接口 (xilinx cachelink,XCL)3种方式来连接IP核和存储器,此外,MicroBlaze处理器还提供了16个快速单链接(fast simplex link,FSL)端口,每一个端口都有一个主接口和一个从接口。

(1)LMB总线接口:LMB总线接口用来连接片上的块RAM,通过单时钟周期访问存储器。它分为指令LMB和数据LMB两类接口,支持一般读写操作和连续读写操作。

(2)PLB总线接口:PLB总线接口为指令和数据提供了独立的32位地址总线和64位的数据总线,但PLB总线总线协议非常复杂,为了方便用户进行自定义IP核设计,Xilinx公司开发了一套可以用向导工具生成的接口协议标准,称为PLB V4.6总线标准。该标准支持32位,64位,128位的主存取和32位的从存取配置,单拍访问模式下可读写8位,16位和32位数据,它的接口可以分为指令PLB和数据PLB两类。

(3)XCL总线接口:XCL总线接口是一个用来连接外部存储设备的高性能总线,通过一个内嵌的FSL接口直接连接到多端口设备存储控制器上,以实现系统的最小延时和最高的性能,可以分为指令XCL和数据XCL两大类。它只有在Cache使能时才起作用,Cache以外的指令或数据或没有Cache使能时的指令和数据仍通过其它总线接口传输。

(4)FSL总线接口:FSL总线接口是一个基于FIFO的单向点对点通讯总线,可以用来连接FPGA上任意两个带有FSL总线接口设计的IP核以实现主从设备间的快速数据传输。MicroBlaze最多可支持8个FSL主设备接口和8个FSL从设备接口,它的结构如图2所示,它有一个主设备端和一个从设备端,其结构类似于一个FIFO接口,主设备端是FIFO的数据写入端,从设备是FIFO的数据读出端。FSL总线的FIFO可以由双端口RAM或LUT RAM和SRL16移位寄存器两种方式来实现,FIFO的深度可配置,最小为1,最大为8K。

图2 FSL总线结构框架

1.4 IP核技术

SOPC设计是一个基于IP核的技术,它的整个系统功能都是通过IP核来实现的。随着CPLD/FPGA的规模越来越大,系统的复杂度越来越高,而设计者却需要在短时间之内完成全部设计。IP核可以重复使用,而且能独立的实现某些功能,调用IP核可以大大减轻工程师的负担,IP核已成为未来数字电路设计的一个发展趋势。

IP核可以在不同的硬件描述级下实现,根据提供方式的不同,可以把IP核分为3类:软核、硬核和固核。

(1)软核:软核通常是以某种形式的HDL文本提供给用户,它已经经过行为级的优化和功能验证,但其中不包含任何具体的物理信息。软核在使用前还需要调用专门的综合和布局布线工具进行处理,它的优点是灵活性好,移植性高,用户可以进行相关配置,与具体的实现工艺无关;缺点是对模块的时序、面积和功耗的预测性低,如果后续设计不当则有可能导致整个系统设计的失败,有一定的设计风险。目前,软核是IP核中应用最广泛的一种形式。

(2)硬核:硬核是指布局布线和工艺固定,经过前端和后端验证的设计,设计人员不能对其修改的物理版图。它提供给用户的是电路物理结构掩膜图和全套工艺文件,优点是性能最好,安全性高,速度、功耗等性能都能得到保障;缺点是不许修改,复用比较困难,灵活性和可移植性差。

(3)固核:固核是基于软核和硬核之间的一种设计,它可以被看作是带有布局规划的软核。它通常带有严格的时序要求,内核的建立时间和保持时间都是固定的,因此设计者在设计其它电路时必须考虑与该内核进行正确连接的接口。此外,如果固核内具有固定的布局或部分固定的布局,在进行电路设计时它还将影响其它电路的布局。

1.5 以太网控制器IP核的设计

本设计的核心外设为以太网控制器,它采用Xilinx提供的xps_epc IP核、总线分割IP核和gpio IP核共同实现。xps_epc核为Xilinx公司开发的,用来控制处理器和USB设备或以太网设备之间数据传输的高性能IP核,最多可支持4个USB设备或以太网设备。它的读写时序可配置,支持8位,16位,32位的同步或异步数据传输。结构如图3所示,主要由PLB接口模块、控制总线模块、地址控制模块、数据控制模块、同步控制模块、异步控制模块、地址和数据复用模块和控制总线复用模块组成。PLB接口模块用于处理与PLB总线的通讯,控制总线模块根据是否有时钟输入来确定处理器与外设之间数据传输的方式。

图3 xps_epc IP核结构

DM9000AEP是DAVICOM公司推出的一种高度集成、功能强大、引脚少、性价比高的高速以太网芯片,非常适用于嵌入式系统设计。它支持8位,16位和32位的接口访问,物理协议层接口完全支持使用10MBps下3类、4类、5类非屏蔽双绞线和100MBps下5类非屏蔽双绞线,完全符合IEEE 802.3u规格。图4为DM9000AEP与以太网控制器核的一个典型连接,gpio核为32位可配置普通IO口,此处配置为1位,用于控制DM9000A芯片的复位信号。EPC核的PRH_Clk置高,表示采用异步数据传输方式。PRH_Addr为地址总线,最低为8位,需要把该地址总线分割为1位才能与DM9000AEP的CMD信号匹配。EPC核的读写时序可配置,可以通过设置EPC核的相关参数来满足DM9000AEP的读写时序。

2 系统软件设计

系统软件主要是通过XPS平台下的微处理器软件规范(microprocessor software specification,MSS)文件来与嵌入式硬件实现关联的。MSS文件为每个IP核指定定制库、驱动和文件系统等。本设计采用的操作系统内核为Standalone操作系统,从严格意义上来说,Standalone并不能称为一个操作系统,它只提供板级描述文件以实现对硬件平台的抽象,应用程序通过直接调用驱动程序来实现对硬件平台的操作。整个软件平台结构如图5所示,设备驱动层的驱动程序主要包括两部分:网络设备驱动和系统定时器驱动。网络设备驱动主要包括DM9000AEP的初始化,设置MAC和IP地址,收包函数和发包函数。系统定时驱动主要通过调用xps_timer IP核和xps_intc IP核的驱动函数来实现的,每隔0.5ms产生一次定时中断。

图5 系统软件结构

uIP协议栈在系统中运行流程图如图6所示。系统初始化包括初始化DM9000AEP芯片,设置MAC地址和IP地址,初始化uIP协议栈等,定时器中断被设为每0.5ms中断一次,随后调用uIP协议栈中的uip_listen()函数监听80或1025端口并连接网络,网络连通后,系统进入数据收发处理进程中。

图6 uIP协议栈调用流程

在该进程中,主要是通过检查全局变量uip_len是否大于0来判断是否收到数据的。uip_len参数在收包函数里设置,收包函数主要实现的功能是完成uip_buf缓冲区中数据包的解析,数据包中包含接收标志,接收数据字长和包数据信息。若uip_len大于0表示接收到数据,如收到数据则用户通过调用uip_input()处理该数据,处理后被放置在uip_buf缓冲区中并通过调用tapdev_send()接口函数将数据发送出去。发送完成后,uIP协议栈通过调用uip_appcall()函数检测上层应用程序是否收到数据,并对收到的数据进行相应的处理。

若uip_len等于0表示没有数据可以接收,则系统每隔0.5ms调用一次uip_periodic()函数,用来检查指定的连接状态,如果需要进行包重发,则将重发数据包放到uip_buf中并修改uip_len的值。当uip_periodic()函数完成后,重新检查uip_len的值,若不为0则将uip_buf的数据包发送到网络上,否则再隔0.5ms重新执行uip_periodic()函数。接着,系统开始检查arp表是否需要更新,本系统中设置更新arp表的频率为10ms,如需要则调用uip_arp_timer()函数对arp表进行更新。

3 测试结果与说明

在该SOPC平台下进行以太网数据通信的应用程序主要用来实现以下功能:如果本系统能够和上位机连通,则在TCP/IP调试工具界面上会出现欢迎信息,若上位机给本系统发送数据的首字符为ASCII码,则本系统给上位机发送 “ASCII Received!”,显示在 TCP/IP调试工具界面;若首字符为汉字,本系统给上位机发送 “汉字收到!”,显示在TCP/IP调试工具界面。本功能测试在TCP&UDP测试工具下完成,如图7所示。测试结果表明,每次发送都能收到相应的应答,系统连接正常,无丢包现象。

图7 以太网通讯测试

4 平台应用

基于该系统平台已成功实现了一个实验室的刷卡系统。该系统作为实验室管理系统的一部分,主要用于验证学生身份和记录学生考勤等信息并将这些信息发送到一个联网的实验室系统管理软件中。学生信息有两个重要部分:学生姓名和学号,学生姓名为汉字信息,学号为ASCII字符。

5 结束语

本文以DM9000AEP以太网控制芯片和Xilinx XC3S500EFPGA 芯片为核心,通过应用 Xilinx xps epc IP核、xps uart IP核等,成功实现了基于FPGA的嵌入式系统与上位机的TCP/IP通信,可以非常方便的应用到不同的嵌入式网络系统中,解决了SOPC系统中的网络接入问题。实验结果表明,在SOPC系统中应用uIP协议栈进行TCP/IP通信是可行的。本设计设计非常灵活,可扩充性好,可以在不修改设计的前提下扩展其它功能,也可以将本设计移植到其它嵌入式操作系统中,为今后进一步的应用奠定了良好的基础,具有较高的应用前景和价值。

[1]HE Bin.The principle and application of SOPC [M].Beijing:Tsinghua University Press,2009 (in Chinese).[何宾.片上可编程系统原理与应用 [M].北京:清华大学出版社,2009.]

[2]HE Bin.The principle and application of EDA [M].Beijing:Tsinghua University Press,2009 (in Chinese). [何宾.EDA原理与应用 [M].北京:清华大学出版社,2009.]

[3]DENG Zhiguo,ZHANG Weixin.The application of uIP TCP/IP stack in MCU of 51series[J].Microcomputer Information,2004,20 (3):88-90 (in Chinese).[邓志国,张维新.uIP TCP/IP协议栈在51系列单片机上的应用 [J].微计算机信息,2004,20 (3):88-90.]

[4]ZHANG Yongtao,HUANG Dandan,LI Ou.The analysis and application of uIP stack [J].Journal of Information Engineering University,2006,7 (2):147-149 (in Chinese).[张永涛,黄丹丹,李欧.uIP协议分析及其应用 [J].信息工程大学学报,2006,7 (2):147-149.]

[5]KE Lei,CHEN Xiaoping.The design of communication routing controller based on uIP stack [J].Communications Technology,2010,43 (11):83-86 (in Chinese). [克磊,陈小平.基于uIP的通信路由控制器的设计 [J].通信技术,2010,43 (11):83-86.]

[6]ZHANG Jian,ZHANG Qinrong.The Application of uIP TCP/IP stack in the AVR MCU [J].Automatic Measurement and Control,2008,27 (1):67-68 (in Chinese). [张建,张庆荣.uIP TCP/IP协议栈在AVR高速单片机上的应用 [J].自动测量与控制,2008,27 (1):67-68.]

[7]YANG Haoqiang.The embedded system development of FPGA based on EDK [M].Beijing:Machinery Industry Press,2008(in Chinese).[杨浩强.基于EDK的FPGA嵌入式系统开发[M].北京:机械工业出版社,2008.]

[8]SUN Wenzhong,ZHANG Baofeng,ZHU Junchao.The application of uIP TCP/IP stack in SOPC[J].Journal of Tianjin U-niversity of Technology,2009,25 (6):18-21 (in Chinese).[孙文中,张宝峰,朱均超.简化TCP/IP协议栈在SOPC中的应用 [J].天津理工大学学报,2009,25 (6):18-21.]

[9]YI Wenbin,ZHOU Xianjuan.The analysis of uIP TCP/IP stack and application in embedded system [J].The Technology and Development of Computer,2007,17 (9):240-243 (in Chinese).[伊文斌,周贤娟.uIP TCP/IP协议分析及其在嵌入式系统中的应用 [J].计算机技术与发展,2007,17(9):240-243.]

[10]TIAN Geng.The development guide of Xilinx ISE design suit 10.x FPGA-article of DSP,embedded system and high-speed transmission [M].Beijing:Posts & Telecom Press,2008(in Chinese).[田耕.Xilinx ISE Design Suit 10.x FPGA 开发指南——DSP、嵌入式与高速传输篇 [M].北京:人民邮电出版社,2008.]

[11]YE Zhaojin,MA Lei.The IP development of user defined in SOPC based on XIlinx FPGA [M].Xi’an:Xi’an University of Electronic Science and Technology Press,2008 (in Chinese). [叶肇晋,马磊.基于XILINX FPGA片上嵌入式系统的用户IP开发[M].西安:西安电子科技大学出版社,2008.]

[12]Xilinx Inc.XPS external peripheral controller [EB/OL].[2009-11-16/2011-04-18].http://www.xilinx.com/ise/embedded/edk_ip.htm.

[13]Xilinx Inc.LogiCORE IP XPS Interrupt controller [EB/OL].[2009-12-2/2011-04-18.].http://www.xilinx.com/ise/embedded/edk_ip.htm.

[14]Xilinx Inc.LogiCORE IP XPS Timer/Counter [EB/OL].[2010-04-19/2011-04-18].http://www.xilinx.com/ise/embedded/edk_ip.htm.

[15]DAVICOM Semiconductor Inc.DM900 0AEP ethernet controller with general processor interface data sheet [EB/OL].[2005-04-21/2011-04-18].http://www.alldatasheet.com/view.jsp?Searchword=DM9000AEP.

猜你喜欢

调用以太网嵌入式
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
搭建基于Qt的嵌入式开发平台
谈实时以太网EtherCAT技术在变电站自动化中的应用
嵌入式软PLC在电镀生产流程控制系统中的应用
基于系统调用的恶意软件检测技术研究
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
Altera加入嵌入式视觉联盟