lwIP入门 - 初始化与启动流程
lwIP入门 - 初始化与启动流程
1. 初始化

系统初始化
1
2
3
4
5
6
7
8
9
10
11// 初始化内存池和堆内存
lwip_init();
// → mem_init() // 内存堆初始化
// → memp_init() // 内存池初始化
// → pbuf_init()
// → netif_init() // 网络接口初始化
// → ip_init() // IP协议初始化
// → etharp_init() // ARP协议初始化
// → udp_init() // UDP初始化
// → tcp_init() // TCP初始化
// → 其他协议初始化网络接口的添加与配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30// 配置ip地址, 使用静态地址或者DHCP
#if USE_DHCP
ip_addr_set_zero(&ipaddr);
ip_addr_set_zero(&netmask);
ip_addr_set_zero(&gw);
#else
IP4_ADDR(&ipaddr, 192, 168, 1, 100);
IP4_ADDR(&netmask, 255, 255, 255, 0);
IP4_ADDR(&gw, 192, 168, 1, 1);
#endif
// @brief 添加网络接口
// @param netif: 网络接口
// @param ip_addr: IP地址
// @param netmask: 子网掩码
// @param gateway: 网关
// @param ethernetif_init 硬件初始化
// @param ethernet_input 网络输入
netif_add(netif, ip_addr, netmask, gateway, NULL, ðernetif_init, ðernet_input);
// 设置默认网络接口
netif_set_default(netif);
// 设置网络接口为UP状态
netif_set_up(netif);
// 启动DHCP或者其他的一些服务
#if USE_DHCP
dhcp_start(netif);
#endif回调函数注册
1
2
3// 注册回调函数
netif_set_link_callback(netif, callback);
netif_set_status_callback(netif, callback);
2. 网络接口结构netif
每一个netif结构体是对一个网卡进行抽象,包含了该网卡的收发函数、状态等信息。
1 | |
lwIP入门 - 初始化与启动流程
https://simonkimi.githubio.io/2025/12/22/lwIP入门-初始化与启动流程/