《LwIP协议栈的学习与应用 - Google Code》.docx

《LwIP协议栈的学习与应用 - Google Code》.docx

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《LwIP协议栈的学习与应用 - Google Code》

LwIP协议栈的学习与应用 前言LWIP(Light Weight Internet Protoco1)是瑞士计算机科学院(Swedish Institute of Computer Science)AdamDunkels等人开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。LWIP的含义是Light Weight(轻型)IP协议。LWIP可以移植到操作系统上,也可以在无操作系统的情况下独立运行。LWIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用。一般它只需要几十KB的RAM和40 KB左右的ROM就可以运行,这使LWIP协议栈适合在小型嵌入式系统中使用。LwIP的主要特性如下:(1)支持多网络接口下的IP转发;(2)?支持ICMP协议;(3)?包括实验性扩展的的UDP(用户数据报协议);(4)包括阻塞控制,RTT估算和快速恢复和快速转发的TCP(传输控制协议);(5)提供专门的内部回调接口(Raw API)用于提高应用程序性能;(6)可选择的Berkeley接口API(多线程情况下);(7)在最新的版本中支持ppp;(8)新版本中增加了的IP fragment的支持;(9)?支持DHCP协议,动态分配ip地址。第一部分 协议栈的移植准备工作 本文的硬件环境采用LPC2468作为主控MCU,LPC24xx是NXP半导体公司(由Philips公司创建) 推出的基于ARM7TDMI-S内核的微控制器,它在片上集成了10 Mbps/100 Mbps以太网控制器。PHY芯片采用DM9161AEP。 操作系统方面,我们选用的μC/OS II 2.88。开发环境采用KEIL MDK3.8。第二章 操作系统适配层为了使lwIP便于移植,与操作系统有关的功能函数调用和数据结构没有在代码中直接使用。而是当需要这样的函数时,操作系统适配层将加以使用。操作系统适配层向诸如定时器、处理同步、消息传送机制等的操作系统服务提供一套统一的接口。原则上,移植lwIP到其他操作系统时,仅仅需要实现适合该操作系统的操作系统模拟层。 操作系统适配层提供了由TCP使用的定时器功能。操作系统适配层提供的定时器是一次性的定时器,当超时发生时,调用一个已注册函数至少要200ms的间隔。 进程同步机制仅提供了信号量。即使在操作系统底层中信号量不可用,也可以通过其他信号原语像条件变量或互锁来模拟。 信息传递的实现使用一种简单机制,用一种称为“邮箱”的抽象方法。邮箱做两种操作:邮寄和提取。邮寄操作不会阻塞进程;邮寄到邮箱的消息由操作系统模拟层排入队列直到另一个进程来提取它们。即使操作系统底层对邮箱机制不支持,也容易用信号量实现。信号量多用于任务间同步和互斥。 邮箱用于大数据的传送。 队列多用于处理有序的事件。 做比较“粗俗”的比喻,信号量就是中央政府发给官人做一方大员的官印,有很多种官印但是不能一印多发,得到官印者才能掌权鱼肉一方百姓(任务得到信号量才能运行),否则你就只要等官跑官。邮箱,就好给比当差的下达的抄家、拆房、收监等红头文件,拿到啥样的文件就干啥。消息队列,就是给任务发了一连串的邮件,官员(任务)拿到这一大摞文件,可以从底部或者顶部(LIFO?or?FIFO)一个一个拆开处理。(注:来自)操作系统适配层的移植主要是在sys_arch.c里面,主要有以下几部分:信号量相关:sys_sem_t sys_sem_new(u8_t count)创建一个新的信号量,并给信号量赋予初值 count。void sys_sem_signal(sys_sem_t sem)向指定的信号量发送信号。void sys_sem_free(sys_sem_t sem)释放指定的信号量u32_t sys_arch_sem_wait(sys_sem_t sem, u32_t timeout)邮箱(MailBox)相关:sys_mbox_t sys_mbox_new(int size) 函数建立一个空的邮箱,如果创建成功,则返回邮箱的地址,如果创建失败则返回为空。void sys_mbox_free(sys_mbox_t mbox) 函数void sys_mbox_post(sys_mbox_t mbox, void *msg) 函数err_t sys_mbox_trypost(sys_mbox_t mbox, void *msg) 函数u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout)u32_t sys_arch_mbox_tryfetch(sys_mbox_t mbox, void **msg) 函数这个函数是1.3后新有的,网卡驱动层网卡的驱动层主要分为2个方面:MA

文档评论(0)

weizhuidaomengx + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档