查看“︁WL80211”︁的源代码
←
WL80211
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
不允许您执行您所请求的操作。
您可以查看和复制此页面的源代码。
WL80211是Bouffalo SDK新一代Wi-Fi控制框架。 === 一、整体架构对比 === {| class="wikitable" |+ 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 流程(精简高效): <nowiki>---------------------------------------------</nowiki> 应用层 (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 数据流对比(接收一个网络包) <nowiki>================================================================</nowiki> 【场景】:从 WiFi 接收数据包到应用 fhost RX 流程(多级队列管理): <nowiki>---------------------------------------------</nowiki> WiFi 硬件 ↓ MACSW (填充 RX descriptor) ↓ queue_desc (STAILQ: 动态链表) ↓ fhost_rx_process() [从队列取 descriptor] ↓ fhost_rx_buf_forward() [路由判断] ↓ net_al_input() [创建 pbuf,零拷贝] ↓ LWIP 协议栈 ↓ 应用层 (socket_recv) 【特点】: • 多级队列管理 • 总是零拷贝 • 7层处理流程 <nowiki>============================================================</nowiki> wl80211 RX 流程(预分配池,智能拷贝): <nowiki>---------------------------------------------</nowiki> WiFi 硬件 ↓ MACSW (填充 RX descriptor) ↓ macsw_rx_q (预分配固定池) ↓ process_single_rx_desc() [直接处理] ↓ 【智能拷贝判断】 ↓ ├─ 小包 (<500B): memcpy + 立即释放 buffer → 快速池周转 └─ 大包 (≥500B): 零拷贝 + pbuf 引用 → 延迟释放 ↓ wl80211_tcpip_input() [直接送 LWIP] ↓ LWIP 协议栈 ↓ 应用层 (socket_recv) 【优势】: • 预分配池减少内存碎片 • 智能拷贝:小包快速释放,大包零拷贝 • 流程精简:减少 80%+ 处理步骤 四、资源占用对比(估算) <nowiki>================================================================</nowiki> fhost wl80211 节省 <nowiki>---------------</nowiki> ------------ --------- 任务栈空间 ~4000 字 ~300 字 节省 92% TX 队列 ~8KB ~256 字 节省 97% RX 队列 ~500 字 ~300 字 节省 40% 全局状态 ~1KB ~200 字 节省 80% 代码段 (ROM) ~100KB ~30KB 节省 70% <nowiki>------------</nowiki> ------------ --------- 总 RAM 占用 >10KB <2KB 节省 80%+ 总 ROM 占用 ~100KB ~30KB 节省 70% 五、性能优势来源(为什么 wl80211 更快?) <nowiki>================================================================</nowiki> 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 时间 → 无法处理其他任务 六、选型决策指南 <nowiki>================================================================</nowiki> 【推荐使用 wl80211 的场景】 ✓ RAM < 64KB 的 MCU (BL602, BL702) ✓ STA 模式为主的产品 (95% 时间) ✓ 高吞吐量应用 (视频流、大文件传输) ✓ 功耗敏感产品 (电池供电) ✓ 成本敏感产品 (大批量生产) ✓ 追求极致性能的产品 (即使 BL616 RAM 充足) 【仅在以下场景考虑 fhost】 ⚠ 必须使用复杂 AP+STA 并发 ⚠ 需要多 VIF 并发功能 ⚠ 需要完整 AP 功能 (多 SSID、VLAN) ⚠ 需要丰富调试功能 七、一句话总结 <nowiki>================================================================</nowiki> 网络功能:wl80211 与 fhost 完全相同(都是 LWIP) 差异重点:wl80211 通过精简的架构设计,在性能、资源、功耗 方面都显著优于通用型 fhost 方案,是 IoT 产品的首选。 <nowiki>================================================================</nowiki>
返回
WL80211
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息