嵌入式TCP

2024-10-16

嵌入式TCP(精选7篇)

嵌入式TCP 篇1

一、引言

嵌入式网络通信在各个方面都得到了非常广泛的运用。目前最常见的就是总线和USB数据传输方式, 传输速度即使可以达到较快的水平, 但是其并不能够满足长距离的数据传输。因此, 以太网能够弥补其在数据传输方面的缺陷。以太网能够实现一百米距离点对点的数据传输, 如果要实现更加远距离的数据传输, 则需要使用路由器或者交换机来完成。此文基于对CP2200嵌入式TCP/IP协议进行探究, 并实现以太网嵌入式系统设计。

二、嵌入式TCP/IP协议的探究与实现

TCP/IP协议栈从上到下分别是由应用层、运输层、网络层和网络接口层所组成的四层结构, 每一层各司其职, 都有着不同的网络协议。依据软件实际使用的情况, 在嵌入式系统当中为了达到网络通信的目的, 需要对TCP/IP协议族进行裁剪。在对软件进行初始化的时候, 也对单片机同时进行了初始化, 其中包括对系统时钟、定时器、端口和串口进行了初始化。当然还有CP2200进行初始化, 其中包括对MAC层和物理层进行初始化, 并且中断使能。

在TCP/IP协议栈当中, 运用层包含HTTP协议, 运输层包含TCP协议和UDP协议, 网络层包含ARP协议、IP协议和ICMP协议。以下是嵌入式TCP/IP协议的每个模块的实现流程:

1、HTTP协议模块。

HTTP协议的发送函数http_send () 即是TCP协议的发送函数和数据信息的结合, 但是http_send () 函数主要是实现设计网页内容, JPEG的图片和HTML (超文本标记语言) 等信息的使用依靠其函数实现。

2、TCP协议模块。

TCP协议的发送函数tcp_send () 是需要发送一个不包含任何数据的TCP报文, 其作用是能够对字节头和校验和进行处理。通过对时间功能的设定, TCP协议的重传函数tcp_retransmit () 能够实现对数据最多为两次重传的传输功能, 实现传输功能的应用程序是依靠传送页数据而实现的, 即是HTTP服务程序。TCP协议的保活函数tcp_inacivity () 是没半秒运行一次, 当连接正在建立的状态下, 保活期满了的时候并且没能被再次使用, 就会中断连接。TCP协议的接收函数tcp_rcve () 实现对字节头和校验和的运算, 进而对HTTP服务程序和其连接状态等情况进行断定, 最后进行TCP有限的状态机判断数据包的程序。

3、UDP协议模块。

UDP协议的发送函数udp_send () 能够实现对字节头和校验和进行处理, 其接收函数udp_rcve () 是对所接收的UDP报文进行处理, 如果没有受到UDP报文数据, 就需要发送ICMP终点不可到达报文。

4、ARP协议模块。

ARP协议的发送函数arp_send () , 在发送请求报文的时候, 对于不清楚目的物理地址的, 则是广播报文;在发送应答报文的时候, 接收的一方的目的物理地址需要添加物理地址。ARP协议的重传函数arp_retransmit () 能够实现当其发出ARP请求之后的半秒时间内没有任何响应, 则进行再一次发送的功能, 但是当两次发送没有得到响应就会对报文进行删除。ARP协议的缓存更新函数age_arp_cache () 能够每一分钟更新一次。ARP的解析函数arp_resolve () 能够对所发送的IP报文目的IP地址进行解析, 如果发送IP地址和目的IP地址都不在相同的一个网络当中, 那么此IP地址是网关IP地址, 然后在缓存表当中对其进行查找, 如果找不到就需要发送ARP请求报文。ARP协议的接收函数arp_rcve () 能够实现对报文进行接收或者应答, 对缓存表需要进行更新和重新定时, 如果所接受的报文是应答报文, 则需要发送等候地址解析的IP报文, 但是所接收到的报文是请求报文, 则需要发送ARP应答报文。

5、IP协议模块。

IP协议的发送函数ip_send9 () 能够实现对发送IP报文的20字节头和校验和进行处理, 进而使用网络接口层进行发送。IP协议接收函数ip_rcve () 能够根据版本情况和所接收报文的种类转移到相应的接收函数来处理。

6、ICMP协议模块。

ICMP协议模块的接收函数icmp_rcve () 是实现对ping请求的接收进行处理, 并且处理ICMP不同种类的报文。其中Ping命令请求信息函数ping_send () 是用来检测发送接收两方的接收情况。

三、结言

综上所述, 此文对TCP/IP的网络结构中的各层协议模块进行探究, 基于网络控制芯片CP2200的以太网接口和单片机C8051F340, 并用编程语言来实现嵌入式以太网通信, 同时进一步通过对各个层协议的裁剪, 实现嵌入式以太网的数据通信。根据现阶段来看, 嵌入式网络通信基本上都是依靠TCP/IP协议来实现的, 嵌入式设备和网络两者相结合是嵌入式系统今后发展的主要方向。因此, 我们要更加深入地对嵌入式TCP/IP协议进行探究以及更深层次的功能实现。

参考文献

[1]王树森, 王希杰, 刘秋菊.嵌入式Web远程粮情监控系统的研究与实现[J].自动化仪表, 2013 (10) :243-247.

[2]王宝宝, 余世明, 王振宇.嵌入式Internet中Nagle算法及其应用研究[J].中国工程科学, 2014 (02) :101-105.

嵌入式TCP 篇2

