一种新的嵌入式TCP/IP协议栈的研究与实现
时间:09-17
来源:互联网
点击:
1 引言
嵌入式Internet是近几年随着嵌入式系统的广泛应用和计算机网络技术的发展而兴起的一项新兴概念和技术。单片机或微控制器(MCU,Micro ControllerUnit)被广泛应用在家庭和工业的各个领域,通称嵌入式系统。嵌入式系统具有以应用为中心、以计算机技术为基础、软件硬件可裁剪等特点,赢得了巨大的市场,在应用数量上远远超过了各种通用计算机。随着Internet/Intranet的发展,各种家用电器,从空调到微波炉,都产生了连入互联网的要求。
如何通过Internet共享嵌入式设备的信息,实现设备的远程访问、控制和管理,对接入到网络上各个节点的设备实时监控,这就是设备接入互联网需要解决的问题。TCP/IP协议是标准的网络协议,如果能把TCP/IP协议嵌入到设备的MCU中,就可以通过它在设备和Internet之间建立通信链路,这样就解决了设备与网络互联的关键技术。
2 Simplified TCP/IP协议栈的特点
和嵌入式系统面向特定的应用一样,分析嵌入式TCP/IP协议栈的特点和对传统的TCP/IP协议栈进行简化也要针对特定的系统环境和应用
背景。离开了特定的系统环境和应用背景来讨论嵌入式TCP/IP协议栈的特点和对TCP/IP协议栈进行简化是没有意义的。这里所讨论的嵌入式TCP/IP协议栈是针对那些低档的8位/16位嵌入式系统能支持嵌入式Internet直连体系结构而提出的。
嵌入式系统有限的处理能力以及存储资源相对缺乏,因此在嵌入式Internet环境里使用标准TCP/IP协议栈是不合适的。把TCP/IP协议栈从普通的PC机移植到MCU,内存和内存管理成了瓶颈。为了既实现相应的网络功能又节省系统资源,需要对协议栈进行有针对的模块化裁减。针对家电系统中的8位/16位MCU结构设计了一个TCP/IP协议簇的子集,称之为Simplified TCP/IP协议栈。其中包括IP、UDP、ARP和ICMP等协议的全部或部分功能,对协议进行了有选择的实现,尽最大可能保持协议功能和机制上的完整。
Simplified TCP/IP协议栈按照网络体系分层思想设计,如图1所示。其中每一层都被设计成一个功能相对独立的模块,负责处理各自的数据,通过函数调用把控制权交给上层或下层的模块。
低档嵌入式系统中一般没有实时多任务操作系统支持,所以Simplified TCP/IP协议栈直接面对硬件。MCU中的程序结构一般是顺序执行和硬件中断相配合的方式。嵌入式处理器的时钟频率低,地址、数据总线窄,所以一个IP包的处理要花很多的时间。如果采用中断处理方式,势必影响其他中断和任务的执行。当系统中有实时数据采集、串口通信中断、键盘中断等实时任务时,则会造成冲突。设计时需要合理划分中断处理程序,将无实时要求和费时的SimplifiedTCP/IP协议栈处理放在主程序顺序循环中。对网络接口控制芯片采用查询式,即在其他中断任务的执行间隙处理Simplified TCP/IP协议栈,以牺牲响应速度换取系统可靠性,如图2所示。
3 TCP/IP协议栈的裁减
普通操作系统可支持完整的TCP/IP协议族,但嵌入式系统中大多很难做到,也不需做到。嵌入式系统中实现的协议要根据各个系统的特点及功能来进行设计。TCP/IP协议族中,只实现与实际需要有关的部分,而不使用的协议则一概不支持。Simplified TCP/IP协议栈中支持的协议。
3. 1 地址转换协议—ARP协议
ARP协议是某些网络接口(如以太网和令牌环网)使用的特殊协议,ARP的地址解析功能是为IP地址和数据链路层使用的硬件地址提供动态地址映射。通用计算机系统中,ARP高速缓存一般设计成双向数据链的形式,这样整个缓存可以方便地动态增减。但是这种非线性存储的链表式缓存结构,在进行表项匹配查找时比较费时,不适用于嵌入式系统。因此ARP的地址缓存采用了线性数组形式的结构。它在内存中是连续线性存储的,查找速度快。嵌入式应用中节点不是很多,即ARP缓存容量不需要很大,因此将ARP高速缓存设计成固定大小。被动的嵌入式服务器主要是接收来自客户的服务请求,为客户提供服务,即嵌入式服务器不会主动向某一主机发数据帧。既然如此始终处于被动状态的服务器完全不需要向任何主机发送ARP请求,设备只要能处理ARP请求并返回ARP应答即可。鉴于这种情况,ARP协议中选择对ARP应答部分进行实现。
3. 2 网际协议—IP协议
IP协议是TCP/IP协议簇中最为核心的协议,提供不可靠的无连接的数据报传送服务。所有的TCP、UDP和ICMP数据都以IP数据报的格式传输。IP协议非常重要,实现比较复杂。从实现Simplified TCP/IP协议栈的要求出发,约简IP协议需要把握两个原则:①对接收到的IP数据报进行处理,向上层协议进行提交;②负责对UDP报文进行封装,交给数据链路层进行装帧。当设备收到发给自己的数据报时,首先判断是否是自己的数据报,若不一致则丢弃该数据报;否则进行IP校验和的验证,当数据报无误后,去掉IP头部,将IP数据提交上层处理。
一般情况下,数据包要经过不同的物理网络,则IP层必须支持数据包的分片和重装。但IP的分片和重组所需的开销比较大,而现有的网络一般都支持以太网,并且在此次应用的8/16位嵌入式系统中,传输的数据都是一些数据量比较小的状态信息或者控制信息。因此数据报都不会超过协议所限制的1500字节。如果极少数数据实在比较大,可以在程序中进行处理,分批次进行传输。因此可以裁减掉IP的分片和重组功能。而IP数据包的路由功能则交给默认网关执行。
嵌入式Internet是近几年随着嵌入式系统的广泛应用和计算机网络技术的发展而兴起的一项新兴概念和技术。单片机或微控制器(MCU,Micro ControllerUnit)被广泛应用在家庭和工业的各个领域,通称嵌入式系统。嵌入式系统具有以应用为中心、以计算机技术为基础、软件硬件可裁剪等特点,赢得了巨大的市场,在应用数量上远远超过了各种通用计算机。随着Internet/Intranet的发展,各种家用电器,从空调到微波炉,都产生了连入互联网的要求。
如何通过Internet共享嵌入式设备的信息,实现设备的远程访问、控制和管理,对接入到网络上各个节点的设备实时监控,这就是设备接入互联网需要解决的问题。TCP/IP协议是标准的网络协议,如果能把TCP/IP协议嵌入到设备的MCU中,就可以通过它在设备和Internet之间建立通信链路,这样就解决了设备与网络互联的关键技术。
2 Simplified TCP/IP协议栈的特点
和嵌入式系统面向特定的应用一样,分析嵌入式TCP/IP协议栈的特点和对传统的TCP/IP协议栈进行简化也要针对特定的系统环境和应用
背景。离开了特定的系统环境和应用背景来讨论嵌入式TCP/IP协议栈的特点和对TCP/IP协议栈进行简化是没有意义的。这里所讨论的嵌入式TCP/IP协议栈是针对那些低档的8位/16位嵌入式系统能支持嵌入式Internet直连体系结构而提出的。
嵌入式系统有限的处理能力以及存储资源相对缺乏,因此在嵌入式Internet环境里使用标准TCP/IP协议栈是不合适的。把TCP/IP协议栈从普通的PC机移植到MCU,内存和内存管理成了瓶颈。为了既实现相应的网络功能又节省系统资源,需要对协议栈进行有针对的模块化裁减。针对家电系统中的8位/16位MCU结构设计了一个TCP/IP协议簇的子集,称之为Simplified TCP/IP协议栈。其中包括IP、UDP、ARP和ICMP等协议的全部或部分功能,对协议进行了有选择的实现,尽最大可能保持协议功能和机制上的完整。
Simplified TCP/IP协议栈按照网络体系分层思想设计,如图1所示。其中每一层都被设计成一个功能相对独立的模块,负责处理各自的数据,通过函数调用把控制权交给上层或下层的模块。
低档嵌入式系统中一般没有实时多任务操作系统支持,所以Simplified TCP/IP协议栈直接面对硬件。MCU中的程序结构一般是顺序执行和硬件中断相配合的方式。嵌入式处理器的时钟频率低,地址、数据总线窄,所以一个IP包的处理要花很多的时间。如果采用中断处理方式,势必影响其他中断和任务的执行。当系统中有实时数据采集、串口通信中断、键盘中断等实时任务时,则会造成冲突。设计时需要合理划分中断处理程序,将无实时要求和费时的SimplifiedTCP/IP协议栈处理放在主程序顺序循环中。对网络接口控制芯片采用查询式,即在其他中断任务的执行间隙处理Simplified TCP/IP协议栈,以牺牲响应速度换取系统可靠性,如图2所示。
3 TCP/IP协议栈的裁减
普通操作系统可支持完整的TCP/IP协议族,但嵌入式系统中大多很难做到,也不需做到。嵌入式系统中实现的协议要根据各个系统的特点及功能来进行设计。TCP/IP协议族中,只实现与实际需要有关的部分,而不使用的协议则一概不支持。Simplified TCP/IP协议栈中支持的协议。
3. 1 地址转换协议—ARP协议
ARP协议是某些网络接口(如以太网和令牌环网)使用的特殊协议,ARP的地址解析功能是为IP地址和数据链路层使用的硬件地址提供动态地址映射。通用计算机系统中,ARP高速缓存一般设计成双向数据链的形式,这样整个缓存可以方便地动态增减。但是这种非线性存储的链表式缓存结构,在进行表项匹配查找时比较费时,不适用于嵌入式系统。因此ARP的地址缓存采用了线性数组形式的结构。它在内存中是连续线性存储的,查找速度快。嵌入式应用中节点不是很多,即ARP缓存容量不需要很大,因此将ARP高速缓存设计成固定大小。被动的嵌入式服务器主要是接收来自客户的服务请求,为客户提供服务,即嵌入式服务器不会主动向某一主机发数据帧。既然如此始终处于被动状态的服务器完全不需要向任何主机发送ARP请求,设备只要能处理ARP请求并返回ARP应答即可。鉴于这种情况,ARP协议中选择对ARP应答部分进行实现。
3. 2 网际协议—IP协议
IP协议是TCP/IP协议簇中最为核心的协议,提供不可靠的无连接的数据报传送服务。所有的TCP、UDP和ICMP数据都以IP数据报的格式传输。IP协议非常重要,实现比较复杂。从实现Simplified TCP/IP协议栈的要求出发,约简IP协议需要把握两个原则:①对接收到的IP数据报进行处理,向上层协议进行提交;②负责对UDP报文进行封装,交给数据链路层进行装帧。当设备收到发给自己的数据报时,首先判断是否是自己的数据报,若不一致则丢弃该数据报;否则进行IP校验和的验证,当数据报无误后,去掉IP头部,将IP数据提交上层处理。
一般情况下,数据包要经过不同的物理网络,则IP层必须支持数据包的分片和重装。但IP的分片和重组所需的开销比较大,而现有的网络一般都支持以太网,并且在此次应用的8/16位嵌入式系统中,传输的数据都是一些数据量比较小的状态信息或者控制信息。因此数据报都不会超过协议所限制的1500字节。如果极少数数据实在比较大,可以在程序中进行处理,分批次进行传输。因此可以裁减掉IP的分片和重组功能。而IP数据包的路由功能则交给默认网关执行。
- 蓝牙无线电调制解调器Siw1701原理与应用(02-19)
- 嵌入式移动数据库的关键技术(03-20)
- 在嵌入式SQL中怎样使用游标(08-12)
- 嵌入式Linux系统软件开发学习思路详细介绍 (08-20)
- 基于AVR单片机的嵌入式“瘦服务器”系统设计思想(03-11)
- 嵌入式系统设计中的存储碎片收集策略(05-04)