08基于ARM平台的嵌入式TCP_IP协议栈的实现.pdf

上传人:qwe****56 文档编号:74679749 上传时间:2023-02-27 格式:PDF 页数:3 大小:177.80KB
返回 下载 相关 举报
08基于ARM平台的嵌入式TCP_IP协议栈的实现.pdf_第1页
第1页 / 共3页
08基于ARM平台的嵌入式TCP_IP协议栈的实现.pdf_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《08基于ARM平台的嵌入式TCP_IP协议栈的实现.pdf》由会员分享,可在线阅读,更多相关《08基于ARM平台的嵌入式TCP_IP协议栈的实现.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 25卷 第 4期2008 年 12月河 北 省 科 学 院 学 报Journal of the Hebei Academy of SciencesVol.25 No.4Dec.2008*文章编号:1001-9383(2008)04-0017-03基于 ARM 平台的嵌入式 TCP/IP 协议栈的实现梅 欢(河北省应用数学研究所,河北 石家庄 050081)摘要:结合 ARM 芯片 S3C2410A 和新型的 10/100M 自适应以太网控制器 LAN91C111,讨论了如何在嵌入式实时操作系统上移植 TCP/IP 协议栈 LwIP 的问题。关键词:S3C2410A;LAN91C111;Lw

2、IP中图分类号:T P 319文献标识码:ARealization of embedded TCP/IP stack based on ARMMEI Huan(H ebei Institute of Ap p lied Mathematics,Shij iazhuang H ebei 050081,China)Abstract:Combining ARM S3C2410A and new pattern 10/100M auto-adapted Ethernet controllerLAN91C111,the problem of how to transplant T CP/IP stack

3、 LwIP based on embedded rea-l time oper-ating system are mainly discussed in this paper.Keywords:S3C2410A;LAN91C111;LwIP随着嵌入式设备与网络的日益结合,在嵌入式实时操作系统中引入 TCP/IP 协议栈,以支持嵌入式设备接入网络,成为嵌入式领域的一个重要方向。嵌入式设备因其成本低,体积小等优点已经在民用和工业领域得到了广泛的应用。本文对基于 ARM 平台的嵌入式 T CP/IP 协议栈的实现方法给予讨论。1 软硬件基础1.1 硬件坏境本研究所用的嵌入式以太网硬件系统结构如图 1

4、 所示。开发板采用 S3C2410A 的 ARM 微处理器和 LAN91C111 以太网控制器,是因为 S3C2410A 是一款具有很高性价比、高性能的微控制器,适合于手持设备等领域的芯片,它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同时它采用了 ARM920T内核,0.18Lm 工艺的 CMOS 标准宏单元和存储器单元。S3C2410A 工作 频率 最高 可以 达到266MHz,有很大的存储空间,非常适合用来处理复杂的 T CP/IP 协议。在 LAN91C111 芯片上集成了 CSMA/CD(带避撞的载波侦听多路接入)协议的 MAC(媒体层)和 PHY(物理层),符

5、合IEEE 802.3/802.U-100Base-Tx/10Base-T 规范,可以实现与 32 位、16 位控制总线的无缝连接,具有很高的灵活性。其外围电路相对比较简单。1.2 软件平台软件平台选择了源码开放的抢占式实时操作系统,内核可裁减、时间可确定、短小精悍的 uC/OS-II。它的系统大部分代码采用 C 语言编写,与硬件有关的部分集中在一两个文件中,并给出了规范的接口说明,移植非常方便。*收稿日期:2008-10-05作者简介:梅欢(1981-),女,河北石家庄人,研究实习员,主要从事计算机应用等方面的研究.河北省科学院学报2008 年第 25卷图 1 嵌入式以太网硬件系统结构图 由

6、于 uC/OS-II 只是一个实时调度和通讯的内核,缺少对外围设备和接口的支持,为了使其能够与以太网络通讯,就必须对其进行 TCP/IP协议栈的移植 1。在移植 T CP/IP 协议栈前,uC/OS-II 已经稳定的运行在 S3C2410A 开发平台上了。2 嵌入式 TCP/IP 协议栈的移植本文所采用的是一个轻量级的 TCP/IP 协议栈(Lightweight T CP/IP Stack,LwIP)。LwIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LwIP 实现的重点是尽量地减少对 RAM 的占用而又不影响 T CP 协议的主要功能,一般只需要 40K 左右的 ROM 就

7、可以运行,这对资源相对较少的嵌入式系统来说是非常有吸引力的。LwIP 的特性包括 2:支持多网络接口下的IP 转发;支持 ICMP 协议;支持扩展性的 UDP 报文;支持转发的 T CP 报文;提供专门的内部回调接口(Raw API)用以提高应用程序性能等。2.1 移植过程LwIP 在设计时就考虑到了将来的移植问题,它把所有与硬件、操作系统、编译器相关的部分独立出来,放在/src/arch 目录下,因此 LwIP在 uC/OS-II 上的实现就是修改这个目录下的文件,其他文件一般不需要修改。(1)与 CPU 或编译器相关的 include 文件/srcarch/include/arch 目录下

