基于LwIP嵌入式以太网系统设计与实现.docVIP

基于LwIP嵌入式以太网系统设计与实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于LwIP嵌入式以太网系统设计与实现

基于LwIP嵌入式以太网系统设计与实现   [摘 要]针对uC/OS-II操作系统没有TCP/IP通信功能,本文给出一种将LwIP协议栈移植到   uC/OS-II的方法,使其具有TCP/IP通信功能,并通过测试,实际应用效果良好。   [关键词]uC/OS-II操作系统 TCP/IP LwIP协议   [中图分类号]TP316 [文献标识码]A [文章编号]1007-9416(2010)07-0044-01      1 LwIP协议栈简介   LwIP是瑞士计算机科学院的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP既可移植到操作系统上。LwIP实现了较为完备的lP、ICMP、UDP、TCP协议,具有超时时间估计、快速恢复和重发、窗口调整等功能。还有一个重要的特点就是协议栈只需要几十K的RAM和40K左右的ROM就可以运行,这样我们就可以在一些低端的嵌入式系统中使用LwIP协议栈。      2 uC/OS-II操作系统简介   uC/OS-II是一个开源的占先式多任务的实时操作系统。它的执行时间可确定,内核可剪裁,可移植,可固化,代码量小,这对于嵌入式有限的资源是非常重要的。它支持x86、ARM、PowerPC、MIPS等众多体系结构,其稳定性和可用性是经过实验验证的,因此被广泛应用于各种嵌入式设备中。      3 LwIP协议栈移植到uC/OS-II操作系统的实现方法   整个嵌入式系统主要由ARM微处理器、网卡芯片、网络设备驱动、lwip、uC/OS-II和应用程序组成。   LwIP在设计时就充分考虑了移植的问题,因此把与操作系统、硬件、编译器相关的部分都放在源码的/src/arch目录下,所以我们主要修改这目录里面的文件。   3.1 编写和CPU及编译器相关的头文件   这些头文件包括cc.h、cpu.h、perf.h等,在这里都定义了和使用的CPU以及编译器相关的内容,如数据类型,存储模式的选择等。   本次使用的是RealView MDK编译器。LPC2148是32位微处理器,int和long类型长度为32位,short类型长度为16位,char类型长度为8位,处理器内核为小端存储系统,定义为   #define BYTE_ORDERLITTLE_ENDIAN   3.2 编写与操作系统相关的函数   按协议栈要求,需要在操作系统中实现以下函数:   (1)线程创建函数 sys_thread_new()   在uC/OS-II中没有线程概念,只有任务,故可把uC/OS-II中的OSTaskCreate()任务创建函数封装成此线程创建函数。还需要注意的地方是创建时要为线程分配好优先级。   (2)定时器函数 sys_arch_timeouts()   LwIP的每个与外界网络连接的线程都有自己的超时等待属性,并为每个线程都分配一个sys_timeout数据结构,并把这个数据结构存放在链表sys_timeouts中。如果一个线程对应的sys_timeout为空(NULL),说明该线程对连接做永久的等待。超时等待的数据结构包括指向链表下个sys_timeout结构的指针、线程的超时时间长度,以及超时后应调用的timeout函数。   (3)进程间通信的函数   sys_sem_t信号量:sys_sem_new(), sys_sem_free(),sys_sem_signal(),sys _arch_sem_wait()。因为uC/OS-II已经实现了信号量OS_EVENT的各种操作,这些功能完全可以用uC/OS-II里一些函数封装实现。   sys_mbox_t消息:sys_mbox_new(), sys_mbox_free(),sys_mbox_post(),sys_arc_mbox_fetch()。这些函数基本都能在uC/OS-II中实现,但要注意mbox需用uC/OS-II中消息队列实现。uC/OS-II没有对消息队列中的消息进行管理,因此不能直接使用,必须在uC/OS-II的基础上重新实现。   3.3 编写与硬件的接口函数   主要编写ethernetif.c文件,实现底层的数据接收发送。数据包的发送可以采用中断处理程序执行,每接收到一个数据包,向tcpip_thread进程发送一消息。系统调度tcpip_thread进程对消息进行处理,并根据数据包的类型转向相应的协议处理程序。      4 LwIP在uC/OS-II上应用测试   系统运行时,首先调用OSInit()初始化操作系统的变量和结构,再调用TargetInit()设置处理器外设时钟等,然后创建一个测试任务lwip_test(),

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档