IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> LWIP源码移植 -> 正文阅读

[网络协议]LWIP源码移植

背景

物联网时代和大数据时代背景下,越来越多的嵌入式产品需要连入互联网,往后也是一个愈演愈烈的趋势。嵌入式设备要连入因特网,必须遵循网络通信协议(TCP/IP),而嵌入式领域中主流TCP/IP协议栈就是开源LwIP协议栈,市面上绝大部分低端嵌入式设备都采用此协议栈。那么本文笔者主要讲述LwIP源码的文件分布和在芯片的中间组件上移植。

LWIP源码

文件结构

目前LWIP存在的版本较多,本文对照NB芯片上版本,本文下载的是版本2.0.3。解压后文件夹如下图:
 图2.1.1 源码文件夹
doc 文件夹里面有两个比较重要的文档:rawapi.txt 和 sys_arch.txt。 rawapi.txt 告诉读者怎么使用 raw/callback API 进行编程, sys_arch.txt包含了移植说明,在移植的时候会用到。

src 文件夹是我们的重点,里面包含了 LWIP 的源码。test 是 LWIP 提供的一些测试程序,这里用不到。打开 src 源码文件夹,如图 所示。
在这里插入图片描述
src 文件夹由 5 个文件夹组成: api、 apps、core、 include、 netif。
api 文件夹里面是 LWIP的 sequential API(Netconn)和 socket API 两种接口函数的源码,要使用这两种 API 需要操作系统支持。
apps文件夹里是应用层协议源码,包括http、mqtt、sntp等。
core 文件夹是 LWIP 内核源码。
include 文件夹里面是 LWIP 使用到的头文件。
netif 文件夹里面是与网络底层接口有关的文件。

api源码文件夹:
在这里插入图片描述
apps源码文件夹:
在这里插入图片描述
图2.2.5 core源码文件夹:
在这里插入图片描述
include源码文件夹:
在这里插入图片描述
netif源码文件夹:
在这里插入图片描述

源码移植

准备工作

1.中间组件位置
LWIP源码移植就在中间件文件夹下的thirdparty文件夹中。
在这里插入图片描述
2.LWIP源码下载
从官网下载LWIP2.0.3版本(LWIP2.0.3)。

添加LWIP源文件

首先对比文件夹添加情况。

源码文件夹比较:
在这里插入图片描述
doc和test文件夹没有添加进来。

src文件夹比较:
在这里插入图片描述
apps文件夹没有添加进来。

api文件夹下文件比较:
在这里插入图片描述
api文件夹下所有的文件都添加了。

core文件夹下文件比较:
在这里插入图片描述
core文件夹下所有的文件都添加了,同时新增了一个文件sys_arch.c。

include文件夹下文件比较:
在这里插入图片描述
inclue文件夹下所有的文件都添加了,同时还新添加一个arch文件夹和两个头文件lwip_config.h。

netif文件夹下文件比较:
在这里插入图片描述
netif文件夹下ppp文件夹没有添加进来。

总上所述,lwip的源码文件基本都添加进来了,删掉了少量的项目中不需要的文件夹和文件,我们重点关注那些新增的文件夹和文件以及修改的文件。

新增文件

我们上面只是将 LWIP 源文件添加到工程中,要将驱动和 LWIP连接起来还需要一些其他文件,即上面include文件夹下的lwip_config.h、 lwip_config_ec6160h00.h文件、arch文件夹中文件和core文件夹中sys_arch.c文件。

arch文件夹下文件:
在这里插入图片描述
根据 sys_arch.txt 中的描述,arch文件下 cc.h 主要完成了协议栈内部使用的数据类型的定义,如果使用操作系统的话还有临界代码区保护等等, cc.h 文件部分内容如下所示。
LWIP调试时使用的类型:
在这里插入图片描述
与编译器相关的符号:
在这里插入图片描述
在这里插入图片描述
perf.h 是和系统测量与统计相关的文件,我们不使用任何的测量和统计,因此这个文件中的两个宏定义为空,代码如下所示
在这里插入图片描述
sys_arch.c文件是对操作系统的内核函数的封装,比如消息邮箱函数、互斥锁、信号量相关函数、任务线程相关函数以及临界区保护函数等。

剪裁与配置

在 LWIP 的源码中有个 opt.h 的文件, 这个文件是裁剪和配置 LWIP 的,不过我们最好不要直接在 opt.h 里面做修改, 我们可以打开 opt.h 文件看一下,如下图所示:
在这里插入图片描述
很明显真正的剪裁配置文件在lwip_config.h文件中,文件中有很多的宏定义,每个宏定义前面已经给出了具体的解释,这里就不贴图赘述。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 12:17:32  更:2021-09-30 12:18:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:54:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码