随着互联网商品化的不断发展, 互联网信息共享表现出越来越大诱惑力。在不用PC机基础上, 通过ISP采取8位的微控制器接到互联网上并取代传统以PC机为核心应用模式, 已成为现在乃至未来互联网发展主要趋势。为把单片机体系有效接到互联网上务必要做好两手准备, 在硬件上要根据系统的主控器加上网络接口, 在软件商要为之提供相对应通信协议。因单片机具有较小存储单元且数据处理较慢, 因此采用PC机TCP/IP协议已无法嵌到单片机里, 所以简化TCP/IP协议, 实现单片机和互联网间电子邮件的运输对达到单片机和互联网间信息传输目的具有重要推动作用, 下面主要研究嵌入式系统的TCP/IP协议的应用研究。

2. 嵌入式系统TCP/IP协议在硬件中的应用

2.1 单片机嵌入互联网模式选择

2.1.1 EmWarea其EMIT技术

这种技术采取的是标准互联网协议并对16位和8位嵌入式的设备管理, 该类嵌入模式是使用TCP/IP协议栈和网关在Internet里桥接代理。选取EMIT技术虽可使用在各类型单片机上, 但却要求系统工程师熟悉相关接口和掌握em Ne T协议, 有着较大工作量。

2.1.2 PC网卡加上专用网

该类单片机嵌入互联网模式是采用CANBus、RS485、RS232等专用网络将小批量单片机均连接起来后, 再把专业网络均连接在同一台的PC机上面, 因其依靠PC机为协议实现机制转换, 所以当多个单片机体系较为分散时, 该类专用网络的布置就显得很不方便, 在PC机里装上专门协议软件来转换机制, 又将发开成本增加了。

2.1.3 MCU加上网卡芯片

这类单片机嵌入互联网模式是用单片机对TCP/IP协议进行加载并据此对以太网网卡进行控制实现数据的传输, 是采用TCP/IP协议嵌入互联网。该饭饭么有使用网关或PC机平台, 因此, 开发成本降低, 只需相关人员深层次了解单片机、网卡的驱动程序和TCP/IP协议。

分析完以上三种单片机嵌入互联网方案, 可知MCU加上网卡芯片为最佳方案, 最为经济模式。

2.2 系统的硬件结构

系统单片机应该采取8 9 C 5 1, 而网卡芯片应该采取RT L 8 0 1 9 A S。此外, 读取键盘其输入数据与指令应该串行E2PROM采取24C256.89C51在处理操作时, 要通过网络接口的电路和网卡芯片来实现单片机和互联网接入任务, 从而进一步达成电子邮件接收发送功能。

3. 嵌入式系统TCP/IP协议在软件中的应用

3.1 TCP/IP协议特点

高级系统里虽可支持完整TCP/IP协议, 但针对单片机系统却很难将其做到。根据以上特点, 第一, 要按照各类系统特点及功能对TCP/IP协议进行特定设计, 仅仅需要达到相关协议需求;第二, 针对具体实际运用, 为避免单片机其内部资源出现不足, 在保证所需协议实现基础功能前提下做好精简工作。单片机中程序结构通常为硬件中断和顺序执行相结合模式, 因此, 对于处理TCP/IP协议工作应该将其在主程序顺序循环里, 使用查询式来控制网卡芯片, 其它中断任务实行间隙中间隙TCP/IP协议处理, 使用时间成本换取系统可靠性。

单片机读取数据是靠RTL8019AS在网络上面接受, 并从网络接口的控制程序处将其读到缓冲区即E2PROM里来检测协议字段类型, 从而去夜店那种协议可用来处理该分组。当格式出现错误时就将该分组丢弃。

3.2 TCP/IP协议的实现

实现软件采取51系列的单片机C语言开发的平台伟福6000, 同时用COMP51编译器, 下面具体就协议实现进行分析:

3.2.1 APR协议

APR协议其首要目的是完成IP地址和以太网地址间映射。在APR包里操作码相应字段突出APR应答、APR请求、RARP应答、RARP请求四种操作形式。该单片机体系仅仅对APR请求与APR应答响应, 为有效提升网络传输效率与速度, 防止每次数据传输前都要对APR地址给予解析才可活动响应目的地址, 可构建一个储存常用目的地地址APR的高速缓存。其实现需要两个进程: (1) 进程处理, 处理APR响应与APR请求, 与此同时也将APR的高速缓存更新; (2) 进程寻址, 在APR的高速缓存里为相应IP地址寻址与之对应以太网的地址。

3.2.2 IP协议

为实现单片机里对IP协议进行加载, 同时又不对多个IP地址支持, 主要通过以上进程来完成: (1) 进程发送, 首先把待发数据密闭封装到IP包里, 然后再查看本机和目的主机在同一子网里与否, 当处在同一子网里就将IP数据直接发送给目的主机, 若不在同一子网就将数据包经默认路发送到路由器里; (2) 进程接收, 在得到了IP包过后, 要对TP目的地址、头部版本等进行校验, 正确以后, 再将协议字段类型给予解析, 并交由高层协议去处理。

3.2.3 ICMP协议

IP协议因无法提供链接服务, 所以错误信息和报文无法传送给最初主体, 针对此情况, 对系统里接收ICMP包校验且无误后, 且CODE域和TYPE来替代echo请求后, 还需发送echo来应答, 从而实现网络其诊断功能。

3.2.4 TCP协议

