WL80211:修订间差异
无编辑摘要 |
无编辑摘要 |
||
| 第25行: | 第25行: | ||
fhost TX 流程(多层级,复杂): | fhost TX 流程(多层级,复杂): | ||
<pre> | <pre> | ||
应用层 (socket_send) | 应用层 (socket_send) | ||
| 第50行: | 第51行: | ||
【性能瓶颈】: | 【性能瓶颈】: | ||
• 8+层函数调用 → 多次 Flash 访问 → Cache Miss 多 | • 8+层函数调用 → 多次 Flash 访问 → Cache Miss 多 | ||
• 4个任务竞争 → 多次锁等待 | • 4个任务竞争 → 多次锁等待 | ||
• 2次互斥锁 → 阻塞开销 | • 2次互斥锁 → 阻塞开销 | ||
• 1次任务切换 → 调度开销 | • 1次任务切换 → 调度开销 | ||
wl80211 TX 流程(精简高效): | wl80211 TX 流程(精简高效): | ||
< | <pre> | ||
应用层 (socket_send) | 应用层 (socket_send) | ||
↓ | ↓ | ||
LWIP (tcp_output) | LWIP (tcp_output) | ||
↓ | ↓ | ||
wl80211_output() [第1层: 直接处理] | wl80211_output() [第1层: 直接处理] | ||
↓ | ↓ | ||
wl80211_mac_tx() [第2层: 直接处理] | wl80211_mac_tx() [第2层: 直接处理] | ||
↓ | ↓ | ||
STAILQ_INSERT_TAIL() [第3层: 直接入队8个TID队列] | STAILQ_INSERT_TAIL() [第3层: 直接入队8个TID队列] | ||
↓ | ↓ | ||
macif_tx_data_ind() [第4层: 直接通知] | macif_tx_data_ind() [第4层: 直接通知] | ||
↓ | ↓ | ||
MACSW | MACSW | ||
↓ | ↓ | ||
WiFi 硬件 | WiFi 硬件 | ||
</pre> | |||
【性能优势】: | 【性能优势】: | ||
* 仅2-3层函数调用 → 少量 Flash 访问 → Cache Miss 少 | |||
* 无任务竞争 → 无锁等待 | |||
* 无互斥锁 → 无阻塞开销 | |||
* 无任务切换 → 零调度开销 | |||
【性能提升】:20-40%(取决于流量模式) | 【性能提升】:20-40%(取决于流量模式) | ||
三、RX 数据流对比(接收一个网络包) | 三、RX 数据流对比(接收一个网络包) | ||
【场景】:从 WiFi 接收数据包到应用 | 【场景】:从 WiFi 接收数据包到应用 | ||
2026年2月24日 (二) 08:24的版本
WL80211是Bouffalo SDK新一代Wi-Fi控制框架,和现有的Fhost方案进行二选一,针对IoT极致资源占用场景优化。
一、整体架构对比
| Fhost | WL80211 |
|---|---|
| 通用型完整架构 | IoT 性能优化架构 |
| 功能最全 | 保留关键功能 |
| 性能一般 | 性能较高 |
| RAM占用高 (~30KB) | RAM占用低 (~2KB) |
| 4个长期任务 | 0个长驻任务(事件驱动) |
| 代码 200KB+ | 代码 30KB |
二、TX 数据流对比(发送一个网络包)
【场景】:应用发送一个数据包到 WiFi 网络
fhost TX 流程(多层级,复杂):
应用层 (socket_send) ↓ LWIP (tcp_output) ↓ fhost_tx_start() [第1层] ↓ fhost_tx_req() [第2层] ↓ fhost_tx_queue_push() [第3层: 入队67个队列] ↓ fhost_wakeup() [任务切换开销 ~500周期] ↓ fhost_tx_process() [第4层: 任务处理] ↓ fhost_tx_buffer_get() [第5层] ↓ macif_tx_evt() [第6层] ↓ MACSW ↓ WiFi 硬件
【性能瓶颈】: • 8+层函数调用 → 多次 Flash 访问 → Cache Miss 多 • 4个任务竞争 → 多次锁等待 • 2次互斥锁 → 阻塞开销 • 1次任务切换 → 调度开销
wl80211 TX 流程(精简高效):
应用层 (socket_send) ↓ LWIP (tcp_output) ↓ wl80211_output() [第1层: 直接处理] ↓ wl80211_mac_tx() [第2层: 直接处理] ↓ STAILQ_INSERT_TAIL() [第3层: 直接入队8个TID队列] ↓ macif_tx_data_ind() [第4层: 直接通知] ↓ MACSW ↓ WiFi 硬件
【性能优势】:
- 仅2-3层函数调用 → 少量 Flash 访问 → Cache Miss 少
- 无任务竞争 → 无锁等待
- 无互斥锁 → 无阻塞开销
- 无任务切换 → 零调度开销
【性能提升】:20-40%(取决于流量模式)
三、RX 数据流对比(接收一个网络包)
【场景】:从 WiFi 接收数据包到应用
fhost RX 流程(多级队列管理):
---------------------------------------------
WiFi 硬件
↓
MACSW (填充 RX descriptor)
↓
queue_desc (STAILQ: 动态链表)
↓
fhost_rx_process() [从队列取 descriptor]
↓
fhost_rx_buf_forward() [路由判断]
↓
net_al_input() [创建 pbuf,零拷贝]
↓
LWIP 协议栈
↓
应用层 (socket_recv)
【特点】:
• 多级队列管理
• 总是零拷贝
• 7层处理流程
============================================================
wl80211 RX 流程(预分配池,智能拷贝):
---------------------------------------------
WiFi 硬件
↓
MACSW (填充 RX descriptor)
↓
macsw_rx_q (预分配固定池)
↓
process_single_rx_desc() [直接处理]
↓
【智能拷贝判断】
↓
├─ 小包 (<500B): memcpy + 立即释放 buffer → 快速池周转
└─ 大包 (≥500B): 零拷贝 + pbuf 引用 → 延迟释放
↓
wl80211_tcpip_input() [直接送 LWIP]
↓
LWIP 协议栈
↓
应用层 (socket_recv)
【优势】:
• 预分配池减少内存碎片
• 智能拷贝:小包快速释放,大包零拷贝
• 流程精简:减少 80%+ 处理步骤
四、资源占用对比(估算)
================================================================
fhost wl80211 节省
--------------- ------------ ---------
任务栈空间 ~4000 字 ~300 字 节省 92%
TX 队列 ~8KB ~256 字 节省 97%
RX 队列 ~500 字 ~300 字 节省 40%
全局状态 ~1KB ~200 字 节省 80%
代码段 (ROM) ~100KB ~30KB 节省 70%
------------ ------------ ---------
总 RAM 占用 >10KB <2KB 节省 80%+
总 ROM 占用 ~100KB ~30KB 节省 70%
五、性能优势来源(为什么 wl80211 更快?)
================================================================
IoT 设备硬件约束:
• 使用 4线 SPI Flash(非并行)
• Cache Miss 时从 Flash 读取需要 100-150 CPU 周期
• Cache 命中只需 1-3 CPU 周期
• 差距:Cache Miss 比命中慢 50-150 倍!
wl80211 性能优势:
• 代码精简 (30KB vs 100KB) → 更容易完全放入 Cache
• 流程精简 (2-3层 vs 7-9层) → 减少 60-75% Cache Miss
• 无锁无任务切换 → 消除 500+ 周期阻塞
实际影响(10 Mbps 吞吐):
• wl80211: 节省 3% CPU 时间 → 可用于应用层
• fhost: 浪费 3% CPU 时间 → 无法处理其他任务
六、选型决策指南
================================================================
【推荐使用 wl80211 的场景】
✓ RAM < 64KB 的 MCU (BL602, BL702)
✓ STA 模式为主的产品 (95% 时间)
✓ 高吞吐量应用 (视频流、大文件传输)
✓ 功耗敏感产品 (电池供电)
✓ 成本敏感产品 (大批量生产)
✓ 追求极致性能的产品 (即使 BL616 RAM 充足)
【仅在以下场景考虑 fhost】
⚠ 必须使用复杂 AP+STA 并发
⚠ 需要多 VIF 并发功能
⚠ 需要完整 AP 功能 (多 SSID、VLAN)
⚠ 需要丰富调试功能
七、一句话总结
================================================================
网络功能:wl80211 与 fhost 完全相同(都是 LWIP)
差异重点:wl80211 通过精简的架构设计,在性能、资源、功耗
方面都显著优于通用型 fhost 方案,是 IoT 产品的首选。
================================================================