LwIP 协议栈核心.c 文件依赖关系图

LwIP协议栈核心.c文件依赖关系图

以下通过Mermaid结构图清晰展示LwIP核心.c文件的层级依赖、调用关系,按「基础层→核心层→应用层」的逻辑梳理,同时标注关键文件的核心作用:
基础类型定义
数据载体
可选依赖
cc.c

平台数据类型适配
所有文件
sys_arch.c

OS/裸机适配(线程/信号量)
mem.c

堆内存管理
tcp.c

TCP核心逻辑
netconn.c

NETCONN API
memp.c

内存池管理
pbuf.c

数据包缓冲管理
所有数据收发模块
netif.c

网卡接口管理
ethernetif.c

以太网驱动适配
arp.c

ARP协议处理
ip4.c

IPv4核心(转发/封装)
ip_frag.c

IP分片/重组
icmp.c

ICMP协议(Ping)
igmp.c

组播管理(可选)
udp.c

UDP协议
tcp_in.c

TCP接收处理
tcp_out.c

TCP发送处理
tcp_timer.c

TCP超时重传
tcp_win.c

TCP滑动窗口
api_lib.c

RAW API核心
api_msg.c

RAW API消息处理
sockets.c

Socket API(BSD兼容)
dhcp.c

DHCP客户端
dns.c

DNS解析
debug.c

调试日志
chksum.c

校验和计算

核心文件关系说明

1. 基础依赖链(必选)
  • 最底层cc.c(定义u8_t/u16_t等跨平台类型)、sys_arch.c(OS/裸机适配)是所有模块的基础;
  • 内存/缓冲mem.c/memp.c(内存管理)→ pbuf.c(数据包缓冲),所有数据收发模块(tcp/udp/ip)都依赖pbuf.c传递数据;
  • 网卡接口netif.c(网卡管理)是链路层与网络层的桥梁,ethernetif.c是具体的以太网驱动适配,依赖netif.c
2. 协议层调用链
  • 网络层ip4.c是核心,承接arp.c(地址解析)、icmp.c(差错报告),向下调用pbuf.c,向上为传输层提供IP封装/解封装;
  • 传输层
    • UDP:udp.c直接依赖ip4.c,逻辑简单,无复杂状态管理;
    • TCP:tcp.c是核心,拆分tcp_in.c(接收)、tcp_out.c(发送)、tcp_timer.c(超时)、tcp_win.c(窗口),整体依赖ip4.csys_arch.c(定时器/同步)。
3. API层封装关系
  • RAW API(api_lib.c/api_msg.c):直接封装tcp.c/udp.c,是最底层API;
  • NETCONN API(netconn.c):基于RAW API封装,增加连接对象抽象,依赖sys_arch.c(线程/信号量);
  • Socket API(sockets.c):最高层封装,基于NETCONN API实现BSD兼容接口,对外提供socket()/connect()等函数。
4. 可选模块依赖
  • dhcp.c:依赖ip4.c(IP地址管理)和netif.c(网卡配置);
  • dns.c:依赖udp.c(DNS用UDP通信)和ip4.c(目标IP解析);
  • igmp.c/ppp.c等:基于ip4.c扩展,按需启用。

总结

  1. LwIP文件依赖遵循「基础层→数据缓冲→链路层→网络层→传输层→API层 」的层级逻辑,核心是pbuf.c(数据)和ip4.c(网络层核心);
  2. TCP模块是最复杂的部分,拆分为多个子文件(tcp_in/out/timer/win),均依赖tcp.c核心;
  3. API层是逐层封装关系:Socket API → NETCONN API → RAW API,底层均指向传输层(TCP/UDP)核心;
  4. 移植时核心修改sys_arch.c(OS适配)和ethernetif.c(网卡驱动),无需改动协议栈核心文件。
相关推荐
我叫洋洋2 小时前
C ++ [ hello world ]
c语言·c++·算法
天空'之城3 小时前
C 语言工业级通用组件手写 09:CRC32 数据校验
c语言·嵌入式开发·数据校验·crc32·工业级组件
星恒讯工业路由器5 小时前
5G FWA技术演进与趋势
网络·5g·信息与通信·4g·5g fwa·3gpp规范·fwa趋势
sramdram6 小时前
基于32位微控制器的FOC汽车水泵方案
单片机·嵌入式硬件·汽车·微控制器·32位微控制器
Scott9999HH7 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
星夜夏空997 小时前
网络编程(1)
服务器·网络
上海云盾-小余8 小时前
中小站点防护避坑:低价高防服务存在的各类安全短板剖析
网络·爬虫·安全·ddos
天空'之城8 小时前
C 语言工业级通用组件手写 06:固定块内存池
c语言·嵌入式开发·内存池·底层优化
十月的皮皮9 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
开发笔记-阿牛9 小时前
解析一款有意思的产品||CK6159A语音芯片设计的儿童专注力训练机-舒尔特玩具
stm32·单片机·嵌入式硬件·音频