嵌入式Internet技术及其实现方案
对应。因此,系统要根据自己的需要和链路层协议的实现来选择和简化应用层的协议。
传输层主要为两台主机上的应用程序提供端到端的通信。传输层有两种不同的传输协议:面向连接的TCP(传输控制协议)和无连接的UDP(用户数据报协议)。TCP是面向接入即传输前必须先通过"三重握手"在主机间建立TCP接入,它所传数据流采用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。但相对于UDP,它的可靠性是以复杂性为代价的,需要复杂庞大的程序来实现。UDP提供的是无连接的不可靠的服务,可能出现数据包的丢失,重复和连接失败等错误。但是正因没有接入机制,它可以实现高速发送,充分发挥物理传输设备的速度。UDP适合用在通信介质十分可靠的情况,例如以太网等。
网络层处理分组在网络中的活动。其协议包括IP协议(网际协议)、ARP协议(地址解析协议)、ICMP协议(Internet互联网控制报文协议)以及IGMP 协议(Internet组管理协议)。IP协议是TCP/IP族的核心协议,它使异构网络之间的通信成为可能。因此如果嵌入式 Internet,需要跨越不同的网络进行通信就必须要实现IP协议。ARP协议实现将逻辑IP地址映射为物理地址。ICMP协议主要用来传递差错报文以及其他需要注意的信息。我们通常使用的应用程序PING就是采用ICMP协议来测试网络的连通情况。对于普通的嵌入式Internet的应用而言,在 ICMP协议中能够测试网络的连通情况即可,因此只需实现ICMP中类型号为0、代码为0的PING应答协议即可。通常嵌入式Internet不考虑 IGMP。
链路层主要作用是为其上层协议发送和接收数据包,根据物理层的不同,主要协议有以太网、令牌环网、FDDI(光纤分布式数据接口)及RS232串行线路协议等。可由选择的网络接口芯片完成。
3 设计实例
应用普通8/16位MCU形成嵌入式网关是最具发展潜力的一大热点。而应用TCP/IP协议的以太网已经成为最流行的分组交换局域网技术,整个网络只有一种底层通讯协议,同时也具有开放的TCP/IP网络技术。它可满足控制系统各个层次的要求 。工业控制领域中常用的现场总线和串行通信可以通过嵌入式网关与以太网相连,从而方便的实现控制网络与Internet连接,目前基于以太网的工业控制网络已经成为未来的发展趋势。所以本设计采用在16位MCU 中嵌入"裁剪"后的TCP/IP协议栈及以太网控制芯片驱动程序,并通过以太网接入Internet网络。其硬件框图如图三所示。
图三 16位单片机实现嵌入式网卡的硬件框图
这种方案首先要求在链路层上,由于采用以太网的接人方式,系统必须要实现IEEE802.3标准,这可采用通用的以太网接口芯片RTL8019AS来完成。其次,为了保证系统在以太网的通信,系统还需实现ARP应答协议。在网络层上要实现IP协议,为了能够测试系统与网络的连接,系统需要实现ICMP 协议中的ping应答协议。在传输层上我们选择UDP协议。应用层上单片机系统传递来自Ethernet和数据终端的数据,应用层只对大的数据报作打包拆报处理。
RTL8019AS是RealTek公司生产的一种全双工以太网控制器,符合Ethernet II 、IEEE802.3(10Base5、 10Base2、10BaseT)标准;与NE2000兼容;支持8位、16位数据总线;内置16KB的SRAM,用于收发缓冲,可降低对主处理器的速度要求。外部RAM使用PSD4135(512KB),从而为数据处理提供了很大的缓存,同时它也有地址锁存和地址译码功能。使用E2PROM- 93C46,可以将网卡物理地址和其他参数保存在里面。
这里的RTL8019AS就是处理以太网协议(IEEE802.3)的。数据的流向为:请求信息从局域网中来,通过RJ45送到RTL8019AS,处理后的数据包送入80C196协议栈,由协议栈对数据包进行解析,得到原始请求信息。请求信息再经过80C196的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。RJ45为此系统与局域网的接口。
一个标准的IEEE 802.3数据帧由七部分组成,图四说明了标准的IEEE 802.3数据包与TCP/IP协议数据的关系。
图四 IEEE 802.3帧的组成
数据段的个数可从46Byte~1500Byte,不足46Byte时用零补足;超过1500Byte时,需要拆成多个帧传送。前导位、帧起始位和帧校验序列仅供控制器本身用,主处理器收到的数据帧的组成依次包括:接收状态、下一帧的页地址指针、目的地址、源地址、数据长度、数据段。 IEEE 802.3标准中的数据长度值小于或等于0x0600时,表示数据段的长度;反之,表示数据帧的类型。例如值为 0x0800,表示数据段为 IP包;值为0x0806,表示数据段为ARP包。
3.1 系统软件
在选定硬件,完成各芯片间地址线