基于TMS320VC5409的嵌入式WEB数据服务器的实现

 

基于TMS320VC5409的嵌入式WEB数据服务器的实现

[日期:2008-7-15] 来源:电子技术应用  作者:高 翔, 李 凌, 刘广存 [字体:大 中 小]

 

在较高速的嵌入式应用场合,普通单片机[1]的I/O接口速度以及协议处理速度经常成为网络数据传输的瓶颈,因而并不是一种合适的设计选择。这些系统中的主处理器通常都会有较快的处理和接口速度,将这些快速接口与以太网控制芯片进行连接可以实现满足一定数据传输速率要求的网络应用。本文基于TMS320VC5409数字信号处理器[2]和RTL8019AS以太网控制器[3]设计了一种适用于传输传感器采集到的大量数据及处理后信息的快速以太网接口,并在此基础上通过移植与应用lwIP TCP/IP协议栈[4]实现了嵌入式WEB数据服务器。
1 以太网控制器RTL8019AS[3]
    目前以太网技术在计算机系统中已经发展到千兆位的带宽速度,但多数以太网接口芯片都是通过PCI总线与CPU连接。而在嵌入式系统中,除非系统内的高速处理器本身带有PCI接口,一般很难直接与这类芯片进行连接。从经济与效率的角度考虑,嵌入式系统采用相对慢速的10M以太网接口芯片RTL8019AS是合适的。RTL8019AS是一种被广泛应用的廉价以太网接口控制器,与CPU的接口为ISA总线,可以与各类处理器的外部接口进行轻松连接。芯片的特点如下:
    (1) 符合Ethernet II和IEEE802.3 10Base5,10Base2,10BaseT;
    (2) 全双工,收发速率可同时达到10Mbps;
    (3) 内置16KB SRAM,用于收发缓存环,降低对主处理器的速度要求;
    (4) 支持8/16位可选宽数据总线,8条中断申请线以及16个可选I/O基地址;
    (5) 支持UTP、AUI和BNC接口自动检测,另外集成的10BaseT传输接口支持对接收线对的自动极性校正;
    (6) 支持4个诊断LED引脚的可编程输出。
2 TMS320VC5409与RTL8019AS的接口
2.1 C5409外部总线接口的特点[2]
   C5409外部总线接口是其与多种外部器件进行连接的主要通路。通过外部总线上的各种控制信号引脚,C5409可以实现将对外部接口的访问映射到对数据存储空间、程序存储空间或I/O空间的访问。当映射到存储空间时,接口的数据访问率可以达到CPU的运行频率,即100MHz,10ns为一个访问周期,而映射到I/O空间时,最快可以达到20ns一个访问周期,都足够满足访问ISA总线的速率要求(RTL8019AS的最快ISA I/O写速度50MHz,读速度更低)。只要将RTL8019AS映射在I/O空间即可。在I/O空间访问时,除了数据和地址总线外,主要的控制信号是IS#、R/W#、IOSTRB#信号。
2.2 C5409与RTL8019AS的连接
    具体的接口如图1所示。为简化系统,选择将RTL8019AS配置在跳线模式,可以直接在配置引脚处进行跳线或使用C5409的I/O引脚来模拟配置电平,这样就省去了外接9346配置芯片的必要。需要注意的是用C5409的I/O引脚来模拟配置电平时,RTL8019AS的复位信号RSTDRV需要最后拉低,因为配置信号的状态都是在RSTDRV的下降沿锁定的。

                   
    (1) 虽然RTL8019AS的地址总线有20根,但在不使用芯片的Boot ROM和PnP功能时,只需要其中的SA0~SA9,这样可以保证RTL8019AS的I/O基地址为200H~300H,共占用基地址之后的32字节空间。
    (2) 数据总线是双向总线,需要考虑芯片间的电平匹配问题。C5409是3.3V接口器件而RTL8019AS的接口电平为5V,因此需在总线上加入一个兼容3.3V和5V电平的驱动芯片,如LVTH16245A。另外由RTL8019AS向C5409输出的中断和READY信号也需要通过驱动芯片进行电平匹配。中断信号通过非门翻转。
    (3) 由于C5409没有分离的读写控制信号,需要通过译码的方法来与RTL8019AS进行连接。对DSP的IS#、R/W#和IOSTRB#信号译码可以获得RTL8019AS的IORB和IOWB信号,这里需要选择快速的译码芯片以满足控制信号的时序要求。
    (4) JP拉高表示工作在跳线模式,IOCS16B拉高表示配置数据总线的宽度为16位,AEN驱动为低。RTL8019AS的复位信号RSTDRV直接以DSP的XF引脚控制。
