ucos+lwip应用心得[社区]

上传人:bin****86 文档编号:60416542 上传时间:2018-11-16 格式:DOCX 页数:8 大小:18.55KB
返回 下载 相关 举报
ucos+lwip应用心得[社区]_第1页
第1页 / 共8页
ucos+lwip应用心得[社区]_第2页
第2页 / 共8页
ucos+lwip应用心得[社区]_第3页
第3页 / 共8页
ucos+lwip应用心得[社区]_第4页
第4页 / 共8页
ucos+lwip应用心得[社区]_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《ucos+lwip应用心得[社区]》由会员分享,可在线阅读,更多相关《ucos+lwip应用心得[社区](8页珍藏版)》请在金锄头文库上搜索。

1、从本学科出发,应着重选对国民经济具有一定实用价值和理论意义的课题。课题具有先进性,便于研究生提出新见解,特别是博士生必须有创新性的成果ucos+lwip应用心得社区经过几天调试除掉几个bug以后,ucos+lwip在我的44b0+8019开发板上终于跑得比较稳定了.一只觉得lwip是一个不错的开放源码的tcp/ip 协议栈,想把自己对lwip的移植和理解写出来.但是由于最近比较忙,lwip的移植也是利用业余时间做的,今天写好了第一部分(lwip的 process model)先贴上来,如果大家有兴趣我再接着往下写.另外我的移植参看了skyeye扬晔大侠的代码,大家可以去看看扬晔大侠的lwip在

2、ucos上移植的文章和代码. lwip应用心得lwIP是瑞士计算机科学院的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。Lwip既可以移植到操作系统上,又可以在无操作系统的情况下独立运行.LwIP的特性如下:(1)支持多网络接口下的IP转发(2)支持ICMP协议(3)包括实验性扩展的的UDP(4)包括阻塞控制,RTT估算和快速恢复和快速转发的TCP(5)提供专门的内部回调接口用于提高应用程序性能(6)可选择的Berkeley接口API(7)在最新的版本中支持ppp(8)新版本中增加了的IP fragment的支持.(9)支持DHCP协议,动态分配ip地址.现

3、在网上最新的版本是的进程模型(process model)tcp/ip协议栈的process model一般有几种方式./ip协议的每一层是一个单独进程.链路层是一个进程,ip层是一个进程,tcp层是一个进程.这样的好处是网络协议的每一层都非常清晰,代码的调试和理解都非常容易.但是最大的坏处数据跨层传递时会引起上下文切换(context switch).对于接收一个TCP segment要引起3次context switch(从网卡驱动程序到链路层进程,从链路层进程到ip层进程,从ip层进程到TCP进程).通常对于操作系统来说,任务切换是要浪费时间的.过频的context swich是不可取的

4、.2.另外一种方式是TCP/IP协议栈在操作系统内核当中.应用程序通过操作系统的系统调用(system call)和协议栈来进行通讯.这样TCP/IP的协议栈就限定于特定的操作系统内核了.如windows就是这种方式.的process model:所有tcp/ip协议栈都在一个进程当中,这样tcp/ip协议栈就和操作系统内核分开了.而应用层程序既可以是单独的进程也可以驻留在tcp/ip进程中.如果应用程序是单独的进程可以通过操作系统的邮箱,消息队列等和tcp/ip进程进行通讯. void sys_sem_signal(sys_sem_t sem)/发送一个信号量void sys_sem_wai

5、t(sys_sem_t sem)/等待一个信号量void sys_timeout(u32_t msecs, sys_timeout_handler h, void *arg)/设置一个超时事件void sys_untimeout(sys_timeout_handler h, void *arg)/删除一个超时事件关于操作系统封装层的信息可以阅读lwip的doc目录下面的sys_文件.在ucos上的移植. 系统初始化 sys_int必须在tcpip协议栈任务tcpip_thread创建前被调用.#define MAX_QUEUES20#define MAX_QUEUE_ENTRIES20type

