首页  新闻  企业大全  产品大全  供应求购  技术文章  解决方案  工程案例  下载  展会  招聘  论坛  博客                      免费注册  会员登录
       当前位置:中国一卡通网 >> 技术文章 >> 深层讨论嵌入式TCP/IP网络门禁

深层讨论嵌入式TCP/IP网络门禁


来源:中国一卡通网   作者:语馨 收编   发布时间:2008-7-23 16:47:37   字体[]
关键词:嵌入式  tcp/ip门禁  网络门禁  tcp/ip  
摘  要:在某些对网络速度要求不高的领域,可用单片机实现TCP/IP;在对性能要求高的场合,可选择后两种方案。

2.2 嵌入式TCP/IP的程序结构 

    Tliner函数功能是调用TCPTimer处理TCP数据包的重发等功能,调用每个接口的Input函数接收到达的数据包。Timer函数必须在短时间(一般为20ms)内被调用一次,否则接收数据包和TCP定时等功能将停止。 

嵌入式TCP/IP的程序结构

    如图4所示,程序主流程是一个大循环,在循环中处理发送数据包等应用层协议的同时,查询变量bTimeOut,在定时中断中将bTimerOut设置为真。应用层在程序流程中反复查询bTimerOut是否为真,若为真则调用Timer(),然后设置bTimerOut为假。

    在使用嵌入式操作系统时,还要注意网络设备驱动函数被重入的问题。以NE2K的以太网卡为例,拷贝数据包到网卡缓存前要先设置寄存器(如起始地址)。如果设置完寄存器以后中断发生且放重入。则寄存器的设置被修改,中断返回以后拷贝将出错。
 
2.3 嵌入式TCP/IP运行速度优化 

    TCP/IP发送过程中主要的运算量集中在3部分:应用程序将数据拷贝到RAM;计算TCP校验和;将RAM中的数据包拷贝到网络设备的发送缓冲区。对于每个字节数据,两次拷贝大致共使用12×2=24个指令周期;计算TCP校验和使用16个指令周期。采用12MHz晶振,最高网络传输速度为25KB/s。 

    为了提高速度可以采用快速CPU或提高晶振频率。另外,尽量避免使用Reentrant函数。Reentrant类型的函数比一般函数速度要慢很多,但某些时候为了程序结构的需要必须使用Reentrant,这就需要在速度和结构之间作一个选择。选择的方法有:使用“指定存储类型”的指针(memoryr-specific pointer);精简协议栈去除运算量大但是用处不大的功能,目前TCP定时重发时间是固定的,也没有拥塞窗口控制和IP层路由;防止数据包不必要的拷贝;优化计算校验和与内存拷贝函数。 

3 TCP/IP的嵌入式实现 

    TCP/IP协议实现一般以软件方式嵌人到ROM中,然后通过网络通信技术与专用嵌入式网关连接,运行TCP/IP协议,并提供TCP/IP到用户的轻型网络的连接和路由功能。 

3.1 内存管理方法和无多余数据包拷贝的实现 

    嵌入式TCP/IP的内存管理可用链表方法,即根据数据包大小分配相应大小的内存块。如图5所示,链表将内存块链接起来,used字段表示该内存块是否正在使用,pStart和pEnd表示数据部分有效数据的开始地址和结束地址。 

深层讨论嵌入式TCP/IP网络门禁

    分配时,搜索内存链表找到一个没有分配的比所需空间大的内存块,截取所需的大小。该内存块被截取以后可能还有较多剩余,这时将剩余部分从原内存块中分离出来,成为一个新的内存块,并插入链表。释放时,将used置为假。如果pNext或pPre指向的链表单元也是空闲的,则将其与自己合并。以防止内存分片。在协议层之间传送数据包只要传送内存块的起始地址即可。这种内存管理方法空间浪费小,但运算量相对较大。 

3.2 整序、重发与窗口控制的实现 

    使用队列缓存的方式来实现整序、重发和窗口控制。队列的一个元素指向一个数据包,队列的最大长度没有限制。
对于整序,使用ooSeq队列,如果发现接收的TCP包序号并不是希望的,但序号在接收窗口内,此时不能立刻接收这个包也不应丢弃,先将这个包放入ooSeq队列。当一个希望的TCP包被接收以后,再查看ooseq队列现在是否有TCP包成为了希望的数据包,如果有则将其取出并处理。 

    对于重发,使用unacked队列,每个需要被应答的TCP数据包发送以后都要放入unacked队列,直到被应答后才从队列中删除。TCP重发定时只针对unacked队列第一个TCP包。如果定时超出,则重新发送;如果重发次数超出规定值,则报错。
对于窗口控制,使用unsend队列,如果发现对方的窗口过小无法接收这个数据包,则只发送部分数据,将多余部分放入unsend队列,等待对方发来TCP包通知新的窗口大小时,再次判断是否可以发送。在unsend队列不为空的情况下,须发送的数据包都应插入unsend队列。 

3.3 捎带应答的实现 

    捎带应答是指,当对方一个需要应答的TCP包到达时,不马上给予应答,而是等待一段较短的时间。如果在这段时间内有数据发送,则会捎带给予应答,从而减少了包的发送数量。 

    若暂时没有数据须发给对方或数据还未准备好,则等待一定的时间;如果在该时间内准备好了数据,则可使用捎带应答。使用捎带应答就不可能对每个帧都作确认,可用对某个帧的确认来代替对该帧之前所有帧的确认。 

4 总 结 

    嵌入式系统中大量存在的是8/16位低速处理器,在进行Internet接入时,由于本身资源的限制,很难实现完整的TCP/IP协议。本文从既实现相应的功能又节省系统资源角度出发,对协议进行有针对性的模块化裁剪和优化设计,可以在单片机/ARM上嵌入TCP/IP协议簇实现嵌入式Internet接入。 

    经过优化设计的嵌入式TCP/IP,支持套接字形式的多个TCP连接;支持多个网络设备;支持通过网关发送数据包和数据包转发功能,响应ping命令;支持TCP包的整序、重发和窗口控制流量控制。实践证明,这种设计方式灵活,能按用户需求实现很多复杂的功能。

技术文章投稿、合作信箱:yktchina-admin@163.com        字体[] [进入博客] [进入论坛] [推荐给朋友
 
      【相关文章
·UML在指纹门禁系统开发中的应用  2008-01-25
·生产线嵌入式RFID终端读写器设计  2007-11-29
·嵌入式智能平台为城市一卡通打造智能化终端  2006-12-29
·基于89C51的IC卡读写器设计与实现  2006-12-29
·基于网络的门禁系统的设计  2008-07-24

      【图片文章
  推荐文章
  入网产品
产品分类:   智能卡 门禁 考勤 巡更 消费 水控 
停车场  读写器 二代证 制卡 证卡 监控 IC卡三表
  推荐方案
方案分类:  校园一卡通   城市一卡通      
企业一卡通   会员一卡通   小区一卡通  其它
  论坛热贴
网站简介 | 广告服务 | 客服中心 | 企业链接 | 法律声明
Tel:0755-86227112    Fax:0755-86227110    Email:yktchina@gmail.com    QQ: (销售) (客服)
客服电话:0755-86227155    一卡通QQ群: 64898936  44467041  38535626  36815359  42721781  42721639
Copyright © 2006-2007 All Rights Reserved 粤ICP备06079390号 中国一卡通网|智能卡|门禁|考勤|一卡通 版权所有