基于μCOS-Ⅱ的嵌入式系统以太网通信功能的实现

技术分类: 嵌入式系统  通信  | 2005-10-26
来源:电子产品世界 | 华中师范大学何轩,夏应清 湖北经济学院李祥,付晓军

      sys_mbox_free( ) /释放一个消息队列

       sys_mbox_post( )/向消息队列发送消息

       sys_arch_mbox_fetch( )/从消息队列中获取消息

       μCOS-Ⅱ同样实现了消息队列结构及其操作,但是μCOS-Ⅱ没有对消息队列中的消息进行管理,因此不能直接使用,必须在μCOS-Ⅱ的基础上重新实现。

       (3)sys_arch_timeout函数

       LwIP中每个与外界网络连接的线程都有自己的timeout属性,即等待超时时间。这个属性表现为每个线程都对应一个sys_timeout结构体队列,包括这个线程的timeout时间长度

,以及超时后应调用的timeout函数,该函数会做一些释放连接,回收资源的工作.timeout结构体已经由LwIP自己在sys.h中定义好了,而且对结构体队列的数据操作也由LwIP负责,我们所要实现的是如下函数:

       struct sys_timeouts*sys_arch_timeouts(void)

       这个函数的功能是返回目前正处于运行态的线程所对应的timeout队列指针。timeout队列属于线程的属性,它是OS相关的函数,只能由用户实现。

       (4)sys_thread_new创建新线程

       LwIP可以是单线程运行,也可以多线程运行。为提高效率并降低编程复杂度,就需要用户实现创建新线程的函数:

       void sys_thread_new(void(*thread)(void*arg), void*arg);

       在μCOS-Ⅱ中,没有线程(thread)的概念,只有任务(Task)。它已经提供了创建新任务的系统API调用OSTaskCreate,因此只要把OSTaskCreate封装一下,就可以实现sys_hread_new.

       ·lib_ arch中库函数的实现

       LwIP协议栈中用到了8个外部函数,这些函数通常与用户使用的系统或编译器有关,因此留给用户自己实现,有关程序如下:

       u16_t htons(u16_t n); /16位数据高低字节交换

       u16_t ntohs(u16_t n);

       int strlen(const char * str);/返回字符串长度

       int strncmp(const char * strl,const char * str2,int len);/字符串比较

       void bcopy(const void * src, void * dest, int len);/内存数据块之间的互相拷贝

       void bzero(void *data, int n); /内存中指定长度的数据块清零

       类似于操作系统在硬件上的移植,LwIP的移植也是根据实现的硬件以及操作系统对象,对相应的文件进行修改。整个通讯协议的引入可以很快实现。

0
2
(请您对文章做出评价)
1】【2】【3】【4】【5
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

汉高全套电子材料在手机制造业的应用

时间:2007-12-13 10:00:00-12:15:00
简介:本次在线研讨会主要讨论手机设计中各种胶粘剂的应用,包括结构胶、导电胶、导热胶、底部填充剂、COB、POP及ACP在可靠性方面的解…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会