欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

lwip开源协议栈移植学习笔记

程序员文章站 2024-02-22 18:18:34
...
lwip开源协议栈移植之旅开始了,哈哈 很有挑战哦!!

lwip有无操作系统支持都可以使用,不依赖于操作系统。

带操作系统移植需要实现操作系统模拟层实现文件,LwIP 的作者为操作系统模拟层提供了较为详细描述在doc夹下文件名为 sys_arch.txt。我们的编写工作根据这个说明进行。

1、支持的操作系统需要添加的头文件说明:

文件 描述
cc.h 与硬件平台及编译器相关的环境变量及数据类型声明文件
perf.h centered 定义了性能测量使用的宏,由 LwIP 调用,可以将其定义为一个空的宏。
sys_arch.h sys_arch.c 的头文件,定义 Arch(即整个移植所依赖的操作系统平台,译注)需要的数据类型:sys_sem_t,sys_mbox_t,sys_thread_t,以及可选类型:sys_prot_t。

2、操作系统模拟层实现文件sys_arch.c:
sys_arch.c 必须实现sys_arch.txt列出的几个函数:
比如void sys_init(void);以及关于信号和邮箱、临界保护的几个重要函数,协议栈和操作系统数据交互和同步分别使用邮箱和信号量,这些函数在sys.h声明了未实现,如下图所示。
lwip开源协议栈移植学习笔记
完善sys_thread_new(),支持操作系统多线程

3、配置文件:

文件 描述
lwipopts.h lwip配置头文件

4、在作者设计好的框架内完成与底层硬件相关的部分,需完善填充几个函数,lwip已给函数框架,实现定义即可:

函数 描述
err_t ethernetif_init(struct netif *netif) 以太网初始化函数
low_level_output() 链路层发送函数
low_level_init() 网卡初始化函数,网卡硬件初始化、初始化 EMAC
ethernetif_input() 数据接收,最好开个接收线程
low_level_input() 得到一整帧数据

5、测试
ping测试、建立了一个简单的 WEB 服务器访问

6、参考文章:
uC/OS-II 平台下的 LwIP 移植笔记 作者: 焦海波 这个笔记作者很用心值得一看
Lwip嵌入式网络那些事.PDF 理论和实践都讲解比较清楚
lwIP TCP/IP 协议栈笔记 讲解 NETCONN 接口编程非常通俗易懂难道的好文章

相关标签: lwip