微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式LWIP网络客户端设计

嵌入式LWIP网络客户端设计

时间:12-28 来源:电子产品世界 点击:

协议栈LWIP的移植

LWIP是轻量级的TCP/IP协议栈,协议栈中涉及的函数与数据结构和操作系统及硬件不相关,如果需要使用uC/OS-II操作系统的函数,必须通过操作系统模拟层进行调用。所以移植LWIP协议栈,实际上就是移植到uC/OS-II操作系统。操作系统模拟层为定时器、同步处理、消息传送机制等服务提供一组外留的接口函数,为LwIP提供两种进程间通信方式:信号量和邮箱。创建任务函数、临界保护函数以及信号量和邮箱操作函数均由uC/OS-II提供,进行针对LwIP的移植任务时,就是修改相关接口函数(包括信号量操作函数、邮箱操作函数、临界保护函数、sys_thread_new( )函数、sys_arch_timeouts( )函数),从而实现LwIP操作系统模拟层的函数利用[4~5]。

LWIP的数据包包头是14个字节,基于LWIP的以太网接收的数据包格式以一个数据结构来描述:PACK_STRUCT_BEGIN

struct eth_hdr {

PACK_STRUCT_FIELD(struct eth_addr dest); //目标的媒质接入控制层地址

PACK_STRUCT_FIELD(struct eth_addr src); //源的媒质接入控制层地址

PACK_STRUCT_FIELD(u16_t type); //类型

} PACK_STRUCT_STRUCT;

PACK_STRUCT_END

其中几个PACK_STRUCT_xxx 的宏定义与编译器字对齐相关,上面的目标dest、源src和类型type三个字段分别对应目标的媒质接入控制层地址、源的媒质接入控制层地址、数据类型。

4 结论

测试前需要把计算机与嵌入式网口模块的IP地址配置在同一网段,IP地址分别为192.168.1.100,192.168.1.102。如果想查看IP地址配置情况,运行CMD命令行,执行ipconfig/all命令。配置完以后,接着ping嵌入式网口的IP地址,结果如图2所示。

从图2可以看出:主机ping 32字节的数据,4个包所用的时间最长为5ms,最短为3ms;而4个包的TTL值均为255, 这是由于最优路径选择算法定下来以后,经过一段时间稳定后,网络拓扑结构也稳定了,数据包的路由路径也会相应稳定在一个最优路径上。整个过程的数据收发正确,错误率为0%。

参考文献:

[1]张齐,劳炽元. 轻量级协议栈LWIP的分析与改进[J]. 计算机工程与设计,2010,31(10): 2169-2256

[2]方琼琼,李正平. 基于Rt-thread的嵌入式串口服务器的设计与实现[J]. 电脑知识与技术,2012,8(10):2425-2428

[3]陈希超,王健. 基于RT-Thread的嵌入式网络通信[J]. 电声技术,2012,36 (12):49-56

[4]杨俊,吕建平,徐峰柳. 基于uC/OS-II和LwIP的嵌入式Web服务器实现[J]. 电气自动化,2011,33(3):62-64

[5]赵国锋,马文武. 基于LWIP的嵌入式网络系统设计与实现[J]. 微计算机信息, 2008,24(8-2):59-61

[6]songhexin8, STM32F107中国版用户手册[EB/OL][2012-12-06]. http://wenku.baidu.com/link?url=EFDU6p5iPaoci3mzJ2tuIZeBX2av1kMKc41_nYDXF4Ow4F0tOlf6QtxaweJ94hHYa5fEVL0wo67NMMs7bySVm_coWhCitXFfKRlCjfH-NZa

[7]高吉星,赵强,佟为明.基于ENC28J60的TMS320F2812以太网通信接口设计[J]. 计算机测量与控制,2013,21 (3):709-711

[8]啊左不是蜗牛, UC/OS-II学习笔记--STM32移植[EB/OL][2012-12-29]. http://bbs.ednchina.com/

BLOG_ARTICLE_3010147.HTM;http://bbs.ednchina.com/BLOG_ARTICLE_3010148.HTM

本文来源于中国科技核心期刊《电子产品世界》2016年第1期第39页,欢迎您写论文时引用,并注明出处。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top