EDN China > 设计实例 > 嵌入式系统 > 开发工具 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

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

来源:电子产品世界/华中师范大学何轩?? 夏应清 湖北经济学院李祥?? 付晓军?? 2005年10月26日 ?? 收藏0

? ????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的移植也是根据实现的硬件以及操作系统对象,对相应的文件进行修改。整个通讯协议的引入可以很快实现。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

以太网? 嵌入式? 通信?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