TCP协议面向端对端、连接可靠的通信协议, 该部分主要通过以下进程达成: (1) 构建连接。首先在客户机发送对端接入要求时, 要可随时选送初始的序号;其次, 服务器同样要选送属于自身初始的序号, 客户机传送来的序号对答号要及时返送到客户机上;最后, 客户机要再次发送应答段给服务器来当作服务器发送请求接入响应, 包括数据每个TCP段均要取得相应对端返回应答段来当作握手信号以确保数据的可靠接收。作为应答段其自身则不需应答来预防应答陷入永无止境嵌套; (2) 进程验证, 该进程要使用相应措施对传输中错误给予消除来确保数据传输可靠性, 例如:可用持续跟踪法对已发出的数据段进行跟踪来判断其返回与否以及数据丢失与否;也可用序列号对通信时失序、重复问题给予解决;对于数据误码的问题可用校验来解决等; (3) 进程流量控制, 首先设计滑动窗口用循环缓冲区域来做, 对于窗口与ACK的配合要指明处于正确接收最后数据包后, 同时要处在可接受序列号的范围内, 并以此来控制流量; (4) 连接关闭, 首先客户机对服务器发送关闭段, 该时刻客户机只可对数据进行接收, 不可再次发送数据;其次, 服务器对客户机发送关闭即应答段, 该时段, 服务器仍旧可为客户机传输数据, 也就是接入处在半关闭的状态;再次, 服务器对客户机发送关闭段, 此时可服务器不可再次发送出去数据;最后, 客户机务必要对服务器关闭做出响应, 对服务器发送关闭即应答段。

3.2.5 SMIP协议

SMIP协议只需依赖一个可靠规则数据的流通道, 而不需依赖特定传输子系统。SMIP主要为面向基于命令、文字的协议, 设计系统时该部分协议主要靠两进程构成: (1) 处理底层邮件, 提取信头其各字段的信息, 并按照数据编码性质来处理数据, 让其以用户能够接受刑事传输为图形用户的界面; (2) 发送邮件, 通过DATA、TO、RCPT、MAILFROM、HELO一系列接受方会话和指令, 由25号能够采取电子邮件的传输TCP其保留端口来进行邮件的传输工作。

综上所述, 嵌入式系统TCP/IP协议在硬件和软件上的应用可有效实现在单片机里采取电子邮件传输任务, 探究嵌入式系统TCP/IP协议的应用不仅能够提高单片机和互联网间信息共享度, 还可减少硬件的使用、降低成本和为使用带来便利。此外, 采取51系列的单片机, 虽然利于软件移植及二次开发, 但却有着较慢数据传输速度, 还需我们进一步探究。

参考文献

[1]吕宁, 冯崇涛.嵌入式系统TCP/IP协议栈的定制研究[J].自动化技术与应用, 2010 (08) .

[2]黄振宇.嵌入式TCP/IP在单片机与PC机通信中的应用[J].河南科技学院学报:自然科学版, 2011 (05) .

[3]王金华, 李允俊.物联网中嵌入式TCP/IP协议栈的设计技巧[J].信息安全与技术, 2011 (10) .

嵌入式TCP 篇3

以太网具有通用性强、技术成熟、带宽迅速增加等特性, 工业控制领域出现嵌入式技术, 尤其是ARM技术的发展和DSP在工业控制领域的广泛应用, 利用嵌入式技术实现以太网通信已经不难见到。嵌入式实时操作系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越容易。从根本上讲, 嵌入式设备接入网络, 当前基本采用基于TCP/IP的通信协议。该方案以LPC2210为核心元件研究基于ARM的嵌入式TCP/IP协议的实现的硬件电路, 同时在μC/OS-Ⅱ平台上编写应用软件程序。下面对系统做详实的阐述, 并重点介绍嵌入式实时操作系统μC/OS-Ⅱ[1]应用于TCP/IP时应进行合理的裁减。

1系统硬件设计

基于ARM的嵌入式TCP/IP网络通信系统主要包括ARM芯片和以太网控制器等芯片组成的以太网接口、驱动软件和嵌入式TCP/IP协议栈。硬件原理图如图1所示。

该方案设计相对简单, 硬件电路中采用的LPC2210[2]是Philips公司推出的微处理器, 带有16 KB RAM, 76个通用I/O口, 12个独立外部中断引脚, 集成有8通道的10位A/D, 能够基于芯片设计复杂的系统。虽然LPC2210具有较快的访问速度, 但片内没有集成FLASH, 所以这里扩展1片16 Mb FLASH SST 39VF160来保存用户程序。其架构满足μC/OS-Ⅱ正常运行的基本要求。

RTL8019AS是台湾Realtek半导体公司生产的以太网控制器, 其性能包括:支持EthernetⅡ和IEEE802.3标准;支持8/16位数据总线;内置16 KWord的SRAM;全双工, 收发同时达到10 Mb/s;支持BNC, AUI, UTP介质。RTL8019AS可提供100脚的TQFP封装, 减少了PCB面积, 更适合于嵌入式系统。HR901170A是汉仁电子有限公司生产的RJ45接口连接器 (带网络变压器/滤波器) , 该连接器满足IEEE802.3和IEEE902.3ab标准, 能够较好地抑制电磁干扰。通过HR901170A系统就可以连接到以太网上。

2嵌入式协议的选择

TCP/IP协议[3]是一组不同层次上的多个协议的组合, 通常被认为是一个包含链路层、网络层、传输层和应用层的4层协议系统, 如图2所示。嵌入式系统是为完成某种特定的功能而设计的专用系统。嵌入式系统不要求 (也不可能) 实现所有的TCP/IP协议, 所以嵌入式TCP/IP是对TCP/IP协议族进行选择而形成的协议集合。