8、 cc.h、cpu.h、perf.h 中有一些与 CPU 或编译器相关的定义,如数据长度,字的高低位顺序等。这应该与用户实现 uC/OS-II 时定义的数据长度等参数是一致的。C 语言的结构体一般是 4 字节对齐的,在数据包进行处理时,LwIP 是根据数据结构体中数据的不同的长度来读取相应数据的,所以这里需要使用关键字-packet,这样可以让编译器放弃 struct 的字节对齐。(2)与操作系统相关部分sys_arch.c 中的内容是与操作系统相关的一些结构和函数,主要实现了信号量、消息、超时、线程这 4 个部分。以下主要说明系统初始化及创建新进程的函数。LwIP 既可以单线程运行也可以多线

9、程运行,单线程情况下只有一个 tcpip 线程(tcpip-thread),负责处理所有的 tcp/udp 连接,各种网络程序都通过 tcpip 线程与网络通讯。在多线程情况下运行,可以提高效率,降低编程复杂度但是必须实现创建新线程的函数。由于 uC/OS-II 系统中没有线程(thread)的概念,只有任务(Task)。所以这时只需要把系统的创建任务函数 OSTaskCreate 进行封装,就可以实现 sys-thread-new。但是由于 LwIP 中thread 没有像 uC/OS-II 中优先级的概念,所以实现时要由用户事先为 LwIP 中创建的线程分配好优先级,可以通过宏定义为用户线

10、程分配好优先级的 3。(3)lib-arch 中库函数的实现18第 4 期梅 欢:基于 ARM 平台的嵌入式 TCP/IP 协议栈的实现由于机器的数据格式和网络数据的格式存在着差异,在从网络接收到数据或者从机器向网络发送数据都存在一个数据格式的转换问题。所以在 LwIP 协议栈中要实现以下四个外部转换函数:u16-t htons(u16-t n);/16 位数据由机器数据格式到网络数据的格式的转变u16-t ntohs(u16-t n);/16 位数据由网络数据格式到机器数据的格式的转变u32-t htonl(u32-t n);/32 位数据由机器数据格式到网络数据的格式的转变u32-t nt

11、ohl(u32-t n);/32 位数据由网络数据格式到机器数据的格式的转变经过上述步骤,根据实现的硬件以及操作系统对象,对相应的文件进行修改后,通信协议得以很快实现。2.2 LWIP 初始化配置首先建立 LWIP 入口函数,调用基本初始化和基本设置函数。初始化完成后进入应用阶段。(1)LWIP 基本初始化。LWIP 的基本初始化包括系统初始化、内存初始化、TCPIP 层初始化等,由 LWIP 提供的初始化函数完成。(2)LWIP 初始化配置。此步骤完成网络驱动程序和 LWIP 的接口,即建立数据的接收入口并完成和 LWIP 接口对接。主要功能是在 iLv_SetLwIP 函数中完成。2.3

12、网络设备驱动程序的实现设计中采用的网络芯片是 LAN91C111,这是一款专门为嵌入式设备准备的以太网控制器。LwIP 为此类型芯片提供了网络驱动模板,按照模板的框架开发了 LAN91C111 的驱动程序,放在.arch netif 91C111netif.c 中。包括了网卡的初始化、中断处理函数、接收和发送线程、网卡的读取和发送数据的处理等。2.4 软件的调试调试环境包括 S3C2410A+LAN91C111 板、PC 机、仿真器、网线以及另一套网络芯片也为LAN91C111 的 CPU 板。首先,新建工程,脱离操作系统和 TCP/IP 协议的环境下,单独调试通过 LAN91C111 驱动程

13、序,初始化,接收发送数据成功之后,另建工程集合 uC/OS-II 和 LwIP,结合驱动程序进行调试,在 uC/OS-II 中初始化LwIP,并创建 TCP 或 UDP 任务进行测试了。值得注意的是LwIP 的初始化必须在uC/OS-II 完全启动之后进行,也就是说 LwIP 的初始化必须再任务中进行。因为它的初始化用到了信号量等OS 相关的操作。软件调 试函数的 关键代码如下:main(),/中断、板卡的初始化OSInit();/uC/OS-II initOST askCreate(T ask-lwip-init,(void*)0,&Task-lwip-init-stk 4096-1,0);

14、/main task,OSStart();/enter Idle model,wait for an-other higher priority task编译运行后,用 ping ip 地址命令可以得到ICMP reply 响应。用 telnet ip 地址 7(登录 7 号端口)命令可以看到 echo server 的回显效果。说明 ARP、ICMP、IP、T CP 协议都已正确运行,调试通过。3 结语LwIP 协议栈的移植成功,以最小的代价使uC/OS-II 具有了 T CP/IP 的网络通信功能,实现了在微处理器和较小的存储空间中完成 TCP/IP 报文的收发。为 uC/OS-II 的推广和在网络方面的应用做了一定的探索和尝试。参考文献:1 JEAN J Labross.uC/OS-II 源码公开的实时嵌入式操作系统 M.邵贝贝,译.北京:中国电力出版社,2001.2 张来君.基于 LWIP 平台的无线 TCP 性能研究 D.2006-3-15:21-25.3 伊文斌,周贤娟,鄢化彪,等.uIP T CP/IP 协议分析及其在嵌入式系统中的应用 J.计算机技术与发展,2007,17(9):240-243.19

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