大型量产固件的工程实践(十一):健壮的网络状态机——链路监控与指数退避重连
大型量产固件的工程实践(十一):健壮的网络状态机——链路监控与指数退避重连
本文是《大型量产固件的工程实践》专栏第 11 篇。
上一篇:第 10 篇《嵌入式状态机设计》 | 本文是专栏最后一篇
一、网络初始化为什么也要状态机
网络是嵌入式里"最容易出幺蛾子"的模块:网线没插、对端协商失败、DHCP 没响应、协议栈初始化失败……任何一步都可能出问题,而且运行中还会断线。
把网络的"初始化 + 监控 + 恢复"用状态机统一管理,是量产固件的标准做法。本文是上一篇《状态机设计》的实战应用,讲一个健壮的网络状态机。
二、多阶段初始化链
网络就绪要经过好几步,每一步都可能失败:
UNINIT ──▶ LINK_INIT ──▶ STACK_INIT ──▶ IP_ALLOC ──▶ READY 物理层就绪 协议栈就绪 地址分配就绪 完全就绪 (PHY + MAC) (TCP/IP 栈) (DHCP/静态)| 状态 | 含义 |
|---|---|
| LINK_INIT |
