新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM的嵌入式TCP/IP协议的实现

基于ARM的嵌入式TCP/IP协议的实现

作者: 时间:2009-04-24 来源:网络 收藏

传输层主要是在2台主机之间提供端到端的通信。传输层有2种不相同的传输(传输控制)和UDP(用户数据报)。是面向连接的,在不可靠的网络服务上提供端到端的可靠字节流。协议设计了严格的3次建立连接握手过程、4次关闭连接握手过程以及捎带确认信息并通过滑动窗口进行流量控制的数据传输过程。UDP协议是不面向连接的,它只是简单地把数据报从一台主机发送到另一台主机,但并不保证该数据报能到达另一端,可靠性必须由应用层来提供。考虑到系统中数据传输质量,这里采用TCP协议。应用层协议主要是指用户进程。其包括:HTTP协议、FTP协议、POP3协议、SMTP协议、SNMP协议。

本文引用地址:https://www.eepw.com.cn/article/152520.htm


3 系统软件设计
该TCP/网络通信系统为了具有较好的实时性和稳定性,采用μC/OS一Ⅱ设计系统软件。在μC/OS一Ⅱ平台上,软件设计工作主要包括:μC/OS一Ⅱ在LPC2210上的移植和TCP/协议在μ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/协议的解释和执行。LPC2210控制RTL8019AS完成通信任务时,首先要对RTL8019AS复位,并对RTL8019As的寄存器进行初始化,确定发送和接收的条件,然后才能发送数据或接收数据。当一帧数据发送结束、接收到1帧数据或出错等事件发生时,RTL8019As向LPC2210申请中断,LPC2210响应中断后根据中断状态寄存器的内容进行相应的处理。
在LPC2210内部,程序完成对数据的打包解包。系统复位后,系统首先发送ARP请求,建立地址映射,并内部中断进行定时更新。芯片根据情况将采集或收集到数据按照TCP协议或UDP协议格式打包,送入网卡芯片,由网卡芯片将数据输出到局域网中。芯片对数据报进行分析,如果是ARP(物理地址解析)数据包,则程序转入ARP处理程序。如果是IP数据包则进一步判断是哪个协议向IP传送数据。如果是ICMP协议,判断是否为Ping请求,是则应答,不是丢弃该数据包;如果是TCP或UDP协议,且端口正确则按相应的协议处理数据,端口不正确丢弃数据包。TCP/IP系统框图如图3所示。

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


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


linux操作系统文章专题:linux操作系统详解(linux不再难懂)

tcp/ip相关文章:tcp/ip是什么



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