6、def struct OS_EVENT*pQ;/ucos中指向事件控制块的指针void*pvQEntriesMAX_QUEUE_ENTRIES;/消息队列/MAX_QUEUE_ENTRIES消息队列中最多消息数 TQ_DESCR, *PQ_DESCR;typedef PQ_DESCRsys_mbox_t;/可见lwip中的mbox其实是ucos的消息队列static char pcQueueMemoryPoolMAX_QUEUES * sizeof(TQ_DESCR) ;void sys_init(void)u8_t i;s8_tucErr;pQueueMem = OSMemCreate( (

7、void*)pcQueueMemoryPool, MAX_QUEUES, sizeof(TQ_DESCR), &ucErr );/为消息队列创建内存分区/init lwip task prio offsetcurr_prio_offset = 0;/init lwip_timeouts for every lwip task/初始化lwip定时事件表,具体实现参考下面章节for(i=0;i imeouts(void)u8_t curr_prio;s16_t err,offset;OS_TCB curr_task_pcb;null_ = NULL;/获取当前任务的优先级err = OSTaskQ

8、uery(OS_PRIO_SELF,&curr_task_pcb);curr_prio = curr_task_;offset = curr_prio - LWIP_START_PRIO;/判断当前任务优先级是不是tcp/ip相关任务,优先级5-9if(offset = LWIP_TASK_MAX)return &null_timeouts;return &lwip_timeoutsoffset; ext != NULL)t-next-time += t-time;memp_free(MEMP_SYS_TIMEOUT, t);return;return;“mbox”的实现: u32_tsys_

9、arch_mbox_fetch(sys_mbox_t mbox, void *data, u32_t timeout)u32_tucErr;u16_t ucos_timeout;/在 lwip中 ,timeout的单位是ms/ 在ucosII ,timeout 的单位是timer tickucos_timeout = 0;if(timeout != 0)ucos_timeout = (timeout )*( OS_TICKS_PER_SEC/1000);if(ucos_timeout 5535)ucos_timeout =5535;/如果data!=NULL就返回消息指针,if(data !=

10、 NULL)*data = OSQPend( mbox-pQ, (u16_t)ucos_timeout, &ucErr );elseOSQPend(mbox-pQ,(u16_t)ucos_timeout,&ucErr);/这里修改了ucos中的OSQPend系统调用,/原来的void*OSQPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)/ err的返回值只有两种:收到消息就返回OS_NO_ERR,超时则返回OS_TIMEOUT/这里先将err从8位数据改变成了16位数据 OSQPend(*pevent,timeout, INT16U *e

11、rr)/重新定义了OS_TIMEOUT/在ucos中原有#define OS_TIMEOUT0/改为 #defineOS_TIMEOUT-1/err返回值的意义也改变了,如果超时返回OS_TIMEOUT/ 如果收到消息,则返回OSTCBCur-OSTCBDly修改部分代码如下/if (msg != (void *)0) /* Did we get a message?*/ OSTCBCur-OSTCBMsg = (void *)0;/ OSTCBCur-OSTCBStat= OS_STAT_RDY;/ OSTCBCur-OSTCBEventPtr = (OS_EVENT *)0;/ *err

12、= OSTCBCur-OSTCBDly;/ zhangzs /OS_EXIT_CRITICAL();/ return (msg);/* Return message recEived */关于ucos的OSTBCur-OSTCBDly的含义请查阅ucos的书籍if( ucErr = OS_TIMEOUT ) timeout = SYS_ARCH_TIMEOUT; else if(*data = (void*)&pvNullPointer )*data = NULL;/单位转换,从ucos tick-mstimeout = (ucos_timeout -ucErr)*(1000/ OS_TICKS_PER_SEC);return timeout;semaphone的实现和mbox类似,这里就不再重复了. 课题份量和难易程度要恰当,博士生能在二年内作出结果,硕士生能在一年内作出结果,特别是对实验条件等要有恰当的估计。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号