摘 要:分析嵌入式TCP/IP协议的选取原则,采用ARM芯片和网络接口控制芯片设计以太网接口,介绍ARM芯片对网络接口控制芯片的控制过程和TCP/IP协议栈处理数据包的流程,完成嵌入式TCP/IP系统的开发。该系统可以将数据按网络协议处理,实现数据的以太网传输。其是一套基于嵌入式实时操作系统的嵌入式网络软件开发平台,即在μC/OS—II的平台上,实现ARM微处理器的TCP/IP协议,在此平台之上,可以方便地进行嵌入式应用系统的开发a
关键词:ARM;嵌入式系统;TCP/IP;以太网
0 引 言
以太网具有通用性强、技术成熟、带宽迅速增加等特性,工业控制领域出现嵌入式技术,尤其是ARM技术的发展和DSP在工业控制领域的广泛应用,利用嵌入式技术实现以太网通信已经不难见到。嵌入式实时操作系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越容易。从根本上讲,嵌入式设备接入网络,当前基本采用基于TCP/IP的通信协议。该方案以LPC2210为核心元件研究基于ARM的嵌入式TCP/IP协议的实现的硬件电路,同时在μC/OS一Ⅱ平台上编写应用软件程序。下面对系统做详实的阐述,并重点介绍嵌入式实时操作系统μC/OS—II应用于TCP/IP时应进行合理的裁减。
1 系统硬件设计
基于ARM的嵌入式TCP/IP网络通信系统主要包括ARM芯片和以太网控制器等芯片组成的以太网接口、驱动软件和嵌入式TCP/IP协议栈。硬件原理图如图1所示。
该方案设计相对简单,硬件电路中采用的LPC2210是Philips公司推出的微处理器,带有16 KBRAM,76个通用I/O口,12个独立外部中断引脚,集成有8通道的10位A/D,能够基于芯片设计复杂的系统。虽然LPC2210具有较快的访问速度,但片内没有集成FLASH,所以这里扩展1片16 Mb FLASH SST39VFl60来保存用户程序。其架构满足μC/OS—II正常运行的基本要求。
RTL8019AS是台湾Realtek半导体公司生产的以太网控制器,其性能包括:支持EthernetII和IEEE802.3标准;支持8/16位数据总线;内置16 KWord的SRAM;全双工,收发同时达到10 Mb/s;支持BNC,AUI,UTP介质。RTLS019AS可提供100脚的TQFP封装,减少了PCB面积,更适合于嵌入式系统。HR901170A是汉仁电子有限公司生产的RJ45接口连接器(带网络变压器/滤波器),该连接器满足IEEES02.3和IEEE902.3ab标准,能够较好地抑制电磁干扰。通过HR901170A系统就可以连接到以太网上。
2 嵌入式协议的选择
TCP/IP协议是一组不同层次上的多个协议的组合,通常被认为是一个包含链路层、网络层、传输层和应用层的4层协议系统,如图2所示。嵌入式系统是为完成某种特定的功能而设计的专用系统。嵌入式系统不要求(也不可能)实现所有的TCP/IP协议,所以嵌入式TCP/IP是对TCP/IP协议族进行选择而形成的协议集合。
首先在链路层上,由于采用以太网的接入方式,系统必须实现IEEE802.3所规定的CDMA/CD(载波监听多路访问及冲突监测)协议,CDMA/CD协议不需用户实现,此协议只要采用通用的NIC(Network Interface Con—troller,网络接口控制)芯片就可支持。为了保证系统在以太网中的通信,系统还需实现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一Ⅱ的移植工作主要集中在下面几个文件中: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()和OSTieklSR()。
以太网链路层遵循的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协议将会得到更大的发展和更广阔的应用。