首先在链路层上, 由于采用以太网的接入方式, 系统必须实现IEEE802.3所规定的CDMA/CD (载波监听多路访问及冲突监测) 协议, CDMA/CD协议不需用户实现, 此协议只要采用通用的NIC (Network Interface Controller, 网络接口控制) 芯片就可支持。为了保证系统在以太网中的通信, 系统还需实现ARP应答协议, 该协议用于将IP地址映射成以太网MAC地址。ARP协议包括ARP请求和ARP响应两部分, 系统与其他计算机通信, 就必须要支持ARP响应。ARP请求在本地建立了一个IP地址到MAC地址的映射, 保证了对外通信的有的放矢。RARP (逆地址解析) 协议主要用于解决如何从MAC地址得到IP地址, 主要用于无盘工作站中。在网络层, 由于系统要求能够在Internet中进行通信, 因此系统要实现IP协议。在TCP/IP协议族中, 网络层协议包括IP协议 (网际协议) 、ICMP协议 (Internet控制报文协议) 以及IGMP协议 (Internet组管理协议) 等。IP协议是TCP/IP族的核心协议, 它使异构网络之间的通信成为可能。因此RTU等系统数据跨越不同的网络进行传输就必须要实现IP协议。ICMP中规定了多种协议类型和代码, 如果完全地实现也要耗费不少的系统资源, 该嵌入式系统中, 在ICMP协议中能够测试网络的连通情况即可。传输层主要是在2台主机之间提供端到端的通信。传输层有2种不相同的传输协议:TCP (传输控制协议) 和UDP (用户数据报协议) 。TCP是面向连接的, 在不可靠的网络服务上提供端到端的可靠字节流。TCP协议设计了严格的3次建立连接握手过程、4次关闭连接握手过程以及捎带确认信息并通过滑动窗口进行流量控制的数据传输过程。UDP协议是不面向连接的, 它只是简单地把数据报从一台主机发送到另一台主机, 但并不保证该数据报能到达另一端, 可靠性必须由应用层来提供。考虑到系统中数据传输质量, 这里采用TCP协议。应用层协议主要是指用户进程。其包括:HTTP协议、FTP协议、POP3协议、SMTP协议、SNMP协议。

3系统软件设计

该TCP/IP网络通信系统为了具有较好的实时性和稳定性, 采用μC/OS-Ⅱ设计系统软件。在μC/OS-Ⅱ平台上, 软件设计工作主要包括:μC/OS-Ⅱ在LPC2210上的移植和TCP/IP协议在μC/OS-Ⅱ上的实现以及系统应用程序的编写。

μC/OS-Ⅱ的移植[4]工作主要集中在下面几个文件中:OS_CPU.H, OS_CPU_A.ASM, OS_CPU_C.C。另外, 在INCLUDES.H中必须包括LPC2210文件LPC2210.H;OS_CFG.H用于系统应用μC/OS-Ⅱ中的初始化配置。OS_CPU.H主要包括一些与处理器和编译器相关的常量和类型定义等, 而且需注意LPC2210的堆栈方向是由高到低, 用OS_STK_GROWTH来设置堆栈的增长方向。因此将OS_STK_GROWTH设为1。OS_CPU_A.ASM中需编写4个汇编语言函数:OS_TASK_SW () , OS_IntCtxSw () , OSStartHighRdy () 和OSTickISR () 。

以太网链路层遵循的IEEE802.3协议的CSMA/CD和CRC校验等功能由网络控制芯片Rtl8019AS完成, LPC2210芯片则完成其他TCP/IP协议的解释和执行。LPC2210控制RTL8019AS完成通信任务时, 首先要对RTL8019AS复位, 并对RTL8019AS的寄存器进行初始化, 确定发送和接收的条件, 然后才能发送数据或接收数据。当一帧数据发送结束、接收到1帧数据或出错等事件发生时, RTL8019AS向LPC2210申请中断, LPC2210响应中断后根据中断状态寄存器的内容进行相应的处理。

在LPC2210内部, ARM程序完成对数据的打包解包。系统复位后, 系统首先发送ARP请求, 建立地址映射, 并内部中断进行定时更新。ARM芯片根据情况将采集或收集到数据按照TCP协议或UDP协议格式打包, 送入网卡芯片, 由网卡芯片将数据输出到局域网中。ARM芯片对数据报进行分析, 如果是ARP (物理地址解析) 数据包, 则程序转入ARP处理程序。如果是IP数据包则进一步判断是哪个协议向IP传送数据。如果是ICMP协议, 判断是否为Ping请求, 是则应答, 不是丢弃该数据包;如果是TCP或UDP协议, 且端口正确则按相应的协议处理数据, 端口不正确丢弃数据包。TCP/IP系统框图如图3所示。

TCP/IP在μC/OS-Ⅱ上的设计结束后, 剩下的工作就是编写应用程序。将系统划分成若干个任务, 每个任务对应一个独立的无限循环的主程序, 完成一个特定的功能。为简化设计, 应用程序采用静态优先级, 即应用程序在执行的过程中各个任务优先级保持不变。

4结语

基于ARM的嵌入式TCP/IP协议的设计方案, 论述了软、硬件的设计方法和协议的选择。该设计方案在硬件实现上简洁可靠;软件实现上可维护性好;可扩展性好, 有利于系统的后续开发, 降低了系统设计的复杂性。实验证明该方案可行性强, 可以直接把系统的处理数据送到以太网上传输。可以看出, ARM和嵌入式TCP/IP协议将会得到更大的发展和更广阔的应用。