2.3 C5409对RTL8019AS控制与读写
    (1)初始化RTL8019AS。首先在寄存器页0,通过配置三个指针寄存器BNRY、PSTART、PSTOP来定义接收缓存区环,通过配置寄存器ISR和IMR来清除使能中断,然后在寄存器页1配置物理地址寄存器PAR0~PAR5、多播地址寄存器MAR0~MAR7(在无需接收多播以太帧RCR寄存器的AM为0,MARx无需配置)及当前页指针寄存器CURR,最后回到寄存器页0,初始化数据配置寄存器DCR、接收配置寄存器RCR和发送配置寄存器TCR并向控制寄存器写入开始命令。
    (2)接收以太帧。芯片在接收到一个完整的以太帧并校验正确后就会发出一个中断并置状态寄存器ISR和RSR的PRX位,表示正确接收到一帧以太网数据。这时DSP就可以通过RTL8019AS的远程DMA通道从芯片内部的接收缓存区环中读出以太数据帧。在每个接收到的以太数据帧之前,RTL8019AS会向这一帧的接收缓存区的头四个字节中写入接收状态、下一包(即下一个以太帧)缓存区头指针、当前接收帧的字节数等信息。在8位模式时如图2所示。这里字节长度包括接收到的4字节校验数据。接收过程受到三个寄存器的控制:BNRY、RBCR0和RBCR1,BNRY寄存器指向待接收数据帧在缓存区环中的首页起始地址,而RBCR0和RBCR1指定了待接收数据的长度。DSP通过初始化这三个寄存器并向RTL8019AS发出“Remote read”命令来将数据从缓存区环读出。Remote DMA通道会自动根据这三个寄存器来控制读出的起始地址和长度。此外,还可以使用“Send Packet”命令来接收数据,这时BNRY、RBCR0和RBCR1寄存器是自动初始化的。

                               
    (3)发送以太帧。发送过程受到四个寄存器的控制:CRDA0、CRDA1、RBCR0和RBCR1,其中CRDA0和CRDA1寄存器指向待发送数据帧将要写入到缓存区环中的起始地址,而RBCR0和RBCR1指定了待发送数据的长度。DSP通过初始化这几个寄存器并向RTL8019AS发出“Remote write”命令来将数据写到缓存区环。Remote DMA通道会自动根据三个寄存器来控制写入的起始地址和长度。为了向以太网发送数据帧,DSP只要将控制寄存器CR的TXP置为1即可,RTL8019AS会自动完成数据的校验并发送。
3 TCP/IP协议的实现
    由于嵌入式硬件上处理资源和实时性要求的限制,其TCP/IP协议的实现与在通常的计算机上实现是有差别的,要求占用存储空间尽可能的小,处理速度足够快,因此一般都要针对应用的特点对TCP/IP协议进行必要的裁剪与优化。
    较普遍的TCP/IP协议嵌入式实现主要有两种方案,一是基于各种实时操作系统的TCP/IP协议栈,如VxWorksμC/OS-II、μClinux、CMX-RTOS等嵌入式实时操作系统都内嵌或有可配置的TCP/IP协议栈实现模块;另外一种方式是直接在嵌入式硬件上实现,如Microchip公司为其PIC单片机设计的TCP/IP协议栈。对一些处理任务比较简单而且实时性要求很高的系统来说,直接实现的方式是较好的选择。在本系统中,根据具体应用的特点,选择对开源软件lwIP(a light-weight implementation of the TCP/IP protocol suite)[4]进行适当的裁剪后将其移植到C5409 DSP上,直接实现了IP、ARP、TCP、ICMP协议和以太网驱动,代码长度28KB,占用数据空间9KB。
    应用层与lwIP协议栈的接口可以有两种方式,一是通过调用lwIP API函数;二是直接调用协议的实现模块,即使用原始API函数。lwIP API函数为上层应用提供了使用协议栈常态的顺序的编程模式,即基于“open-read-write-close”模式,这是一种类BSD socket的API。而原始API是一种基于回调(callback)机制的应用程序接口,调用这种接口使得应用层与lwIP协议栈联系得更紧密,要求应用程序员对lwIP的底层机制了解得更透彻,因此相对来说编写程序会更困难一些,程序代码也更难理解。然而好处也显而易见——处理速度更快,占用内存更小,对小型系统而言很有意义。
4 嵌入式WEB数据服务器应用
    本系统通过调用协议栈的原始应用层接口来实现嵌入式WEB数据服务器应用,其原理如图3所示。其作用是将传感器采集到的数据或数据处理后的信息按照预先约定的格式存储在数据缓存中,每收到一次网络上的主机发来的“Get AE”命令就将处理的结果发送出去。ae_init函数用来在初始化时启动数据服务应用;在建立TCP连接时ae_accept函数用来在协议控制块PCB中注册应用层处理函数,每次在建立连接时都会被协议栈调用;ae_recv是实际的应用层处理函数,在每次接收到从对应连接上发来的应用层命令时,协议栈都会调用它做出合适的处理和响应,这里主要是用来向客户端主机传输传感器数据或信息。在未进行优化的情况下,在一个正常工作(有外部Internet连接)的局域网内,系统能达到最少110KBps的传输速率,基本满足设计要求。若需进一步提高传输带宽,可以应用100M或更高速度的网卡芯片与DSP进行接口。

                       
    在嵌入式系统中实现以太网接口的主要困难:一是合适的接口芯片较少,集成的方案(即处理器内嵌以太网接口)成本又相对较高;二是TCP/IP协议栈的实现。随着嵌入式系统网络应用的发展,第一个困难会随着芯片技术的发展逐渐解决,而对于第二个困难,使用开源代码是一个经济的合适选择。目前,对大多数应用来说,本文的系统都是一个可行的低成本方案,能够满足一定的数据传输率要求,且因为C5409 DSP接口还有带宽裕量,系统具有较高的可扩展性,可以连接更快传输率的以太网芯片。本文设计的嵌入式WEB数据服务器,已在一个声发射(AE)传感器数据采集及分析系统中得到使用并达到了预期的效果。
参考文献
[1]  曹宇, 魏丰,胡士毅. 用51单片机控制RTL8019AS实现以太网通讯. 电子技术应用, 2003,29(1):21-23.
[2]  TMS320VC5409 Fixed-point digital signal processor datasheet. Texas Instruments Inc, 2000.
[3]  RTL8019AS datasheet. RealTek Semiconductor Corp, 2005, 8.

[4]  Adam Dunkels. Design and implementation of the lwIP TCP/IP stack.http://www.sics.se/

~adam/lwip/doc/lwip.pdf,  2001, 2.

你可能感兴趣的:(Web,api,服务器,网络应用,嵌入式,存储)