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协议将会得到更大的发展和更广阔的应用。