参考文献

[1]Jean J Labrosse.嵌入式实时操作系统μC/OS-Ⅱ[M].2版.北京:北京航空航天大学出版社, 2003.

[2]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社, 2005.

[3]周立功.ARM嵌入式系统软件开发实例 (一) [M].北京:北京航空航天大学出版社, 2004.

[4]任哲.嵌入式实时操作系统μC/OS-Ⅱ原理及应用[M].北京:北京航空航天大学出版社, 2005.

[5]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社, 2003.

[6]季昱, 林俊超, 宋飞.ARM嵌入式应用系统开发典型实例[M].北京:中国电力出版社, 2005.

[7]马忠梅, 马广云.ARM嵌入式处理器结构与应用基础[M].北京:北京航空航天大学出版社, 2002.

[8]王田苗.嵌入式系统设计与实例开发──基于ARM微处理器与μC/OS-Ⅱ实时操作系统[M].北京:清华大学出版社, 2002.

[9]田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社, 2005.

[10]肖军, 邵景峰, 马辉, 等.嵌入式实时操作系统与网络构件的设计[J].可编程控制器与工厂自动化, 2006 (10) :70-72, 48.

嵌入式TCP 篇4

1 嵌入式 TCP/IP 协议

TCP/IP包含应用层、传输层 、网络层等一系列协议 , 且每层可采用的协议有多种。由于嵌入式设备的硬件资源有限, 其可直接寻址的程序空间和数据空间都很小, 处理速度较慢, 所以嵌入 式设备一 般采用最 精简的TCP/IP协议栈 (包括ARP、IP、UDP、ICMP等协议)[1], 在设计和开发过程中主要使用了ARP和TCP协议。

(1) ARP协议 (地址解析协议 : Address Resolution Proto- col) 是获取MAC物理地址的TCP/IP协议, 其主要作用是通过已知IP地址, 获取对应MAC物理地址的协议。当ARP请求被广播到网络上后, 目的主机收到请求包后发出一个ARP回应包, 给出自己的MAC地址和IP地址[2]。

(2) TCP协议 (传输控制协议 : Transmission Control Pro- tocol) 是一种面向连接的、可靠的、基于字节流的传输层通信协议, 通过3次握手建立连接, 通信完成时要删除连接, 采用“带重传的肯定确认”技术来实现传输的可靠性。

2 系统设置流程

上位机远程修改嵌入式设备的IP地址的流程包括:

(1) 上位机发出查询下位机MAC地址的ARP广播请求包, 嵌入式设备接收后响应ARP请求, 返回本地MAC地址; (2) 上位机记录响应ARP请求的嵌入式设备IP地址和MAC, 为建立TCP连接做准备; (3) 选择需要进行修改的嵌入式设备IP并发送TCP连接请求, 嵌入式设备建立与上位机的TCP连接;(4) 上位机发送IP?参数数据包, 嵌入式设备截取数据包中的信息来完成本地IP设置[3]。

3 上位机软件系统实现

在VC++开发平台上对上位机软件系统进行了实现, 使用基于TCP的Socket与嵌入式设备进行连接, 通过gethostby- name函数返回给定嵌入式设备IP地址对应于的包含主机名字和地址信息的hostent结构指针。使用IP地址和默认端口号与下位机进行连接, 如果连接成功则将封装好的数据包到下位机并给出提示[4]。关键代码如下:

4 结语

嵌入式TCP 篇5

嵌入式系统已成为计算机应用领域的一个重要组成部分,多种多样的以嵌入式系统为核心的数字化产品已开始成为信息处理的主流。随着后PC时代的到来,嵌入式系统将以PC机不可比拟的软、硬件可裁剪,结构灵活性,稳定性和经济性成为计算机领域的新的爆发点。随着嵌入式系统应用越来越广泛,人们自然想到了如何将Internet技术和嵌入式技术结合起来,使基于开放的、标准的、独立于系统平台的TCP/IP通信协议的Web技术在嵌入式系统中得到更广泛的应用和普及。

将精简后的TCP/IP协议引入到嵌入式系统中,尤其是低端的8位或16位处理器,实现的嵌入式Web服务器,利用已有的Internet网络通过B/S模式实现远程监测、远程控制和数据采集等功能。该结构费用低,操作、维护方便,适用范围广,将广泛地应用于工业自动化、信息家电、智能仪器仪表、虚拟现实中的应用、环境工程与自然、家庭医疗保健、安全保障服务业等领域,成为后PC时代研究的热点。本文主要介绍了嵌入式Web服务器的协议体系结构,并重点分析了各层协议的实现内容。

(二)精简TCP/IP协议栈的结构

TCP/IP协议是一个复杂的协议集,而嵌入式系统由于受到资源和速度的限制,不具有处理完整协议栈的能力,因此在具体实现时,必须对每一个协议进行仔细地评估,确定协议中哪些部分是必须的,从而根据系统要求有选择地加以实现,因此嵌入式Web服务器中并不实现所有的协议。在对TCP/IP协议进行精简时,以不影响网络基本功能为原则,以满足实用为目的,按照8位和16位等低端单片机的性能要求,对完整的TCP/IP协议进行一定程度的删减,量体裁衣。最终既要满足应用系统对数据传输和控制等功能的实际需要,又不能超出单片机系统的资源限制,实现联网功能。精简后的TCP/IP协议虽然功能不具备删减之前那样完善,但对于这种低端嵌入式系统的要求而言,还是完全可以胜任的。

