其他分享
首页 > 其他分享> > 【lwip】01-简介笔记

【lwip】01-简介笔记

作者:互联网

目录


前言

本系列笔记主要记录学习LWIP时的简单笔记。
方便以后用到可以快速学习了解。

李柱明博客:https://www.cnblogs.com/lizhuming/p/15487034.html

1.1 优缺点

LwIP 具有主要特性:

  1. 支持 ARP 协议(以太网地址解析协议)。
  2. 支持 ICMP 协议(控制报文协议),用于网络的调试与维护。
  3. 支持 IGMP 协议(互联网组管理协议),可以实现多播数据的接收。
  4. 支持 UDP 协议(用户数据报协议)。
  5. 支持 TCP 协议(传输控制协议),包括阻塞控制、RTT 估算、快速恢复和快速转发。
  6. 支持 PPP 协议(点对点通信协议),支持 PPPoE。
  7. 支持 DNS(域名解析)。
  8. 支持 DHCP 协议,动态分配 IP 地址。
  9. 支持 IP 协议,包括 IPv4、IPv6 协议,支持 IP 分片与重装功能,多网络接口下的数据包转发。
  10. 支持 SNMP 协议(简单网络管理协议)。
  11. 支持 AUTOIP,自动 IP 地址配置。
  12. 提供专门的内部回调接口(Raw API),用于提高应用程序性能。
  13. 提供可选择的 Socket API、NETCONN API (在多线程情况下使用) 。

LwIP 在嵌入式中使用有以下优点:

  1. 资源开销低,即轻量化。LwIP 内核有自己的内存管理策略和数据包管理策略, 使得内核处理数据包的效率很高。另外,LwIP 高度可剪裁,一切不需要的功能都可以通过宏编译选项去掉。 LwIP 的流畅运行需要 40KB 的代码 ROM 和几十 KB 的 RAM,这让它非常适合用在内存资源受限的嵌入式设备中。
  2. 支持的协议较为完整。几乎支持 TCP/IP 中所有常见的协议,这在嵌入式设备中早已够用。
  3. 实现了一些常见的应用程序:DHCP 客户端、DNS 客户端、HTTP 服务器、MQTT 客户端、TFTP 服务器、SNTP 客户端等等。
  4. 同时提供了三种编程接口:RAW API、NETCONN API(注:NETCONN API 即为 Sequential API)和 Socket API。这三种 API 的执行效率、易用性、可移植性以及时空间的开销各不相同,用户可以根据实际需要,平衡利弊,选择合适的 API 进行网络应用程序的开发。
  5. 高度可移植。其源代码全部用 C 实现,用户可以很方便地实现跨处理器、跨编译器的移植。 另外,它对内核中会使用到操作系统功能的地方进行了抽象,使用了一套自定义的 API, 用户可以通过自己实现这些 API,从而实现跨操作系统的移植工作。
  6. 开源、免费,用户可以不用承担任何商业风险地使用它。
  7. 相比于嵌入式领域其它的 TCP/IP 协议栈,比如 uC-TCP/IP、FreeRTOS-TCP 等, LwIP 的发展历史要更悠久一些,得到了更多的验证和测试。LwIP 被广泛用在嵌入式网络设备中, 国内一些物联网公司推出的物联网操作系统,其 TCP/IP 核心就是 LwIP;物联网知名的 WiFi 模块 ESP8266,其 TCP/IP 固件,使用的就是 LwIP。

缺点:

  1. 相比于 Linux 和 Windows 系统自带的 TCP/IP 协议栈,LwIP 的功能不算完整和强大。

1.2 文件说明

1.2.1 获取 lwip 源码文件

LwIP 的项目主页:http://savannah.nongnu.org/projects/lwip/

关注其:project homepage 和 download area 这两个点即可:

说明:contrib 包里面装的是移植和应用 LwIP 的一些 demo。

1.2.2 lwip 文件夹说明

1.2.2.1 总目录

下载两个包:lwip-2.1.2.zip(源码包)和 contrib-2.1.0.zip(contrib 包)

1.2.2.2 lwip 包

1.2.2.3 lwip\src 内核源码

LwIP 内核是由一系列模块组合而成的,这些模块包括:

每个模块是由相关的几个源文件和头文件组成的,通过头文件对外声明一些函数、宏、数据类型,使得其它模块可以方便地调用此模块的功能。而构成每个模块的头文件都被组织在了 include 目录中,而源文件则根据类型被分散地组织在 api、apps、core、netif 目录中。

部分文件说明:

1.2.2.4 lwip 官方说明文档

LwIP 官方说明文档:http://www.nongnu.org/lwip/2_1_x/index.html

陷阱章节-Common pitfalls:

1.2.3 contrib 文件夹说明

就是 demo 文件夹。后面开发可参考。

资料

参考:

标签:01,LwIP,1.2,简介,API,内核,模块,lwip
来源: https://www.cnblogs.com/lizhuming/p/15487034.html