WL80211

来自Bouffalo Lab Docs
跳转到导航 跳转到搜索

WL80211是Bouffalo SDK新一代Wi-Fi控制框架,和现有的Fhost方案进行二选一,针对IoT极致资源占用场景优化。

一、整体架构对比

WL80211 vs Fhost
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 产品的首选。

================================================================