TCP/IP协议在进行删减时应主要遵循两个原则:

1. 协议内容精简

嵌入式Web服务器的实现需要ARP, IP, TCP, ICMP等网络协议的支持,每一个完整协议都很庞大,全部实现是不现实的。应该在保证实现网络通信基本功能的前提下尽可能地精简协议,确定出协议的哪一部分是必需的,哪一部分可以省略,以满足系统要求。

2. 协议接口层次明确

TCP/IP协议分布在链路层、网络层、传输层和应用层上,协议是分层实现的,每一层只负责处理通信过程中的一部分问题。采用模块化的设计思路,如果需要修改哪个协议,只需修改相应模块的功能,其它模块不用改动。在网络系统中,按照分层的思想,从网络最底层开始每一层都为高层提供服务,明确层间接口对软件开发十分重要。

完整的TCP/IP协议是一个复杂的协议系统,但是在嵌入式Web服务器中并不是要实现所有的协议,应根据项目要求有选择地加以实现。以太网数据的传输是采用MAC地址来识别的,而ARP协议提供IP地址和数据链路层使用的MAC地址之间的转换功能,为了保证系统在以太网的通信,首先要实现ARP和RARP协议;嵌入式Web服务器与用户进行通信时,难免出现一些传输错误,为了保证计算机能够掌握网路和传输状态的准确信息,需要实现ICMP协议;由于嵌入式Web服务器要能在Internet上通信,在网络层一定要实现IP协议;在应用层,主要实现远端用户机通过浏览器的访问控制方式,所以要实现HTTP协议,而HTTP协议基于TCP协议实现传输的,加上TCP协议是面向可靠的数据流的传输,基于应用的需要和对可靠性的要求,在传输层采用TCP协议,并对TCP协议进行了简化处理,主要针对HTTP协议开发TCP协议。

考虑到系统的设计要求以及嵌入式系统的资源限制,最终在系统中实现了如下图所示几种协议,当然这并不是该协议子集的最优方案,但却是针对该系统的最恰当的方案,如图1所示。

(三)各层协议的具体实现

下文将详细阐述各层协议具体实现方案及其作用。

1. ARP协议

ARP (Address Resolution Protocol)也就是地址解析协议,是介于链路层与网络层之间,并不直接归属于具体的某一层。由于以太网底层硬件通过网卡的Mac地址进行寻址,而网络中传输的是含有IP地址的数据包。因此,当一台主机在以太网中要向另一台主机发送数据时,必须先找到与目标地址相对应的IP地址,换言之必须实现MAC地址到IP地址的映射,这就是地址解析协议的实质。

ARP协议主要有两种报文,即ARP请求报文和应答报文,该协议的实现主要是对这两种报文的实现,ARP协议的工作流程如下:当一台主机发送方要向另一台主机接收方发送数据时,发送方先在网络中广播含接收方IP地址的ARP请求报文,网络中所有主机都会收到这个请求。当接收方识别出该请求报文中的IP地址与自身相同时,它会返回一个包含自身MAC地址和IP地址的应答报文。发送方收到应答报文后,再根据接收方的MAC地址发送IP数据报。

在嵌入式WEB服务器环境中,服务器端一般是被动的接收来自客户的服务请求,为客户提供服务,也就是说服务器不会主动向某一IP地址发出数据帧。既然如此,始终处于被动状态的服务器完全不需要向任何主机发送ARP请求,因此,本方案中ARP协议只需能实现ARP应答报文即可。

2. IP协议

IP协议是TCP/IP核心协议之一,它负责将数据传输到正确的接收方,所有的TCP、UDP、ICMP及IGMP数据都封装在IP数据报内后再传输。

整个协议由数据报的接收和发送两个子程序构成。数据发送前,先对数据包添加20字节的IP报头形成IP数据报,再将构造好的数据报发送给对应IP地址的接收方。数据接收前,接收方先判断是否是发送给自己的IP数据报,再判断是哪种协议,是TCP协议,还是ICMP协议发送的数据,最后调用相应协议子程序来处理数据。

另外,无论是在接收还是发送的过程中,IP协议都会采取差错控制,通常使用计算校验和的方法来判断数据是否正确。

3. ICMP协议

IP数据报在网络中是不可靠传输的,很可能在传输过程中出错,为此,TCP/IP协议栈中专门设计了ICMP协议,将传输过程的错误或相关信息发送给发送方,还能实现故障检测、排除和优化网络性能。

ICMP协议的定义了五种差错报文和四种信息报文,对于本文所设计的系统,不必实现这样强大的功能。ICMP协议只需实现Ping(分组网间网探测器)响应。Ping响应的实质是利用回送请求与应答报文来检测网络是否可达,即检测网络的连通性。既可以查找数据分组的往返时间,还能统计出丢失的数据。当发送方向网络中发出回送请求,接收方将回送应答返回给发送方。如果应答回送成功,就表明该传输系统是连通的。

4. TCP协议

TCP (传输控制协议) 在IP协议软件提供的服务的基础上,支持面向连接的、可靠的、面向流的投递服务。TCP协议在进行数据传输时可分为建立连接、传输数据和关闭连接三个阶段,连接建立和终止过程通常叫做“握手”,TCP使用“三次握手”实现连接的建立,使用“四次握手”来终止连接。

要TCP协议的工作过程可以用状态变迁图来描述,完整的TCP协议状态变迁图是一个庞大的结构,所需的资源花费是巨大的。本论文设计中,根据系统的实际应用环境,Web服务器端只需要被动的接受用户的建立连接和终端连接的请求,因此,可以采用了一种简化的状态变迁图,如图2所示。

