随着Internet应用的日益普及,信息共享程度的不断提高。嵌入式设备的数字化和网络化已经成为必然趋势,目前市场上的主流嵌入式操作系统都包含了TCP/IP网络协议栈。这些商品化的TCP/IP协议栈运行可靠、性能也非常好,但是价格较高,降低了市场竞争力。因此,开发自主知识产权的TCP/IP协议栈的要求变的日益迫切而有意义。
本文的研究目标是建立一个DSP系统的网络通信平台,实现DSP系统与网络中其他通信设备的高速数据传输。虽然选择了TI公司的TMS320F2812 DSP,但是本文提出的方案,具有很大程度的通用性,对其他系列的DSP或CPU系统也有一定的参考价值。
TCP/IP协议栈的体系结构
以太网最典型的应用形式是Ethernet+TCP/IP,即在由以太网构建的底层传输网络上采用已成为通用标准的网络传输协议TCP/IP进行数据通信,这是当今最流行,应用最广泛的以太网通信方式。
国际标准化组织(ISO)制定了开放式系统互连(OSI)参考模型,将通信会话需要的各个过程划分为7个相对独立的功能层次,与OSI参考模型不同,TCP/IP模型侧重于互连设备之间的数据传输,而不是严格的层次划分。
通常,OSI参考模型在从理论上解释互联网通信机制时比较适合,而TCP/IP模型则在具体的软件实现中更为适合。
系统硬件设计
1 系统的总体结构
本文的以太网通信系统大致分为5个层次,由下向上分别为:硬件层、设备驱动层、操作系统、网络模块和用户代码。系统硬件电路,包括DSP系统和以太网控制芯片Ax88796的接口电路,是系统的物理基础。快速以太网驱动程序处于硬件抽象层,本身虽为软件,但与硬件结合紧密,为操作系统提供了访问快速以太网控制芯片Ax88796或改变其工作行为的系统调用。μC/OS-Ⅱ操作系统处于系统内核,为用户代码统一管理系统软硬件资源,提供用户所需的底层服务。TCP/IP协议栈软件为μC/OS-Ⅱ操作系统扩展了网络通信能力。用户代码处理特定的应用程序细节,可以直接使用TCP/IP协议模块提供的API函数,开发基于以太网的通信项目。
2 系统硬件框图
系统硬件包括TMS320F2812与IS61LV51216存储器芯片的接口电路、TMS320F2812与快速以太网控制芯片Ax88796的接口电路。系统的软件代码在调试阶段存放在扩展的RAM中,脱机运行后,用于存储传输的图像数据,故扩展了512KB。使用了ISSI公司生成的IS61LV51216存储器芯片。以太网控制芯片Ax88796通过ISA接口与DSP相连,通过网络隔离器16ST8515后,接入以太网络中。电源监控电路在系统电源电压出现波动时,给DSP系统提供复位信号,使系统程序重新初始化并运行,避免出现不可预知的错误。
图1 硬件框图
3 DSP系统硬件设计
①系统电源设计
为了降低芯片功耗,TMS320F2812采用1.8V(1.9V@150MHz)内核电压,但GPIO、FLASH等模块采用3.3V供电。本课题选用TI公司的TPS767D301电源芯片。该芯片输出两路电压,一路3.3V,另一路1.5~5.5V可调,支持1A电流输出。系统中DSP芯片正常工作下消耗电流230mA,以太网接口芯片最大消耗电流120mA,RAM最大消耗电流180mA,系统总功耗为530mA,故TPS767D301能满足系统要求。
②系统时钟设计
系统的时钟电路有两种方案可选择,一种是使用外部时钟源,即有源晶振。另一种是使用DSP内部的振荡驱动电路,外接一个晶体和两个电容。有源晶振的特点是不需要芯片内部振荡器,加上额定的电压就能输出规则的方波,缺点是输出波形只能是固定的两个电压值:低电平(0V)和高电平(输入供电电压),另外器件成本高。外接晶体的特点是使用芯片内部振荡电路,输出的波形为正弦波,波形幅度由控制器决定,不存在电压匹配的问题。
TMS320F2812的I/O引脚一般为3.3V,但时钟输入脚却是个例外,只能承受1.8V/1.9V的输入电压,而1.8V/1.9V的有源晶振市场上罕有出售,故采用无源晶振。
③复位电路设计
系统中有两个芯片需要复位信号:DSP芯片和以太网控制芯片Ax88796。但二者对复位信号的要求各不相同,DSP是低电平复位,而Ax88796是高电平复位,故采用TI公司的专用复位芯片TPS3307。该芯片具有上电复位、手动复位和电源监控三项功能。电路如图2所示。
上电复位电路保证系统在上电200ms后自动产生一个复位信号,使DSP进入正常的程序入口,Ax88796初始化内部寄存器。手动复位的功能是当系统出现程序跑飞或需要系统重新初始化并运行时,按下复位按键产生复位信号,使DSP进入正常的程序入口。
④系统RAM扩展
TMS320F2812内部已经集成了18KB的RAM,对于一般的应用来说,已经无须再扩展外部RAM。但是片内RAM能以150MIPS的速度进行访问,在对运算速度要求很高的处理程序中,通常将经常访问的程序段放到内部RAM中运行,这样能大大提高运行速度,因此片内RAM显得格外宝贵。而且本系统是一个网络通信系统,将来会用于进行大量图像的网络传输,因而也要求外括RAM用于存放图像文件。
图2 复位电路
RAM选用ISSI公司的IS61LV51216,存储容量为512K×16位,3.3V的供电电压,访问速度有8ns、10ns、12ns、15ns可选择。当CPU运行在150MHz的时候,地址和数据的最小有效时间为3个时钟周期,即20ns,所以该存储器接口不用考虑时序设计的问题。
4 快速以太网硬件接口设计
Ax88796内部集成有10/100Mb/s自适应的物理层收发器和8K×16位的SRAM,支持MCS-51系列、80186系列、ISA以及MC68K系列等多种CPU总线类型。Ax88796提供基于IEEE802.3/IEEE 802.3u局域网标准的10Mb/s和100Mb/s以太网控制功能,并采用IEEE 802.3u兼容的媒质无关接口MII(Media Independent Interface)。此外,Ax88796还提供可选的标准打印接口,用于连接打印设备或作通用I/O端口。
①Ax88796的ISA接口设计
Ax88796有两个输入引脚CPU[1:0]设置不同的工作模式,用于和不同的CPU总线相连。在与TMS320F2812连接时,将CPU[1:0]都拉低,设置为ISA总线接口。Ax88796的地址总线SA与数据总线SD分别与TMS320F2812的地址/数据总线相连,TMS320F2812通过I/O读写Ax88796的寄存器来控制其状态,通过远程DMA FIFOs与Ax88796的内部SRAM进行数据交换。Ax88796的基地址默认值200H,所以基地址范围为200H~21FH。Ax88796的ISA接口有10根地址线,SA[9:0]。
②Ax88796电源设计
Ax88796具有多种电压类型:VDD、VDDA、VDDPD和VDDO,分别为芯片内部的数字电路、模拟电路、相位侦测模块、收发器驱动模块提供电源。虽然同为3.3V电压,但为了防止各个模块通过电源线发生串绕,要求各电源独立供电,于是设计了电源隔离、滤波电路,将系统的3.3V供电电压,通过LC滤波分为Ax88796所需的四路电压。
系统软件设计
1 系统软件结构
除应用层用户程序外,系统软件可看做操作系统μC/OS-Ⅱ的功能扩展:Ax88796驱动程序屏蔽底层硬件,为操作系统扩展了访问网络设备的能力;TCP/IP协议软件为操作系统扩展了网络通信能力。
TCP/IP通常被划分为一个四层协议系统,每一层负责不同的功能。
● 接口层:Ax88796的驱动程序,直接访问Ax88796硬件设备,控制Ax88796的行为模式。
● 网络层:处理分组在网络中的活动,例如分组的选路。
● 运输层:为两台主机上的应用程序提供端到端的通信。
● 应用层:负责处理特定的应用程序细节。
在DSP上实现的100M快速以太网通信,关键要考虑两个方面:
● 如何控制硬件设备将数据发送到以太网中(或者将以太网中的数据接收到DSP内)。
● 如何生成待发送的数据(或者如何解释接收到的数据)。
二者分别由网络设备驱动程序和TCP/IP协议软件解决。
本系统的软件部分包含3个方面:快速以太网驱动程序、μC/OS-Ⅱ操作系统和TCP/IP协议栈软件。
2 快速以太网驱动程序开发
①Ax88796的寄存器
Ax88796的寄存器映射在从基地址200H到21FH地址空间内,共32个地址空间,因此Ax88796采取了分页机制,各寄存器分别存放在不同寄存器页内。
对Ax88796的寄存器进行正确的设置是系统运行的基础,下面是几个重要寄存器:
● CR(命令寄存器):用于选择寄存器页,启动和停止网卡。
● ISR(中断状态寄存器):反映Ax88796当前状态,CPU通过读取它判断引起中断的原因。
● DCR(数据控制寄存器):字节顺序、DMA字节/字传输模式选择。
● PSTART、PSTOP、BNRY、CPR:这四个寄存器与接收缓冲区有关。PSTART设置起始页,PSTOP设置停止页,这两个寄存器设置了接收缓冲区的首尾。BNRY指示最后一个被取走的缓冲区页,CPR指示第一个用于接收的缓冲区页。
● TPSR、TBCR0、TBCR1:这三个寄存器与发送缓冲区有关。TPSR设置发送缓冲区的起始页,TBCR0、TBCR1设置发送字节数。
● RSAR0、RSAR1、RBCR0、RBCR1:Ax88796通过远程DMA和系统交换数据,前两个寄存器设置远程DMA的起始地址,后两个设置远程DMA数据字节数。
②接收过程
接收数据帧的过程涉及到的寄存器主要有两个:CPR和BNRY。CPR寄存器指向新接收到的数据帧要存放的起始页地址,作为本地DMA的写指针;BNRY寄存器指向还未读取的数据帧的起始页地址,作为远程DMA的读指针。当CPR追上BNRY时,表示接收缓冲区已满,后续的数据帧将会被丢弃;当BNRY追上CPR时,表示接收缓冲区已空。
③发送过程
图3 发送过程
发送过程比较简单,发送过程的流程如图3所示。
3 嵌入式多任务操作系统μC/OS-Ⅱ的移植
所谓移植,就是使μC/OS-Ⅱ内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的μC/OS-Ⅱ代码是用C语言写的;但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为在读写处理器寄存器时只能通过汇编语言来实现。因此要使 μC/OS-Ⅱ正常运行,处理器必须满足以下要求:
● 处理器支持中断,并且能产生定时中断(通常在10~1kHz之间)。
● 使用C语言可以打开和关闭处理器的中断。
● 处理器支持能够容纳一定量数据的硬件堆栈。
● 处理器有将堆栈指针和其他寄存器读出和存储到堆栈或内存中的指令。
μC/OS-Ⅱ的移植工作主要包括两个内容:
● OS_CPU_C.C文件中的一个C语言函数
● OS_CPU_A.ASM文件中的四个汇编语言函数
由于篇幅有限,这里就不详细说明这两个文件的具体编写了。
4 TCP/IP协议栈的系统结构
①网络接口层模块
网络接口层模块包含Ax88796设备驱动、缓冲区管理和接口调度三方面。定义了网络接口抽象模型,屏蔽了网络物理细节,使上层软件能使用相同的数据结构作用于不同的物理网络。
②ARP模块
ARP协议将上层的协议地址(IP地址)与底层的硬件地址进行映射,从而形成了只能使用IP地址的上层软件和只能使用物理地址的下层设备驱动程序之间的分界线。ARP模块处理来自于网络的ARP数据分组,更新和维护ARP高速缓存,并为发送数据报提供相应的硬件地址绑定。
③ICMP模块
ICMP协议内容比较丰富,最常用的就是PC上ping程序所实现的回送请求和回送应答功能。本课题中,主要就是实现了回送应答功能,这样用户可以使用PC探测DSP是否网络畅通,其他功能目前暂时预留,待将来升级。
④IP模块
IP模块是整个协议栈的中心环节,它接收来自网络的输入数据报,同时也接收来自上层协议的输出数据报,IP为数据报选择路由,或者将其发往一个网络接口,或者将其交给本机的上层协议软件(回环)。
⑤TCP模块
TCP为不可靠的IP连接提供可靠的、具有流量控制的、端到端的数据传输。TCP模块中包含三个关键过程:数据输入、数据输出和超时重发。自适应重发机制是TCP的核心组成部分,自适应的修改连接的平均往返时间
⑥UDP模块
UDP协议提供无连接的通信,相对于TCP协议,它非常简单。虽然UDP不能保证可靠性,但是效率非常高。
⑦Socket接口模块
Socket模块主要是为了封装底层协议软件,使得用户在DSP上开发网络程序更加方便。
系统测试举例
Internet Explorer(IE)是Windows操作系统内嵌的网页浏览器。Web(网页)是这个信息共享社会使用最广泛的信息组织形式。通过往DSP软件中添加Web服务功能,可以使本系统能够更好的融入Internet之中,用户可以通过IE浏览器直接对本系统进行设置和查看系统的反馈数据。打开IE浏览器,在地址栏键入“192.168.8.66”,即可访问预存在DSP系统中的远程数据采集页面。
结束语
测试表明本系统完全满足了网络通信系统所具备的各项功能,它将DSP的强大运算处理能力和Internet联系起来,使得DSP系统不再是“信息孤岛”,能够方便的与网络上的其他设备进行信息共享,进一步扩展DSP的应用前景。
评论
查看更多