基于TMS320VC5409的嵌入式WEB数据服务器的实现
基于TMS320VC5409的嵌入式WEB数据服务器的实现
本文基于
TMS320VC5409数字信号处理器[2]和RTL8019AS以太网控制器[3]设计了一种适用于传输传感器采集到的大量数据及处理后信息的快速以太网接口,并在此基础上通过移植与应用lwIPTCP/IP协议栈[4]实现了嵌入式WEB数据服务器。1以太网控制器RTL8019AS[3]目前以太网技术在计算机系统中已经发展到千兆位的带宽速度,但多数以太网接口芯片都是通过PCI总线与CPU连接。而在嵌入式系统中,除非系统内的高速处理器本身带有PCI接口,一般很难直接与这类芯片进行连接。从经济与效率的角度考虑,嵌入式系统采用相对慢速的10M以太网接口芯片RTL8019AS是合适的。RTL8019AS是一种被广泛应用的廉价以太网接口控制器,与CPU的接口为ISA总线,可以与各类处理器的外部接口进行轻松连接。
芯片的特点如下:(1)符合EthernetII和IEEE802.310Base5,10Base2,10BaseT;(2)全双工,收发速率可同时达到10Mbps;(3)内置16KBSRAM,用于收发缓存环,降低对主处理器的速度要求;(4)支持8/16位可选宽数据总线,8条中断申请线以及16个可选I/O基地址;(5)支持UTP、AUI和BNC接口自动检测,另外集成的10BaseT传输接口支持对接收线对的自动极性校正;2TMS320VC5409与RTL8019AS的接口2.1C5409外部总线接口的特点[2]C5409外部总线接口是其与多种外部器件进行连接的主要通路。通过外部总线上的各种控制信号引脚,C5409可以实现将对外部接口的访问映射到对数据存储空间、程序存储空间或I/O空间的访问。
(1)虽然RTL8019AS的地址总线有20根,但在不使用芯片的BootROM和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.3C5409对RTL8019AS控制与读写(1)初始化RTL8019AS。首先在寄存器页0,通过配置三个指针寄存器BNRY、PSTART、PSTOP来定义接收缓存区环,通过配置寄存器ISR和IMR来清除使能中断,然后在寄存器页1配置物理地址寄存器PAR0~PAR5、多播地址寄存器MAR0~MAR7及当前页指针寄存器CURR,最后回到寄存器页0,初始化数据配置寄存器DCR、接收配置寄存器RCR和发送配置寄存器TCR并向控制寄存器写入开始命令。
(3)发送以太帧。发送过程受到四个寄存器的控制:CRDA0、CRDA1、RBCR0和RBCR1,其中CRDA0和CRDA1寄存器指向待发送数据帧将要写入到缓存区环中的起始地址,而RBCR0和RBCR1指定了待发送数据的长度。DSP通过初始化这几个寄存器并向RTL8019AS发出“Remotewrite”命令来将数据写到缓存区环。RemoteDMA通道会自动根据三个寄存器来控制写入的起始地址和长度。为了向以太网发送数据帧,DSP只要将控制寄存器CR的TXP置为1即可,RTL8019AS会自动完成数据的校验并发送。3TCP/IP协议的实现由于嵌入式硬件上处理资源和实时性要求的限制,其TCP/IP协议的实现与在通常的计算机上实现是有差别的,要求占用存储空间尽可能的小,处理速度足够快,因此一般都要针对应用的特点对TCP/IP协议进行必要的裁剪与优化。较普遍的TCP/IP协议嵌入式实现主要有两种方案,一是基于各种实时操作系统的TCP/IP协议栈,如VxWorksμC/OS-II、μClinux、CMX-RTOS等嵌入式实时操作系统都内嵌或有可配置的TCP/IP协议栈实现模块;另外一种方式是直接在嵌入式硬件上实现,如Microchip公司为其PIC单片机设计的TCP/IP协议栈。对一些处理任务比较简单而且实时性要求很高的系统来说,直接实现的方式是较好的选择。