经过这样的裁减,整个状态变迁图显得结构简单易懂,实现起来也容易得多,同时又能满足嵌入式web服务器通信的需要,符合了设计方案对TCP协议精简的要求。

5. HTTP协议

HTTP (超文本传输协议) 协议是用来构建分布式、协同超媒体信息系统的应用层协议,它是一个通用的、无状态的协议。协议采用的是一种基于浏览器请求、服务器响应的工作模式,即B/S模式。

在已经建立TCP连接的基础上,一个HTTP会话包括两个过程:客户端发送请求数据报文,Web服务器端完成相应动作并发送应答数据报文。在HTTP协议的实现上,同样采用了精简的方法,Web服务器只响应GET方法,服务器端每当有请求报文到达时,先判断是否采用GET方法,如果是GET方法,准备符合协议的应答数据报文头部;从自身存储器中读出大量数据填入数据报文HTTP实体部分,并发送相应的网页,否则不做任何操作。

(四)结论

本论文提出应用于嵌入式系统的TCP/IP协议集,解决了TCP/IP的复杂性与低速处理器资源的有限性构成了一对较为尖锐的矛盾,从对Web服务器功能进行最小化定制的角度出发,通过两个层次来简化TCP/IP,缓解了这种矛盾,在低速处理器中实现简化的TCP/IP以实现功能最小化的Web服务器,具有较好的应用前景。

摘要:文章介绍在存储空间有限的嵌入式网络应用中, 通过合理选择TCP/IP协议子集, 实现了嵌入式Web服务器。详细分析了精简TCP/IP协议、嵌入式Web服务器在微嵌入式系统中的软件实现方法。

关键词:TCP/IP协议,嵌入式Web Server,精简

参考文献

[1]阿克塞尔森.嵌入式Ethernet和Internet通信设计技术[M].骆丽, 等译.北京航天航空大学出版社, 2006.

[2]WRichard Stevens.TCP/IP详解 (第1~2卷) [M].机械工业出版社, 2000.

[3]李刚.AduC8XX系列单片机原理与应用技术[M].北京航空航天大学出版社, 2002.

嵌入式TCP 篇6

关键词:单片机,嵌入式TCP/IP,驱动引擎,软件复用

0引言

“人在回路”仿真系统,如飞机仿真系统、电站仿真系统等[1,2],会涉及人对设备的操纵及设备对仿真结果的反映。对于具有简单设备的系统,A/D(D/A)转换卡可很好地满足需求,但对于设备密集系统,布线和维护问题将变得难以控制。在工程实践中,人们更多地关注于具体控制技术的研究[3,4],却较少从软件工程的角度,对与硬件相关的软件可复用、开发模式等问题进行考虑,由此导致的非规范开发、重复开发、软硬件紧密依赖等问题对工程效率和质量产生了较大影响。本文采用通用部分和特定部分相分离的方法解决此类问题,涉及的具体研究内容包括: 1规范的系统体系结构;2可复用的软件系统;3简洁的硬件控制量表达法;4透明的通信介质和网络节点拓扑结构。

1系统体系结构

系统体系结构如图1所示,系统包括五大部分:嵌入式TCP/IP控制的设备群、驱动引擎、下位网、上位网、应用。每个设备由内置的单片机MCU(Micro Control Unit) 进行采样和驱动,采样数据经驱动引擎传给应用程序,来自应用程序的驱动数据经驱动引擎传给单片机。驱动引擎运行于工控机,TCP/IP[5]下位网络与单片机通信,经由TCP/IP网络[5]或反射内存实时网络[6]或二网结合构成的上位网络与应用程序通信。驱动引擎为可复用结构,可以集成任何数量的单片机而无需对结构做任何修改。驱动引擎的数量依赖于设备规模和实时性需求,一个配置有多块网卡NICs(Network Interface Cards)的驱动引 擎可满足大多数系统的需求。

系统软件配置结构如图2所示。其中,硬件配置文件AO.cfg,DO.cfg,AI.cfg,DI.cfg用于隔离特定硬件;下位网配置文件LowerComm.cfg用于隔离下位网通信节点; 上位网配置文件UpperComm.cfg用于隔离上位网通信节点和通信介 质;每个单片 机对应一 个动态链 接库DLL (Dynamic Link Library)。

2协议数据单元

存在两种协议数据单元:

(1)单片机至驱动引擎协议数据单元。

(2)驱动引擎至单片机协议数据单元。

3控制量二维标识规范

3.1控制量标识符

为适应控制量密集系统,每个硬件控制量以二维方式进行标识(见图3),规则如下:

(1)模出量:AO(面板号,控制量号)[:值范围]。

(2)模入量:AI(面板号,控制量号)[:值范围]。

(3)开出量:DO(面板号,控制量号)[:值范围]。

(4)开入量:DI(面板号,控制量号)[:值范围]。

根据以上规则,可对舱体内所有控制量做出标识,形成一个硬件标识图,为硬件驱动开发人员和仿真应用开发人员提供工作参考。

3.2控制量在程序中的访问方法

在C/C++程序中,硬件控制量按如下方法访问:

(1)驱动硬件。

AO(i,j)=x;// 以x值驱动AO(i,j)。

DO(i,j)=0;// 置DO(i,j)断开。

(2)采样硬件。

y=AI(i,j);//采样AI(i,j)存于y。

