基于OMAP平台的TCP/IP开发及实现
随着人们对智能化产品需求的增加,未来的嵌入式产品,包括各种家电、通信、PDA、仪器仪表等设备正逐渐走向网络化,以共享互联网中庞大的信息资源,因此使嵌入式设备的网络化开发有广阔市场前景,由于嵌入式硬件资源有限,而传统的TCP/IP等网络通信协议对计算机存储器、运算速度的要求较高,所以不能直接应用,为此,必须开发一套适合嵌入式系统的、高度优化的、最为精简的TCP/IP协议栈。
开放式多媒体应用平台OMAP(Open Multimedia Application Platform)是美国德州仪器公司推出的高度集成的软硬件平台。OMAP具有独特的双芯结构,结合了DSP与RISC内核,可为无线多媒体设备提供独一无二的性能和功耗优势,OMAP可连接十分丰富的外围设备,包括USB、摄像头、声音设备、视频设备、网络设备等,OMAP拥有开放式体系结构,其应用环境完全可编程。
软件协议的设计与实现在很大深度上决定了通信终端的质量,基于OMAP的3G移动终端软件协议结构由信令协议栈和应用业务协议栈组成,如图1所示,TCP/IP协议栈位于应用业务协议栈的底层,为上层的H.323协议栈提供基础与服务,其性能质量将直接决定整个通信终端软件系统的运行质量。因此,针对嵌入式系统联网的发展方向,为OMAP系统其设计一套高效、简洁的TCP/IP协议,对其应用具有十分重要的意义。
![](../img/eep/emb/emb-45551rn45tghvzpl.jpg)
1 开发方案
PC上有功能强大的VC平台和网络分析工具(如Sniffer)便于调试,其设计不针对任何一个嵌入式芯片,具有较好的通用性和可移植性,在PC机上实现的TCP/IP协议,除了以太网层要结合OMAP平台的网卡硬件重写外,基本上可以直接移植到OMAP平台上,不需要再做大的改动,作为一个通信程序,必须需要两端程序同时调试,在PC机上编好的程序能度OMAP平台上程序的调试提供可靠的帮助,因此,协议开发采用先模拟再移植、先整体再部分的设计思路,而协议各层实现的顺序为自下而上。具体步骤是:
(1)在PC机上的Windows操作系统及VC6.0开发平台上,实现嵌入式系统TCP/IP协议族的模拟器,该模拟器应该能实现TCP/IP协议的基本功能,包括以太网驱动程序、ARP、IP、UDP、TCP等,并且实现的ARP、IP、UDP、TCP层的程序应该通用于各嵌入式系统并可移植。
(2)将该模拟器移植到OMAP开发平台,用其以太网卡的驱动程序替换原模拟器的链路层程序,在TI提供的CCS平台上最终实现基于OMAP的TCP/IP协议。
2 开发平台
OMAP的多媒体开发平台Innovator主要由4个模块组成:PM(处理器模块)、IM(接口模块)、M(扩展模块)、BOB(主连接板)。OMAP处理器在PM上,以太网卡在BOB上,可以通过Innovator上的OMAP1510芯片的ARM微处理器对单片以太网控制器LAN91C96的工作进行控制,实现以太网帧的收发,并通过CCS对程序调试,图2为OMAP平台调试环境。
![](../img/eep/emb/emb-45552hdh2n1ut4yb.jpg)
3 在PC上实现协议的基本模块
3.1 主要模块介绍
(1)主流程:首先对TCP/IP协议族的各层初始化,成功则进入主循环,主循环采用"中断+循环)"结构,简单且分层清晰,中断作为应用层发出命令,调用下层的入口。对于接收到的以太网帧,则由下到上分别进入各层进行处理。协议实现主流程如图3所示。
![](../img/eep/emb/emb-45553yt1xhpfnc0m.jpg)
(2)PC上的以太网层:在内存中开辟接收和发送两个相同的循环缓冲区,用于存放接收和发送的以太网帧。 Winpcap软件是基于Windows平台的一个网络包工具,它提供一个系统内核级的动态链接库Packet.dll作为标准的API,具有独立于操作系统的编程接口。利用其提供的API可直接联系网卡驱动与已定义的循环缓冲区,将缓冲区中的数据发出,并将网卡接收的数据存入缓冲区。
(3)ARP层,在内存中开辟一块循环存储区域用于存放已知的IP-MAC对应表,该表可以由上层添加,在接收到ARP应答时会自动添加,也可以上层清空。处理ARP层函数的过程中:根据以太网首部协议字段过滤出ARP包,针对ARP请求与ARP应答进行不同的处理,应答对方的请求,记录对方的应答。
(4)IP层:根据以太网首部的帧类型标注判断接收到的是不是IP包来处理IP层函数,如果是:则调用IP包的接收函数,对给收到的IP包用各种条件进行过滤,对于满足条件的包获取其长度与指针信息供上层使用。本层另一个主要函数是IP包发送函数,由上层调用进行IP封装。
IP的检验和仅包括IP首部,长度一般为20字节(如果没有选项)。在接收端,丢弃检验和不为OxFFFF的包,在发送端,将计算所得值的反码填入检验和字节,由于主机和网络对数据中高低字节默认的顺序不同,在读写包中的16、32数据时,应该先进行高低字节的交换。
(5)UDP 层,处理UDP层函数应根据IP首部的协议字段判断是否UDP包。
- MiniGUI在OMAP5912上的移植(07-27)
- 基于ARM核与DSP核组成的OMAP5910嵌入式系统(02-28)
- 基于移动应用处理器OMAP3530的视频解决方案(06-04)
- 基于DSP硬解码的低成本高清屏媒系统(05-14)
- 基于OMAP3530平台的车道线识别检测的实现(01-28)
- 基于OMAP的设计汇总,包括示波器、监护仪、人机接口等(01-28)