没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
ZLIP TCP/IP协议栈在嵌入式系统中的应用协议栈在嵌入式系统中的应用
ZLIP协议栈是一种极小的TCP/IP协议栈,该协议栈是免费的开源协议栈,可以适用于8位或16位的微处理器搭
建的嵌入式系统。本文介绍了将ZLIP结合嵌入式平台,实现将嵌入式系统作为客户端接入网络中的应用,对
ZLIP协议栈的特点和相关接口进行了分析。
引言
随着嵌入式系统技术的不断发展,越来越多的应用需要嵌入式系统连接成网络使用,这就需要一个可应用于嵌入式系统的
TCP/IP协议。由32位处理器搭建的嵌入式系统在使用网络的时候,通常都会运行一个集成有TCP/IP协议栈的操作系统。这样
的TCP/IP协议栈是庞大的,不适用于处理能力和资源都十分有限的8位或16位的处理器搭建的嵌入式平台,而且由于处理能力
和资源有限,8位或16位的处理器搭建的嵌入式系统一般都不运行操作系统。TCP/IP协议栈的透明性掩盖了其实现的复杂性,
系统开发者从无到有搭建一个适用于自己平台的TCP/IP协议栈是一件艰巨的任务,很多时候从一个项目开发周期来说是不可
能实现的。ZLIP TCP/IP协议栈是一种可实现的极小的TCP/IP协议栈,适用于8位或16位的处理器构建的嵌入式平台。ZLIP协
议栈是针对51单片机和Keil C51编译器其自身的特点(存储类型、函数指针、重入函数等)设计的,而且ZLIP协议栈是用C语
言实现的,方便协议栈的移植。ZLIP协议栈代码量适中,而且对处理器和RAM等资源要求都较小,这使得ZLIP协议栈可以很
好地用于低端处理器搭建的系统上。本文将简单描述ZLIP协议栈的特点,分析ZLIP的应用接口,并讨论嵌入式平台结合ZLIP
作为客户端系统的应用。
1 ZLIP协议栈特点
目前常用的TCP/IP协议有lwIP、uIP、tinyTCP、ZLIP等几种,其中lwIP、uIP、ZLIP已经成功在单片机上得到了应用。应用在
微处理器上的TCP/IP协议栈中,lwIP算是功能较全面的,但是它的代码量相对来说比较大,对资源的要求也较高;uIP采用了
不保存需要应答的数据包的RAM使用方案,uIP的设计侧重于减少代码量和减少RAM的使用量,相对lwIP来说对系统的资源要
求较低,但其没有和BSD的套接字接口兼容应用层接口较复杂;ZLIP协议栈是以李章林博士为主的开发团队在南开大学电子
应用实验室开发完成,专门为51单片机设计的,针对Keil C51编译器设计,它的代码量和RAM使用量都比较适中,所有的外
部变量都使用了xdata类型,全部指针都为明确存储类型的指针,需要重入的函数已经声明为reentant,使用KeilC的小模式下
编译,使用类似MFC的CScoket的套接字应用层接口,使用方便。ZLIP支持多TCP连接、多网络设备。ZLIP是用C语言实现的
源码开放的协议栈,能方便地移植到多任务操作系统和其他CPU下,能方便地替换网络接口协议和网卡驱动设备,具有很好
的通用性。
2 ZLIP协议栈分析
ZLIP协议通过提供一系列的接口函数,实现其与底层网卡驱动的连接以及与上层应用程序的通信。它内部的协议集合对用户
都是可见的,增强了该协议栈的通用性和灵活性,用户可以根据自己的需要将此协议栈移植到不同的平台。ZLIP协议栈与系
统底层驱动和应用程序之间的接口关系如图1所示。
图1
2.1 ZLIP协议栈与系统底层的接口
ZLIP与系统底层的接口包括与设备驱动的接口和与系统定时器的接口两类。ZLIP与设备驱动的接口是通过函数
EtherDevInit(),将网络设备的MAC地址和接收、发送函数通过“注册”的形式“注册”进ZLIP协议栈,从而初始化一个以太网
接口设备,并设置这个设备的发送和接收驱动函数。为了与ZLIP协议栈结合,其中网络设备的发送函数为unsigned char型的
可重入函数,形参为一个指向待发送数据的指针和一个记录待发送数据长度的变量,例如unsigned char
cp2200_Send(unsigned char xdata * outbuf, unsigned short len) reentrant。网络设备的接收函数为struct SMemHead xdata *
型的可重入函数,例如struct SMemHead xdata * cp2200_rcve( ) reentrant,其中SMemHead结构体为:
struct SMemHead{
struct SMemHead xdata *pNext;
struct SMemHead xdata *pPre;
unsigned char used;
unsigned char xdata *pStart;
unsigned char xdata *pEnd;
}
在接收函数中,只要用到pStart成员,将接收到的数据存入pStart指向的存储区。
2.2 ZLIP协议栈与系统计时接口
TCP/IP协议要处理许多定时事件,例如包重发、ARP表项更新等。系统计时用于为所有ZLIP内部时钟事件计时。ZLIP与系统定
时器的接口是通过NetIfTimer( )、ARPTimer( )、TCPTimer( )三个函数实现的,NetIfTimer( )函数调用“注册”了的每一个接口的
接收函数,接收到达的数据包;ARPTimer( )函数处理ARP表项更新;TCPTimer( )函数处理TCP/IP包的重发等功能。这三个
资源评论
weixin_38670531
- 粉丝: 5
- 资源: 951
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功