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

本文详细介绍lwip开源协议栈的移植过程,包括无操作系统支持的使用方式,操作系统模拟层的实现,以及与底层硬件相关的函数完善。通过具体步骤指导读者如何在不同平台上部署lwip,最后通过ping测试和简易WEB服务器验证移植成功。
摘要由CSDN通过智能技术生成
lwip开源协议栈移植之旅开始了,哈哈 很有挑战哦!!

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

带操作系统移植需要实现操作系统模拟层实现文件,操作系统模拟层功能在于为协议栈提供邮箱、信号量等重要机制。LwIP 的作者为操作系统模拟层提供了较为详细描述在doc夹下文件名为 sys_arch.txt。我们的编写工作根据这个说明进行。

上层应用api与协议栈内核之间数据交互都是通过邮箱实现。其次是信号量为上层与内核执行提供了同步与互斥支持。

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

文件描述
cc.h与硬件平台及编译器相关的环境变量及数据类型声明文件
perf.hcentered 定义了性能测量使用的宏,由 LwIP 调用,可以将其定义为一个空的宏。
sys_arch.hsys_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声明了未实现,sys.h声明了我们需要实现所有的模拟层函数如下图所示。
在这里插入图片描述
完善sys_thread_new(),支持操作系统多线程

3、配置文件:

文件描述
lwipopts.hlwip配置头文件

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 接口编程非常通俗易懂难道的好文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天使也有爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值