s=DI(i,j);//取DI(i,j)状态存于s。

3.3控制量规范实现

图4表示如何由二维标识定位控制量实际存储位置。 压缩二维索引依据硬件配置文件AO.cfg、AI.cfg、DO. cfg和DI.cfg确定。硬件配置文件遵循如下语法规则:

4单片机DLL

每个单片机对应一个DLL,该DLL输出函数Sample ()和Drive():

5驱动引擎

5.1下位网传输配置文件(LowerComm.cfg)

该文件语法规则如下:

驱动引擎从本地端点 <DrvEngineIP,DrvEnginePort >接收单片机发 来的采样 数据,从本地端 点 <DrvEngineIP,DrvEnginePort>向远程端点<McuIP,McuPort>发送驱动数据。

单片机DLL必须命名为McuName.dll,以便驱动引擎定位Sample()和Drive()函数。

5.2上位网传输配置文件(UpperComm.cfg)

该文件语法规则如下:

驱动引擎从本地端点 <DrvEngineIP,DrvEnginePort > 和 (或 )<DrvEngineRfmCardID,DrvEngineRfmAddr > 接收应用 程序发来 的驱动数 据,从本地端 点 < DrvEngineIP,DrvEnginePort>向远程端点<AppIP,AppPort>和(或)<AppRfmCardID,AppRfmAddr>发送采样数据。

5.3驱动引擎算法

驱动引擎关键算法步骤如下:

S1:(加载外部配置文件)加载外部配置文件AO.cfg、 AIcfg、DO.cfg、DI.cfg、LowerComm.cfg、UpperComm. cfg。

S2:(加载DLL和Sample/Drive)FOR LowerComm. cfg每一项DO。

S2.1:(加载DLL)调用LoadLibrary()[7]。

S2.2:(加载Sample/Drive)调用GetProcAddress ()[7]。

S3:(循环)DO S4至S5UNTIL结束。

S4:(下位通信)FOR LowerComm.cfg每一项DO。

S4.1:(接收MCU)IF<DrvEngineIP,DrvEnginePort >有数据到达THEN调用Sample()。

S4.2:(驱动MCU)调用Drive()。

S4.3:(发往MCU)从 <DrvEngineIP,DrvEnginePort >向<McuIP,McuPort>发驱动数据。

S5:(上位通信)FOR UpperComm.cfg每一项DO。

S5.1:(接收AOs/DOs)从<DrvEngineIP,DrvEnginePort>和(或)<DrvEngineRfmCardID,DrvEngineRfmAddr>接收AOs/Dos。

S5.2:(发送AIs/DIs)从 <DrvEngineIP,DrvEnginePort> 向 <AppIP,AppPort> 和 (或)<AppRfmCardID, AppRfmAddr>发送AIs/Dis。

6结语

嵌入式TCP 篇7

1 GPRS网络简介

GPRS是通用分组无线业务 (Ge ne ral Packe t Radio Se rvice) 的英文简称, GPRS网络是在现有GSM网络中引入3个主要组件来实现的:服务支持结点;网关支持结点;分组控制单元 (PCU) 。其用户能够在端到端分组方式下发送和接收数据。GPRS网提供网络功能将IP信息包从移动用户点传送至外部网络。

2 嵌入式TCP/IP协议栈的设计

在设计中, 根据GPRS数据传输的特点, 我们主要实现IP、ICMP、TCP三个协议, 即可满足系统控制的需要。下面分别对以上三个协议实现的细节进行剖析。

1) IP协议是TCP/IP的基础, 是嵌入式系统的传输工具, 只需其实现两个功能:验证到来IP报文报头的正确性并且对TCP和ICMP报文实行分流。

2) 对于嵌入式系统, ICMP协议只需实现它的回应机制, 而其他功能则可以忽略。

3) 标准TCP协议过于复杂, 因此, 需要结合GPRS网络传输的特点对其进行简化。在设计中我们采用, 当需要主动断开连接的时候, 发送一个Fin数据报;接收到对Fin数据报的确认后, 再发送一个Res e t数据报的方法, 即可顺利完成一次主动断开连接。

3 系统软件实现

控制系统主要由四部分构成:嵌入TCP/IP协议的单片机、控制模块、电源和外部接口部分。

单片机上电复位后, 首先对MAX3223、MAX3485、MC35模块进行初始化, 使之附着在GPRS网上, 与控制中心之间建立连接。主程序采用中断加轮循的方式, 用中断触发的方式接收被控制设备发出的数据, 并设置了一个接收队列暂存这些数据。程序始终轮循有无GPRS网络数据到达, 如有使用AT命令读入数据, 然后调用IP的相关处理函数进行TCP/IP数据解包处理。

4 结论

本文研究的是控制系统采用单片机和GPRS模块来实现, 并在嵌入式系统中实现TCP/IP协议栈, 利用GPRS模块在网络中完成与控制中心的数据通讯, 这样提高了数据传输的实时性、可靠性和数据传输的能力, 具有外围器件少、电路简单、系统成本低等优点。

参考文献

[1]Lv Jie.GPRS Technology[M].Beijing University of Posts and Telecommuni-cations Press, 1998.

[2]Douglas E.Comer.Internetworking with TCP/IP VolⅠ:principles, protocols, and architectures fourth edition[M].Publishing House of Electronics Industry, 1998.

[3]Pan Zuo-jin.C8051F020/1/2/3 mixed-signal ISP FLASH MCU FamilyDatasheet.Rev1.1 2002, 10.

上一篇:会计转型下一篇:图像语言