<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://docs.bouffalolab.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E8%8D%A3%E5%8D%93%E7%84%B6</id>
	<title>Bouffalo Lab Docs - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.bouffalolab.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E8%8D%A3%E5%8D%93%E7%84%B6"/>
	<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/%E8%8D%A3%E5%8D%93%E7%84%B6"/>
	<updated>2026-04-14T06:26:56Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:%E6%A6%82%E7%8E%87%E8%AE%BA%E4%B8%8E%E6%95%B0%E7%90%86%E7%BB%9F%E8%AE%A1(%E6%B5%99%E5%A4%A7%E7%AC%AC%E5%9B%9B%E7%89%88).pdf&amp;diff=219</id>
		<title>文件:概率论与数理统计(浙大第四版).pdf</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:%E6%A6%82%E7%8E%87%E8%AE%BA%E4%B8%8E%E6%95%B0%E7%90%86%E7%BB%9F%E8%AE%A1(%E6%B5%99%E5%A4%A7%E7%AC%AC%E5%9B%9B%E7%89%88).pdf&amp;diff=219"/>
		<updated>2026-02-28T07:06:32Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;概率论&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=Nethub%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C&amp;diff=216</id>
		<title>Nethub用户手册</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=Nethub%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C&amp;diff=216"/>
		<updated>2026-02-28T06:20:30Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* 1. 系统架构 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于BL616C/BL618M/BL618DG/BL616CL 的 Linux 主机通信方案，提供内核模块和用户态控制工具。&lt;br /&gt;
&lt;br /&gt;
== 目录 ==&lt;br /&gt;
&lt;br /&gt;
* [[Nethub用户手册#1. 系统架构|1. 系统架构]]&lt;br /&gt;
* [[Nethub用户手册#2. 快速开始|2. 快速开始]]&lt;br /&gt;
* [[Nethub用户手册#3. 开发指南|3. 开发指南]]&lt;br /&gt;
* [[Nethub用户手册#4. 常见问题|4. 常见问题]]&lt;br /&gt;
&lt;br /&gt;
== 1. 系统架构 ==&lt;br /&gt;
[[文件:Arch_host_device.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;：当前控制通道通过 tty 传输，后续将支持通过 VirtualChannel 传输 AT 命令。&lt;br /&gt;
&lt;br /&gt;
=== 1.1 组件说明 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!组件&lt;br /&gt;
!类型&lt;br /&gt;
!说明&lt;br /&gt;
|-&lt;br /&gt;
|bflbwifictrl&lt;br /&gt;
|用户态&lt;br /&gt;
|命令行工具，通过 Unix Socket 与守护进程通信&lt;br /&gt;
|-&lt;br /&gt;
|bflbwifid&lt;br /&gt;
|用户态&lt;br /&gt;
|守护进程，负责设备通信和 WiFi 连接管理&lt;br /&gt;
|-&lt;br /&gt;
|libbflbwifi&lt;br /&gt;
|用户态&lt;br /&gt;
|静态库，提供 WiFi 控制 API&lt;br /&gt;
|-&lt;br /&gt;
|nethub_vchan_app&lt;br /&gt;
|用户态&lt;br /&gt;
|VirtualChannel 通信程序，提供私有数据通道（消息包传输，非流式）&lt;br /&gt;
|-&lt;br /&gt;
|mr_sdio.ko&lt;br /&gt;
|内核态&lt;br /&gt;
|内核驱动模块，支持 SDIO 接口&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 数据流向 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
用户命令：&lt;br /&gt;
bflbwifictrl → bflbwifid → libbflbwifi → /dev/ttyAT → 内核驱动 → 设备&lt;br /&gt;
&lt;br /&gt;
URC事件：&lt;br /&gt;
设备 → 内核驱动 → /dev/ttyAT → bflbwifid → 解析处理 → 网卡配置&lt;br /&gt;
&lt;br /&gt;
工作流程：&lt;br /&gt;
加载内核模块 → 启动守护进程 → TTY 通信建立 → 准备就绪&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. 快速开始 ==&lt;br /&gt;
[[index.php?title=文件:Nethub_sdio_quickstart_demo.gif|无框|NetHub SDIO 快速入门演示]]&lt;br /&gt;
&lt;br /&gt;
本演示展示了完整的操作流程：编译 → 加载内核模块 → 启动守护进程 → WiFi 连接 → 网络通信 → 消息收发。&lt;br /&gt;
&lt;br /&gt;
=== 2.1 编译和加载内核模块 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd nethub/&lt;br /&gt;
./build.sh build&lt;br /&gt;
sudo ./build.sh load&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2 运行 WiFi 守护进程 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 启动守护进程（默认使用 /dev/ttyAT0）&lt;br /&gt;
sudo ./output/bflbwifid -p /dev/ttyAT0&lt;br /&gt;
&lt;br /&gt;
# 或查看帮助&lt;br /&gt;
sudo ./output/bflbwifid -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.3 使用 WiFi 控制工具 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 扫描 AP&lt;br /&gt;
sudo ./output/bflbwifictrl scan&lt;br /&gt;
&lt;br /&gt;
# 连接 AP（无密码）&lt;br /&gt;
sudo ./output/bflbwifictrl connect_ap &amp;quot;SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 连接 AP（有密码）&lt;br /&gt;
sudo ./output/bflbwifictrl connect_ap &amp;quot;SSID&amp;quot; &amp;quot;password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 查看状态&lt;br /&gt;
sudo ./output/bflbwifictrl status&lt;br /&gt;
&lt;br /&gt;
# 断开连接&lt;br /&gt;
sudo ./output/bflbwifictrl disconnect&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 开发指南 ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 系统要求 ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;内核版本&#039;&#039;&#039;：Linux 3.7+（内核模块需要）&lt;br /&gt;
* &#039;&#039;&#039;架构&#039;&#039;&#039;：x86_64、ARMv7（树莓派）、ARMv8（树莓派 4/5）&lt;br /&gt;
* &#039;&#039;&#039;依赖&#039;&#039;&#039;：gcc、make、libc、pthread&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;兼容性说明&#039;&#039;&#039;：&lt;br /&gt;
&lt;br /&gt;
* ✅ 用户空间程序（bflbwifid/bflbwifictrl）：无内核版本限制&lt;br /&gt;
* ✅ 内核模块（mr_sdio.ko）：支持 Linux 3.7+&lt;br /&gt;
* ✅ 已测试：Linux raspberrypi 6.12.25+rpt-rpi-v8&lt;br /&gt;
&lt;br /&gt;
=== 3.2 命令参考 ===&lt;br /&gt;
&lt;br /&gt;
==== build.sh 命令 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!命令&lt;br /&gt;
!说明&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt;&lt;br /&gt;
|编译内核模块、virtualchan 和 bflbwifictrl&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;&lt;br /&gt;
|清理所有编译产物&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;&lt;br /&gt;
|加载内核模块 &amp;lt;code&amp;gt;mr_sdio.ko&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;unload&amp;lt;/code&amp;gt;&lt;br /&gt;
|卸载内核模块&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== bflbwifictrl 命令 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!命令&lt;br /&gt;
!说明&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;scan&amp;lt;/code&amp;gt;&lt;br /&gt;
|扫描附近 AP&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;connect_ap &amp;amp;#x3C;SSID&amp;amp;#x3E; [密码]&amp;lt;/code&amp;gt;&lt;br /&gt;
|连接到 AP&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;disconnect&amp;lt;/code&amp;gt;&lt;br /&gt;
|断开连接&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;&lt;br /&gt;
|查看连接状态&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;&lt;br /&gt;
|查看固件版本&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.3 功能特性 ===&lt;br /&gt;
&lt;br /&gt;
==== bflbwifid（守护进程） ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;TTY 通信&#039;&#039;&#039;：与 WiFi 模块通过串口通信&lt;br /&gt;
* &#039;&#039;&#039;AT 协议&#039;&#039;&#039;：解析和封装 AT 指令&lt;br /&gt;
* &#039;&#039;&#039;状态管理&#039;&#039;&#039;：维护 WiFi 连接状态&lt;br /&gt;
* &#039;&#039;&#039;Unix Socket&#039;&#039;&#039;：提供 IPC 通信接口&lt;br /&gt;
* &#039;&#039;&#039;GOTIP 自动配置&#039;&#039;&#039;（可选）：收到 IP 后自动配置 Linux 网卡&lt;br /&gt;
&lt;br /&gt;
==== bflbwifictrl（命令行工具） ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CLI 接口&#039;&#039;&#039;：通过 Unix Socket 与守护进程通信&lt;br /&gt;
* &#039;&#039;&#039;简洁易用&#039;&#039;&#039;：提供常用 WiFi 操作命令&lt;br /&gt;
* &#039;&#039;&#039;状态查询&#039;&#039;&#039;：实时显示连接信息&lt;br /&gt;
&lt;br /&gt;
==== GOTIP 自动配置功能（默认启用） ====&lt;br /&gt;
当 WiFi 模块获取 IP 后，会自动：&lt;br /&gt;
&lt;br /&gt;
# 解析 URC：&amp;lt;code&amp;gt;+CW:GOTIP,IP:xxx,gw:xxx,mask:xxx,dns:xxx&amp;lt;/code&amp;gt;&lt;br /&gt;
# 配置网卡：&amp;lt;code&amp;gt;ip addr add&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;ip route add default&amp;lt;/code&amp;gt;&lt;br /&gt;
# 配置 DNS：写入 &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意事项&#039;&#039;&#039;：&lt;br /&gt;
&lt;br /&gt;
* 部分host需要禁用 NetworkManager：&amp;lt;code&amp;gt;sudo systemctl disable --now NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
* 需要禁用 dhcpcd：&amp;lt;code&amp;gt;sudo systemctl disable --now dhcpcd&amp;lt;/code&amp;gt;&lt;br /&gt;
* 默认网卡名为 &amp;lt;code&amp;gt;mr_eth0&amp;lt;/code&amp;gt;（可在代码中修改）&lt;br /&gt;
&lt;br /&gt;
=== 3.4 代码修改与编译 ===&lt;br /&gt;
&lt;br /&gt;
==== 修改代码后重新编译 ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 只编译 bflbwifictrl&lt;br /&gt;
cd bflbwifictrl&lt;br /&gt;
make clean &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
# 或使用 build.sh 编译所有&lt;br /&gt;
cd ..&lt;br /&gt;
./build.sh build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 重新加载内核模块 ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./build.sh unload&lt;br /&gt;
sudo ./build.sh load&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 常见问题 ==&lt;br /&gt;
&lt;br /&gt;
=== 4.1 找不到串口设备 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 查看可用串口&lt;br /&gt;
ls /dev/ttyACM* /dev/ttyUSB*&lt;br /&gt;
&lt;br /&gt;
# 添加用户到 dialout 组（避免每次都用 sudo）&lt;br /&gt;
sudo usermod -aG dialout $USER&lt;br /&gt;
# 然后重新登录&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IP 配置后自动消失 ===&lt;br /&gt;
&#039;&#039;&#039;原因&#039;&#039;&#039;：NetworkManager 或 dhcpcd 覆盖了手动配置。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;解决&#039;&#039;&#039;：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 禁用 NetworkManager&lt;br /&gt;
sudo systemctl stop NetworkManager&lt;br /&gt;
sudo systemctl disable NetworkManager&lt;br /&gt;
&lt;br /&gt;
# 禁用 dhcpcd&lt;br /&gt;
sudo systemctl stop dhcpcd&lt;br /&gt;
sudo systemctl disable dhcpcd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 查看调试日志 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 查看守护进程日志&lt;br /&gt;
tail -f /var/log/bflbwifi.log&lt;br /&gt;
&lt;br /&gt;
# 查看内核日志&lt;br /&gt;
dmesg -w&lt;br /&gt;
&lt;br /&gt;
# 守护进程前台运行（查看实时输出）&lt;br /&gt;
sudo ./output/bflbwifid -p /dev/ttyAT0 --foreground&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.4 编译错误 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 确保安装必要的开发包&lt;br /&gt;
sudo apt-get install build-essential libc-dev-i386&lt;br /&gt;
&lt;br /&gt;
# 树莓派需要安装 32 位兼容库&lt;br /&gt;
sudo apt-get install libc6:i386 libstdc++6:i386&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=Nethub%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C&amp;diff=215</id>
		<title>Nethub用户手册</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=Nethub%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C&amp;diff=215"/>
		<updated>2026-02-28T06:20:13Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* 1. 系统架构 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于BL616C/BL618M/BL618DG/BL616CL 的 Linux 主机通信方案，提供内核模块和用户态控制工具。&lt;br /&gt;
&lt;br /&gt;
== 目录 ==&lt;br /&gt;
&lt;br /&gt;
* [[Nethub用户手册#1. 系统架构|1. 系统架构]]&lt;br /&gt;
* [[Nethub用户手册#2. 快速开始|2. 快速开始]]&lt;br /&gt;
* [[Nethub用户手册#3. 开发指南|3. 开发指南]]&lt;br /&gt;
* [[Nethub用户手册#4. 常见问题|4. 常见问题]]&lt;br /&gt;
&lt;br /&gt;
== 1. 系统架构 ==&lt;br /&gt;
[[文件:Arch_host_device.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;说明&#039;&#039;&#039;：当前控制通道通过 tty 传输，后续将支持通过 VirtualChannel 传输 AT 命令。&lt;br /&gt;
&lt;br /&gt;
=== 1.1 组件说明 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!组件&lt;br /&gt;
!类型&lt;br /&gt;
!说明&lt;br /&gt;
|-&lt;br /&gt;
|bflbwifictrl&lt;br /&gt;
|用户态&lt;br /&gt;
|命令行工具，通过 Unix Socket 与守护进程通信&lt;br /&gt;
|-&lt;br /&gt;
|bflbwifid&lt;br /&gt;
|用户态&lt;br /&gt;
|守护进程，负责设备通信和 WiFi 连接管理&lt;br /&gt;
|-&lt;br /&gt;
|libbflbwifi&lt;br /&gt;
|用户态&lt;br /&gt;
|静态库，提供 WiFi 控制 API&lt;br /&gt;
|-&lt;br /&gt;
|nethub_vchan_app&lt;br /&gt;
|用户态&lt;br /&gt;
|VirtualChannel 通信程序，提供私有数据通道（消息包传输，非流式）&lt;br /&gt;
|-&lt;br /&gt;
|mr_sdio.ko&lt;br /&gt;
|内核态&lt;br /&gt;
|内核驱动模块，支持 SDIO 接口&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 数据流向 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
用户命令：&lt;br /&gt;
bflbwifictrl → bflbwifid → libbflbwifi → /dev/ttyAT → 内核驱动 → 设备&lt;br /&gt;
&lt;br /&gt;
URC事件：&lt;br /&gt;
设备 → 内核驱动 → /dev/ttyAT → bflbwifid → 解析处理 → 网卡配置&lt;br /&gt;
&lt;br /&gt;
工作流程：&lt;br /&gt;
加载内核模块 → 启动守护进程 → TTY 通信建立 → 准备就绪&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. 快速开始 ==&lt;br /&gt;
[[index.php?title=文件:Nethub_sdio_quickstart_demo.gif|无框|NetHub SDIO 快速入门演示]]&lt;br /&gt;
&lt;br /&gt;
本演示展示了完整的操作流程：编译 → 加载内核模块 → 启动守护进程 → WiFi 连接 → 网络通信 → 消息收发。&lt;br /&gt;
&lt;br /&gt;
=== 2.1 编译和加载内核模块 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd nethub/&lt;br /&gt;
./build.sh build&lt;br /&gt;
sudo ./build.sh load&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2 运行 WiFi 守护进程 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 启动守护进程（默认使用 /dev/ttyAT0）&lt;br /&gt;
sudo ./output/bflbwifid -p /dev/ttyAT0&lt;br /&gt;
&lt;br /&gt;
# 或查看帮助&lt;br /&gt;
sudo ./output/bflbwifid -h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.3 使用 WiFi 控制工具 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 扫描 AP&lt;br /&gt;
sudo ./output/bflbwifictrl scan&lt;br /&gt;
&lt;br /&gt;
# 连接 AP（无密码）&lt;br /&gt;
sudo ./output/bflbwifictrl connect_ap &amp;quot;SSID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 连接 AP（有密码）&lt;br /&gt;
sudo ./output/bflbwifictrl connect_ap &amp;quot;SSID&amp;quot; &amp;quot;password&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 查看状态&lt;br /&gt;
sudo ./output/bflbwifictrl status&lt;br /&gt;
&lt;br /&gt;
# 断开连接&lt;br /&gt;
sudo ./output/bflbwifictrl disconnect&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 开发指南 ==&lt;br /&gt;
&lt;br /&gt;
=== 3.1 系统要求 ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;内核版本&#039;&#039;&#039;：Linux 3.7+（内核模块需要）&lt;br /&gt;
* &#039;&#039;&#039;架构&#039;&#039;&#039;：x86_64、ARMv7（树莓派）、ARMv8（树莓派 4/5）&lt;br /&gt;
* &#039;&#039;&#039;依赖&#039;&#039;&#039;：gcc、make、libc、pthread&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;兼容性说明&#039;&#039;&#039;：&lt;br /&gt;
&lt;br /&gt;
* ✅ 用户空间程序（bflbwifid/bflbwifictrl）：无内核版本限制&lt;br /&gt;
* ✅ 内核模块（mr_sdio.ko）：支持 Linux 3.7+&lt;br /&gt;
* ✅ 已测试：Linux raspberrypi 6.12.25+rpt-rpi-v8&lt;br /&gt;
&lt;br /&gt;
=== 3.2 命令参考 ===&lt;br /&gt;
&lt;br /&gt;
==== build.sh 命令 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!命令&lt;br /&gt;
!说明&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt;&lt;br /&gt;
|编译内核模块、virtualchan 和 bflbwifictrl&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;&lt;br /&gt;
|清理所有编译产物&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;load&amp;lt;/code&amp;gt;&lt;br /&gt;
|加载内核模块 &amp;lt;code&amp;gt;mr_sdio.ko&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;unload&amp;lt;/code&amp;gt;&lt;br /&gt;
|卸载内核模块&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== bflbwifictrl 命令 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!命令&lt;br /&gt;
!说明&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;scan&amp;lt;/code&amp;gt;&lt;br /&gt;
|扫描附近 AP&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;connect_ap &amp;amp;#x3C;SSID&amp;amp;#x3E; [密码]&amp;lt;/code&amp;gt;&lt;br /&gt;
|连接到 AP&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;disconnect&amp;lt;/code&amp;gt;&lt;br /&gt;
|断开连接&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;&lt;br /&gt;
|查看连接状态&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt;&lt;br /&gt;
|查看固件版本&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.3 功能特性 ===&lt;br /&gt;
&lt;br /&gt;
==== bflbwifid（守护进程） ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;TTY 通信&#039;&#039;&#039;：与 WiFi 模块通过串口通信&lt;br /&gt;
* &#039;&#039;&#039;AT 协议&#039;&#039;&#039;：解析和封装 AT 指令&lt;br /&gt;
* &#039;&#039;&#039;状态管理&#039;&#039;&#039;：维护 WiFi 连接状态&lt;br /&gt;
* &#039;&#039;&#039;Unix Socket&#039;&#039;&#039;：提供 IPC 通信接口&lt;br /&gt;
* &#039;&#039;&#039;GOTIP 自动配置&#039;&#039;&#039;（可选）：收到 IP 后自动配置 Linux 网卡&lt;br /&gt;
&lt;br /&gt;
==== bflbwifictrl（命令行工具） ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;CLI 接口&#039;&#039;&#039;：通过 Unix Socket 与守护进程通信&lt;br /&gt;
* &#039;&#039;&#039;简洁易用&#039;&#039;&#039;：提供常用 WiFi 操作命令&lt;br /&gt;
* &#039;&#039;&#039;状态查询&#039;&#039;&#039;：实时显示连接信息&lt;br /&gt;
&lt;br /&gt;
==== GOTIP 自动配置功能（默认启用） ====&lt;br /&gt;
当 WiFi 模块获取 IP 后，会自动：&lt;br /&gt;
&lt;br /&gt;
# 解析 URC：&amp;lt;code&amp;gt;+CW:GOTIP,IP:xxx,gw:xxx,mask:xxx,dns:xxx&amp;lt;/code&amp;gt;&lt;br /&gt;
# 配置网卡：&amp;lt;code&amp;gt;ip addr add&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;ip route add default&amp;lt;/code&amp;gt;&lt;br /&gt;
# 配置 DNS：写入 &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;注意事项&#039;&#039;&#039;：&lt;br /&gt;
&lt;br /&gt;
* 部分host需要禁用 NetworkManager：&amp;lt;code&amp;gt;sudo systemctl disable --now NetworkManager&amp;lt;/code&amp;gt;&lt;br /&gt;
* 需要禁用 dhcpcd：&amp;lt;code&amp;gt;sudo systemctl disable --now dhcpcd&amp;lt;/code&amp;gt;&lt;br /&gt;
* 默认网卡名为 &amp;lt;code&amp;gt;mr_eth0&amp;lt;/code&amp;gt;（可在代码中修改）&lt;br /&gt;
&lt;br /&gt;
=== 3.4 代码修改与编译 ===&lt;br /&gt;
&lt;br /&gt;
==== 修改代码后重新编译 ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 只编译 bflbwifictrl&lt;br /&gt;
cd bflbwifictrl&lt;br /&gt;
make clean &amp;amp;&amp;amp; make&lt;br /&gt;
&lt;br /&gt;
# 或使用 build.sh 编译所有&lt;br /&gt;
cd ..&lt;br /&gt;
./build.sh build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 重新加载内核模块 ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./build.sh unload&lt;br /&gt;
sudo ./build.sh load&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 常见问题 ==&lt;br /&gt;
&lt;br /&gt;
=== 4.1 找不到串口设备 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 查看可用串口&lt;br /&gt;
ls /dev/ttyACM* /dev/ttyUSB*&lt;br /&gt;
&lt;br /&gt;
# 添加用户到 dialout 组（避免每次都用 sudo）&lt;br /&gt;
sudo usermod -aG dialout $USER&lt;br /&gt;
# 然后重新登录&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IP 配置后自动消失 ===&lt;br /&gt;
&#039;&#039;&#039;原因&#039;&#039;&#039;：NetworkManager 或 dhcpcd 覆盖了手动配置。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;解决&#039;&#039;&#039;：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 禁用 NetworkManager&lt;br /&gt;
sudo systemctl stop NetworkManager&lt;br /&gt;
sudo systemctl disable NetworkManager&lt;br /&gt;
&lt;br /&gt;
# 禁用 dhcpcd&lt;br /&gt;
sudo systemctl stop dhcpcd&lt;br /&gt;
sudo systemctl disable dhcpcd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 查看调试日志 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 查看守护进程日志&lt;br /&gt;
tail -f /var/log/bflbwifi.log&lt;br /&gt;
&lt;br /&gt;
# 查看内核日志&lt;br /&gt;
dmesg -w&lt;br /&gt;
&lt;br /&gt;
# 守护进程前台运行（查看实时输出）&lt;br /&gt;
sudo ./output/bflbwifid -p /dev/ttyAT0 --foreground&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.4 编译错误 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 确保安装必要的开发包&lt;br /&gt;
sudo apt-get install build-essential libc-dev-i386&lt;br /&gt;
&lt;br /&gt;
# 树莓派需要安装 32 位兼容库&lt;br /&gt;
sudo apt-get install libc6:i386 libstdc++6:i386&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=WL80211&amp;diff=207</id>
		<title>WL80211</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=WL80211&amp;diff=207"/>
		<updated>2026-02-24T09:27:53Z</updated>

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

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

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

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

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

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

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

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

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

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

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“=== 一、整体架构对比                                                                                                                                                                                                              === &amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;  fhost 方案：              wl802…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== 一、整体架构对比                                                                                                                                                                                                              ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fhost 方案：              wl80211 方案：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;        -----------------&lt;br /&gt;
&lt;br /&gt;
通用型完整架构          IoT 性能优化架构&lt;br /&gt;
&lt;br /&gt;
功能最大化              性能最优&lt;br /&gt;
&lt;br /&gt;
资源占用高 (~10KB)      资源占用低 (~2KB)&lt;br /&gt;
&lt;br /&gt;
4个长期任务              0个长驻任务（事件驱动）&lt;br /&gt;
&lt;br /&gt;
代码 100KB+              代码 30KB&lt;br /&gt;
&lt;br /&gt;
=== 二、TX 数据流对比（发送一个网络包） ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
【场景】：应用发送一个数据包到 WiFi 网络&lt;br /&gt;
&lt;br /&gt;
fhost TX 流程（多层级，复杂）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;---------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
应用层 (socket_send)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
LWIP (tcp_output)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_tx_start()                     [第1层]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_tx_req()                       [第2层]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_tx_queue_push()                 [第3层: 入队67个队列]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_wakeup()                      [任务切换开销 ~500周期]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_tx_process()                    [第4层: 任务处理]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_tx_buffer_get()                 [第5层]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
macif_tx_evt()                      [第6层]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
MACSW&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
WiFi 硬件&lt;br /&gt;
&lt;br /&gt;
【性能瓶颈】：&lt;br /&gt;
&lt;br /&gt;
• 8+层函数调用 → 多次 Flash 访问 → Cache Miss 多&lt;br /&gt;
&lt;br /&gt;
• 4个任务竞争 → 多次锁等待&lt;br /&gt;
&lt;br /&gt;
• 2次互斥锁 → 阻塞开销&lt;br /&gt;
&lt;br /&gt;
• 1次任务切换 → 调度开销&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wl80211 TX 流程（精简高效）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;---------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
应用层 (socket_send)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
LWIP (tcp_output)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
wl80211_output()                  [第1层: 直接处理]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
wl80211_mac_tx()                [第2层: 直接处理]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
STAILQ_INSERT_TAIL()             [第3层: 直接入队8个TID队列]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
macif_tx_data_ind()              [第4层: 直接通知]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
MACSW&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
WiFi 硬件&lt;br /&gt;
&lt;br /&gt;
【性能优势】：&lt;br /&gt;
&lt;br /&gt;
• 仅2-3层函数调用 → 少量 Flash 访问 → Cache Miss 少&lt;br /&gt;
&lt;br /&gt;
• 无任务竞争 → 无锁等待&lt;br /&gt;
&lt;br /&gt;
• 无互斥锁 → 无阻塞开销&lt;br /&gt;
&lt;br /&gt;
• 无任务切换 → 零调度开销&lt;br /&gt;
&lt;br /&gt;
【性能提升】：20-40%（取决于流量模式）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
三、RX 数据流对比（接收一个网络包）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
【场景】：从 WiFi 接收数据包到应用&lt;br /&gt;
&lt;br /&gt;
fhost RX 流程（多级队列管理）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;---------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WiFi 硬件&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
MACSW (填充 RX descriptor)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
queue_desc (STAILQ: 动态链表)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_rx_process() [从队列取 descriptor]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
fhost_rx_buf_forward() [路由判断]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
net_al_input() [创建 pbuf，零拷贝]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
LWIP 协议栈&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
应用层 (socket_recv)&lt;br /&gt;
&lt;br /&gt;
【特点】：&lt;br /&gt;
&lt;br /&gt;
• 多级队列管理&lt;br /&gt;
&lt;br /&gt;
• 总是零拷贝&lt;br /&gt;
&lt;br /&gt;
• 7层处理流程&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;============================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wl80211 RX 流程（预分配池，智能拷贝）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;---------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WiFi 硬件&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
MACSW (填充 RX descriptor)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
macsw_rx_q (预分配固定池)&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
process_single_rx_desc() [直接处理]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
【智能拷贝判断】&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
    ├─ 小包 (&amp;lt;500B): memcpy + 立即释放 buffer → 快速池周转&lt;br /&gt;
&lt;br /&gt;
    └─ 大包 (≥500B): 零拷贝 + pbuf 引用 → 延迟释放&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
wl80211_tcpip_input() [直接送 LWIP]&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
LWIP 协议栈&lt;br /&gt;
&lt;br /&gt;
    ↓&lt;br /&gt;
&lt;br /&gt;
应用层 (socket_recv)&lt;br /&gt;
&lt;br /&gt;
【优势】：&lt;br /&gt;
&lt;br /&gt;
• 预分配池减少内存碎片&lt;br /&gt;
&lt;br /&gt;
• 智能拷贝：小包快速释放，大包零拷贝&lt;br /&gt;
&lt;br /&gt;
• 流程精简：减少 80%+ 处理步骤&lt;br /&gt;
&lt;br /&gt;
四、资源占用对比（估算）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                fhost          wl80211        节省&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;---------------&amp;lt;/nowiki&amp;gt;    ------------    ---------&lt;br /&gt;
&lt;br /&gt;
任务栈空间      ~4000 字       ~300 字      节省 92%&lt;br /&gt;
&lt;br /&gt;
TX 队列         ~8KB          ~256 字      节省 97%&lt;br /&gt;
&lt;br /&gt;
RX 队列         ~500 字        ~300 字      节省 40%&lt;br /&gt;
&lt;br /&gt;
全局状态         ~1KB          ~200 字      节省 80%&lt;br /&gt;
&lt;br /&gt;
代码段 (ROM)    ~100KB         ~30KB       节省 70%&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;------------&amp;lt;/nowiki&amp;gt;    ------------    ---------&lt;br /&gt;
&lt;br /&gt;
总 RAM 占用      &amp;gt;10KB         &amp;lt;2KB        节省 80%+&lt;br /&gt;
&lt;br /&gt;
总 ROM 占用      ~100KB         ~30KB       节省 70%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
五、性能优势来源（为什么 wl80211 更快？）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IoT 设备硬件约束：&lt;br /&gt;
&lt;br /&gt;
• 使用 4线 SPI Flash（非并行）&lt;br /&gt;
&lt;br /&gt;
• Cache Miss 时从 Flash 读取需要 100-150 CPU 周期&lt;br /&gt;
&lt;br /&gt;
• Cache 命中只需 1-3 CPU 周期&lt;br /&gt;
&lt;br /&gt;
• 差距：Cache Miss 比命中慢 50-150 倍！&lt;br /&gt;
&lt;br /&gt;
wl80211 性能优势：&lt;br /&gt;
&lt;br /&gt;
• 代码精简 (30KB vs 100KB) → 更容易完全放入 Cache&lt;br /&gt;
&lt;br /&gt;
• 流程精简 (2-3层 vs 7-9层) → 减少 60-75% Cache Miss&lt;br /&gt;
&lt;br /&gt;
• 无锁无任务切换 → 消除 500+ 周期阻塞&lt;br /&gt;
&lt;br /&gt;
实际影响（10 Mbps 吞吐）：&lt;br /&gt;
&lt;br /&gt;
• wl80211: 节省 3% CPU 时间 → 可用于应用层&lt;br /&gt;
&lt;br /&gt;
• fhost:     浪费 3% CPU 时间 → 无法处理其他任务&lt;br /&gt;
&lt;br /&gt;
六、选型决策指南&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
【推荐使用 wl80211 的场景】&lt;br /&gt;
&lt;br /&gt;
✓ RAM &amp;lt; 64KB 的 MCU (BL602, BL702)&lt;br /&gt;
&lt;br /&gt;
✓ STA 模式为主的产品 (95% 时间)&lt;br /&gt;
&lt;br /&gt;
✓ 高吞吐量应用 (视频流、大文件传输)&lt;br /&gt;
&lt;br /&gt;
✓ 功耗敏感产品 (电池供电)&lt;br /&gt;
&lt;br /&gt;
✓ 成本敏感产品 (大批量生产)&lt;br /&gt;
&lt;br /&gt;
✓ 追求极致性能的产品 (即使 BL616 RAM 充足)&lt;br /&gt;
&lt;br /&gt;
【仅在以下场景考虑 fhost】&lt;br /&gt;
&lt;br /&gt;
⚠ 必须使用复杂 AP+STA 并发&lt;br /&gt;
&lt;br /&gt;
⚠ 需要多 VIF 并发功能&lt;br /&gt;
&lt;br /&gt;
⚠ 需要完整 AP 功能 (多 SSID、VLAN)&lt;br /&gt;
&lt;br /&gt;
⚠ 需要丰富调试功能&lt;br /&gt;
&lt;br /&gt;
七、一句话总结&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
网络功能：wl80211 与 fhost 完全相同（都是 LWIP）&lt;br /&gt;
&lt;br /&gt;
差异重点：wl80211 通过精简的架构设计，在性能、资源、功耗&lt;br /&gt;
&lt;br /&gt;
         方面都显著优于通用型 fhost 方案，是 IoT 产品的首选。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;================================================================&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E8%B0%83%E6%95%B4%E6%97%A0%E7%BA%BF%E5%8F%91%E5%B0%84%E5%8A%9F%E7%8E%87&amp;diff=163</id>
		<title>调整无线发射功率</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E8%B0%83%E6%95%B4%E6%97%A0%E7%BA%BF%E5%8F%91%E5%B0%84%E5%8A%9F%E7%8E%87&amp;diff=163"/>
		<updated>2025-11-12T07:31:09Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本文介绍了在博流芯片+SDK上如何调整无线部分的发射功率和capcode，功率配置不区分AP还是Station模式，它只和硬件RF信号有关系，和上层软件工作模式无关。&lt;br /&gt;
&lt;br /&gt;
发射功率配置在 sdk 根目录的 &amp;lt;code&amp;gt;bsp/board/&#039;&#039;CHIP&#039;&#039;dk/config&amp;lt;/code&amp;gt;目录下的后缀为&amp;lt;code&amp;gt;.dts&amp;lt;/code&amp;gt;文件，一般叫做&amp;lt;code&amp;gt;bl_factory_params_IoTKitA_auto.dts&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
[[文件:616l dts file.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
使用文件编辑器打开该文件，找到 brd_rf 配置：&lt;br /&gt;
&lt;br /&gt;
[[文件:Bl616l brd rf conf.png|无框|800x800像素]]&lt;br /&gt;
&lt;br /&gt;
功率配置调整完毕之后，保存文件，重新烧录即可生效。&lt;br /&gt;
&lt;br /&gt;
开发板上电之后，查看 &amp;lt;code&amp;gt;[rfparam]&amp;lt;/code&amp;gt; 开头的日志打印确认功率调整是否生效。&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;dynamic memory init success, ocram heap size = 268 Kbyte&lt;br /&gt;
&lt;br /&gt;
  ____               __  __      _       _       _&lt;br /&gt;
 |  _ \             / _|/ _|    | |     | |     | |&lt;br /&gt;
 | |_) | ___  _   _| |_| |_ __ _| | ___ | | __ _| |__&lt;br /&gt;
 |  _ &amp;lt; / _ \| | | |  _|  _/ _` | |/ _ \| |/ _` | &#039;_ \&lt;br /&gt;
 | |_) | (_) | |_| | | | || (_| | | (_) | | (_| | |_) |&lt;br /&gt;
 |____/ \___/ \__,_|_| |_| \__,_|_|\___/|_|\__,_|_.__/&lt;br /&gt;
&lt;br /&gt;
Build:10:18:30, Nov 11 2025&lt;br /&gt;
Copyright (c) 2022 Bouffalolab team&lt;br /&gt;
Version of used components:&lt;br /&gt;
        Version: component_version_macsw_1.7.10&lt;br /&gt;
        Version: 2025-05-09 a0dd790&lt;br /&gt;
        Version: component_version_fhost_1.7.10&lt;br /&gt;
        Version: component_version_lhal: lhal-v1.1.0-371-g33f2ebfa&lt;br /&gt;
        Version: component_version_sdk: 2.0.0&lt;br /&gt;
        Version: component_version_boot2: 8.1.8&lt;br /&gt;
======== chip info ========&lt;br /&gt;
package          QFN40&lt;br /&gt;
flash_info       4MB&lt;br /&gt;
psram_info       NO&lt;br /&gt;
version          A0&lt;br /&gt;
======== flash cfg ========&lt;br /&gt;
flash clock      80MHz&lt;br /&gt;
flash delay      110,135,3&lt;br /&gt;
flash size       0x00400000&lt;br /&gt;
jedec id         0x1660C8&lt;br /&gt;
mid              0xC8&lt;br /&gt;
iomode           0x04&lt;br /&gt;
clk delay        0x01&lt;br /&gt;
clk invert       0x03&lt;br /&gt;
read reg cmd0    0x05&lt;br /&gt;
read reg cmd1    0x35&lt;br /&gt;
write reg cmd0   0x01&lt;br /&gt;
write reg cmd1   0x01&lt;br /&gt;
qe write len     0x02&lt;br /&gt;
cread support    0x01&lt;br /&gt;
cread code       0x20&lt;br /&gt;
burst wrap cmd   0x77&lt;br /&gt;
===========================&lt;br /&gt;
uart  sig1:ffffffff, sig2:0000f32f&lt;br /&gt;
clock gen1:9ffffffd, gen2:0fff0c11&lt;br /&gt;
xtal:40000000Hz(crystal)&lt;br /&gt;
board init done&lt;br /&gt;
===========================&lt;br /&gt;
bouffalolab /&amp;gt;[I][rfparam] xtal value 40000000&lt;br /&gt;
[I][rfparam] dcdc_trim empty&lt;br /&gt;
[I][rfparam] dcdc_trim use default value 0x80&lt;br /&gt;
[I][rfparam] icx empty&lt;br /&gt;
[I][rfparam] icx use default value 0x80&lt;br /&gt;
[I][rfparam] iptat empty&lt;br /&gt;
[I][rfparam] iptat use default value 0x80&lt;br /&gt;
[I][rfparam] tmp_mp use default value 35&lt;br /&gt;
[I][rfparam] RF_PARAM TLV ADDRESS: 0xA0000400&lt;br /&gt;
[I][rfparam] pwr_mode is bf&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse wlan pwr_offset[14]: 2,2,2,1,1,0,-1,0,0,1,1,2,2,3,&lt;br /&gt;
[I][rfparam] tlv wlan pwr_offset[14]: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,&lt;br /&gt;
[I][rfparam] wlan pwr_offset[14]: 2,2,2,1,1,0,-1,0,0,1,1,2,2,3,&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse wlan lp pwr_offset[14]: 0,0,0,0,0,0,0,1,2,3,4,5,6,8,&lt;br /&gt;
[I][rfparam] tlv wlan lp pwr_offset[14]: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,&lt;br /&gt;
[I][rfparam] wlan lp pwr_offset[14]: 0,0,0,0,0,0,0,1,2,3,4,5,6,8,&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse bz pwr_offset[5]: -2,-4,-4,-1,-1,&lt;br /&gt;
[I][rfparam] tlv bz pwr_offset[5]: 0,0,0,0,0,&lt;br /&gt;
[I][rfparam] bz pwr_offset[5]: -2,-4,-4,-1,-1,&lt;br /&gt;
[I][rfparam] pwr_11b[4]: 20,20,20,20,&lt;br /&gt;
[I][rfparam] pwr_11g[8]: 18,18,18,18,18,18,16,16,&lt;br /&gt;
[I][rfparam] pwr_11n_ht20[8]: 18,18,18,18,18,16,15,15,&lt;br /&gt;
[I][rfparam] pwr_11n_ht40[8]: 18,18,18,18,18,16,15,14,&lt;br /&gt;
[I][rfparam] pwr_11ac_vht20[10]: 18,18,18,18,18,16,15,15,15,14,&lt;br /&gt;
[I][rfparam] pwr_11ac_vht40[10]: 18,18,18,18,18,16,15,14,14,13,&lt;br /&gt;
[I][rfparam] pwr_11ax_he20[12]: 18,18,18,18,18,16,15,15,15,14,13,13,&lt;br /&gt;
[I][rfparam] pwr_11ax_he40[12]: 18,18,18,18,18,16,15,14,14,13,12,12,&lt;br /&gt;
[I][rfparam] capcode mode is MF&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse capcode_in 32,capcode_out 32&lt;br /&gt;
[I][rfparam] capcode_in 32,capcode_out 32&lt;br /&gt;
[I][rfparam] tcal.en_tcal = 0&lt;br /&gt;
[I][rfparam] tcal.linear_or_follow = 1&lt;br /&gt;
[I][rfparam] tcal.Tchannels[5]: 2412,2427,2442,2457,2472,&lt;br /&gt;
[I][rfparam] tcal.Tchannel_os[5]: 180,168,163,160,157,&lt;br /&gt;
[I][rfparam] tcal.Tchannel_os_low[5]: 199,186,170,165,160,&lt;br /&gt;
[I][rfparam] tcal.Troom_os = -1&lt;br /&gt;
[I][rfparam] pwr_ble = 13&lt;br /&gt;
[I][rfparam] pwr_bt[3]: 10,8,8,&lt;br /&gt;
[I][rfparam] pwr_zigbee = 13&lt;br /&gt;
[I][rfparam] country_code = 86&lt;br /&gt;
[I][rfparam] en_tcap = 0&lt;br /&gt;
[I][rfparam] tcap_tsen[10]: -3,-4,20,39,39,40,41,42,43,44,&lt;br /&gt;
[I][rfparam] tcap_cap[11]: 28,29,30,31,32,33,34,35,36,37,38,&lt;br /&gt;
[I][MAIN] PHY RF init success!&lt;br /&gt;
[I][MAIN] Starting wifi ...&lt;br /&gt;
macsw features:&lt;br /&gt;
macsw mode: normal&lt;br /&gt;
macsw platform dma: enable&lt;br /&gt;
[I][MAIN] Starting fhost ...&lt;br /&gt;
SIGTERM is NOT supported yet!&lt;br /&gt;
SIGHUP is NOT supported yet!&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E8%B0%83%E6%95%B4%E6%97%A0%E7%BA%BF%E5%8F%91%E5%B0%84%E5%8A%9F%E7%8E%87&amp;diff=162</id>
		<title>调整无线发射功率</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E8%B0%83%E6%95%B4%E6%97%A0%E7%BA%BF%E5%8F%91%E5%B0%84%E5%8A%9F%E7%8E%87&amp;diff=162"/>
		<updated>2025-11-12T07:27:25Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本文介绍了在博流芯片+SDK上如何调整无线部分的发射功率和capcode&lt;br /&gt;
&lt;br /&gt;
发射功率配置在 sdk 根目录的 &amp;lt;code&amp;gt;bsp/board/&#039;&#039;CHIP&#039;&#039;dk/config&amp;lt;/code&amp;gt;目录下的后缀为&amp;lt;code&amp;gt;.dts&amp;lt;/code&amp;gt;文件，一般叫做&amp;lt;code&amp;gt;bl_factory_params_IoTKitA_auto.dts&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
[[文件:616l dts file.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
使用文件编辑器打开该文件，找到 brd_rf 配置：&lt;br /&gt;
&lt;br /&gt;
[[文件:Bl616l brd rf conf.png|无框|800x800像素]]&lt;br /&gt;
&lt;br /&gt;
功率配置调整完毕之后，保存文件，重新烧录即可生效。&lt;br /&gt;
&lt;br /&gt;
开发板上电之后，查看 &amp;lt;code&amp;gt;[rfparam]&amp;lt;/code&amp;gt; 开头的日志打印确认功率调整是否生效。&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;dynamic memory init success, ocram heap size = 268 Kbyte&lt;br /&gt;
&lt;br /&gt;
  ____               __  __      _       _       _&lt;br /&gt;
 |  _ \             / _|/ _|    | |     | |     | |&lt;br /&gt;
 | |_) | ___  _   _| |_| |_ __ _| | ___ | | __ _| |__&lt;br /&gt;
 |  _ &amp;lt; / _ \| | | |  _|  _/ _` | |/ _ \| |/ _` | &#039;_ \&lt;br /&gt;
 | |_) | (_) | |_| | | | || (_| | | (_) | | (_| | |_) |&lt;br /&gt;
 |____/ \___/ \__,_|_| |_| \__,_|_|\___/|_|\__,_|_.__/&lt;br /&gt;
&lt;br /&gt;
Build:10:18:30, Nov 11 2025&lt;br /&gt;
Copyright (c) 2022 Bouffalolab team&lt;br /&gt;
Version of used components:&lt;br /&gt;
        Version: component_version_macsw_1.7.10&lt;br /&gt;
        Version: 2025-05-09 a0dd790&lt;br /&gt;
        Version: component_version_fhost_1.7.10&lt;br /&gt;
        Version: component_version_lhal: lhal-v1.1.0-371-g33f2ebfa&lt;br /&gt;
        Version: component_version_sdk: 2.0.0&lt;br /&gt;
        Version: component_version_boot2: 8.1.8&lt;br /&gt;
======== chip info ========&lt;br /&gt;
package          QFN40&lt;br /&gt;
flash_info       4MB&lt;br /&gt;
psram_info       NO&lt;br /&gt;
version          A0&lt;br /&gt;
======== flash cfg ========&lt;br /&gt;
flash clock      80MHz&lt;br /&gt;
flash delay      110,135,3&lt;br /&gt;
flash size       0x00400000&lt;br /&gt;
jedec id         0x1660C8&lt;br /&gt;
mid              0xC8&lt;br /&gt;
iomode           0x04&lt;br /&gt;
clk delay        0x01&lt;br /&gt;
clk invert       0x03&lt;br /&gt;
read reg cmd0    0x05&lt;br /&gt;
read reg cmd1    0x35&lt;br /&gt;
write reg cmd0   0x01&lt;br /&gt;
write reg cmd1   0x01&lt;br /&gt;
qe write len     0x02&lt;br /&gt;
cread support    0x01&lt;br /&gt;
cread code       0x20&lt;br /&gt;
burst wrap cmd   0x77&lt;br /&gt;
===========================&lt;br /&gt;
uart  sig1:ffffffff, sig2:0000f32f&lt;br /&gt;
clock gen1:9ffffffd, gen2:0fff0c11&lt;br /&gt;
xtal:40000000Hz(crystal)&lt;br /&gt;
board init done&lt;br /&gt;
===========================&lt;br /&gt;
bouffalolab /&amp;gt;[I][rfparam] xtal value 40000000&lt;br /&gt;
[I][rfparam] dcdc_trim empty&lt;br /&gt;
[I][rfparam] dcdc_trim use default value 0x80&lt;br /&gt;
[I][rfparam] icx empty&lt;br /&gt;
[I][rfparam] icx use default value 0x80&lt;br /&gt;
[I][rfparam] iptat empty&lt;br /&gt;
[I][rfparam] iptat use default value 0x80&lt;br /&gt;
[I][rfparam] tmp_mp use default value 35&lt;br /&gt;
[I][rfparam] RF_PARAM TLV ADDRESS: 0xA0000400&lt;br /&gt;
[I][rfparam] pwr_mode is bf&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse wlan pwr_offset[14]: 2,2,2,1,1,0,-1,0,0,1,1,2,2,3,&lt;br /&gt;
[I][rfparam] tlv wlan pwr_offset[14]: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,&lt;br /&gt;
[I][rfparam] wlan pwr_offset[14]: 2,2,2,1,1,0,-1,0,0,1,1,2,2,3,&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse wlan lp pwr_offset[14]: 0,0,0,0,0,0,0,1,2,3,4,5,6,8,&lt;br /&gt;
[I][rfparam] tlv wlan lp pwr_offset[14]: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,&lt;br /&gt;
[I][rfparam] wlan lp pwr_offset[14]: 0,0,0,0,0,0,0,1,2,3,4,5,6,8,&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse bz pwr_offset[5]: -2,-4,-4,-1,-1,&lt;br /&gt;
[I][rfparam] tlv bz pwr_offset[5]: 0,0,0,0,0,&lt;br /&gt;
[I][rfparam] bz pwr_offset[5]: -2,-4,-4,-1,-1,&lt;br /&gt;
[I][rfparam] pwr_11b[4]: 20,20,20,20,&lt;br /&gt;
[I][rfparam] pwr_11g[8]: 18,18,18,18,18,18,16,16,&lt;br /&gt;
[I][rfparam] pwr_11n_ht20[8]: 18,18,18,18,18,16,15,15,&lt;br /&gt;
[I][rfparam] pwr_11n_ht40[8]: 18,18,18,18,18,16,15,14,&lt;br /&gt;
[I][rfparam] pwr_11ac_vht20[10]: 18,18,18,18,18,16,15,15,15,14,&lt;br /&gt;
[I][rfparam] pwr_11ac_vht40[10]: 18,18,18,18,18,16,15,14,14,13,&lt;br /&gt;
[I][rfparam] pwr_11ax_he20[12]: 18,18,18,18,18,16,15,15,15,14,13,13,&lt;br /&gt;
[I][rfparam] pwr_11ax_he40[12]: 18,18,18,18,18,16,15,14,14,13,12,12,&lt;br /&gt;
[I][rfparam] capcode mode is MF&lt;br /&gt;
Empty slot:1&lt;br /&gt;
[I][rfparam] efuse capcode_in 32,capcode_out 32&lt;br /&gt;
[I][rfparam] capcode_in 32,capcode_out 32&lt;br /&gt;
[I][rfparam] tcal.en_tcal = 0&lt;br /&gt;
[I][rfparam] tcal.linear_or_follow = 1&lt;br /&gt;
[I][rfparam] tcal.Tchannels[5]: 2412,2427,2442,2457,2472,&lt;br /&gt;
[I][rfparam] tcal.Tchannel_os[5]: 180,168,163,160,157,&lt;br /&gt;
[I][rfparam] tcal.Tchannel_os_low[5]: 199,186,170,165,160,&lt;br /&gt;
[I][rfparam] tcal.Troom_os = -1&lt;br /&gt;
[I][rfparam] pwr_ble = 13&lt;br /&gt;
[I][rfparam] pwr_bt[3]: 10,8,8,&lt;br /&gt;
[I][rfparam] pwr_zigbee = 13&lt;br /&gt;
[I][rfparam] country_code = 86&lt;br /&gt;
[I][rfparam] en_tcap = 0&lt;br /&gt;
[I][rfparam] tcap_tsen[10]: -3,-4,20,39,39,40,41,42,43,44,&lt;br /&gt;
[I][rfparam] tcap_cap[11]: 28,29,30,31,32,33,34,35,36,37,38,&lt;br /&gt;
[I][MAIN] PHY RF init success!&lt;br /&gt;
[I][MAIN] Starting wifi ...&lt;br /&gt;
macsw features:&lt;br /&gt;
macsw mode: normal&lt;br /&gt;
macsw platform dma: enable&lt;br /&gt;
[I][MAIN] Starting fhost ...&lt;br /&gt;
SIGTERM is NOT supported yet!&lt;br /&gt;
SIGHUP is NOT supported yet!&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Bl616l_brd_rf_conf.png&amp;diff=161</id>
		<title>文件:Bl616l brd rf conf.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Bl616l_brd_rf_conf.png&amp;diff=161"/>
		<updated>2025-11-12T07:22:12Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BL616L DTS 功率配置&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:616l_dts_file.png&amp;diff=160</id>
		<title>文件:616l dts file.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:616l_dts_file.png&amp;diff=160"/>
		<updated>2025-11-12T07:18:47Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BL616L dts文件&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=159</id>
		<title>使用iperf打流</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=159"/>
		<updated>2025-11-06T07:37:02Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* iperf打流 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;当需要测试无线的极限吞吐的时候，一般会用到 iperf 工具进行打流。&lt;br /&gt;
&lt;br /&gt;
本文介绍如何使用bouffalo sdk实现iperf打流。&lt;br /&gt;
&lt;br /&gt;
注意如果想获得最佳的性能，需要在屏蔽环境执行打流操作，并确保屏蔽环境中没有其他路由器和设备干扰打流过程。&lt;br /&gt;
&lt;br /&gt;
== 编译打流固件 ==&lt;br /&gt;
在Bouffalo SDK上使用 &amp;lt;code&amp;gt;examples/wifi/sta/wifi_tcp&amp;lt;/code&amp;gt; 这个app，并确保 &amp;lt;code&amp;gt;CONFIG_WIFI_IPERF&amp;lt;/code&amp;gt; 配置项使能。&lt;br /&gt;
&lt;br /&gt;
以BL616为例，在Bouffalo SDK的根目录下执行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make -C examples/wifi/sta/wifi_tcp  CHIP=bl616 BOARD=bl616dk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
执行成功后，确保固件已经正常产生：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp build.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
然后执行烧录：&amp;lt;code&amp;gt;sudo make -C examples/wifi/sta/wifi_tcp CHIP=bl616 BOARD=bl616dk flash COMX=/dev/ttyUSB1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意需要使用root权限，因为要操作串口设备，并确保COMX参数指向正确的烧录串口。&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp flash.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
此时打开/dev/ttyUSB1串口，波特率2000000，8n1，即可看到有日志输出：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp startup log.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
== iperf打流 ==&lt;br /&gt;
在设备端执行 &amp;lt;code&amp;gt;wifi_sta_connect &#039;&#039;your_wifi_ssid&#039;&#039; &#039;&#039;your_wifi_pwd&#039;&#039;&amp;lt;/code&amp;gt;，即可连接wifi。&lt;br /&gt;
&lt;br /&gt;
Wi-Fi连接后，输入iperf即可看到iperf的命令用法：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp iperf usage.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
此时在相同局域网下，找一台网线连接的电脑，执行&amp;lt;code&amp;gt;iperf -s -i 1 -t 30&amp;lt;/code&amp;gt;，在BL616上执行&amp;lt;code&amp;gt;iperf -c 192.168.133.15 -i 1 -t 30&amp;lt;/code&amp;gt;，其中&amp;lt;code&amp;gt;192.168.133.15&amp;lt;/code&amp;gt; 为电脑的IP，&#039;&#039;&#039;注意更换成自己网段相应的IP&#039;&#039;&#039;。当前模式下BL616为Client，向Server发送数据，测试BL616的TX吞吐。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;本次实验在办公区开放环境下进行。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp tx iperf.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
如果测试BL616 RX的吞吐，则在BL616上执行&amp;lt;code&amp;gt;iperf -s -i 1 -t 30&amp;lt;/code&amp;gt;，在电脑上执行：&amp;lt;code&amp;gt;iperf -c 192.168.133.250 -i 1 -t 30&amp;lt;/code&amp;gt;，其中&amp;lt;code&amp;gt;192.168.133.250&amp;lt;/code&amp;gt;是BL616的IP地址。&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp rx iperf.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
上述操作步骤即完成了BL616的Wi-Fi TX/RX极限吞吐测试。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=158</id>
		<title>使用iperf打流</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=158"/>
		<updated>2025-11-06T07:35:35Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* iperf打流 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;当需要测试无线的极限吞吐的时候，一般会用到 iperf 工具进行打流。&lt;br /&gt;
&lt;br /&gt;
本文介绍如何使用bouffalo sdk实现iperf打流。&lt;br /&gt;
&lt;br /&gt;
注意如果想获得最佳的性能，需要在屏蔽环境执行打流操作，并确保屏蔽环境中没有其他路由器和设备干扰打流过程。&lt;br /&gt;
&lt;br /&gt;
== 编译打流固件 ==&lt;br /&gt;
在Bouffalo SDK上使用 &amp;lt;code&amp;gt;examples/wifi/sta/wifi_tcp&amp;lt;/code&amp;gt; 这个app，并确保 &amp;lt;code&amp;gt;CONFIG_WIFI_IPERF&amp;lt;/code&amp;gt; 配置项使能。&lt;br /&gt;
&lt;br /&gt;
以BL616为例，在Bouffalo SDK的根目录下执行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make -C examples/wifi/sta/wifi_tcp  CHIP=bl616 BOARD=bl616dk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
执行成功后，确保固件已经正常产生：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp build.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
然后执行烧录：&amp;lt;code&amp;gt;sudo make -C examples/wifi/sta/wifi_tcp CHIP=bl616 BOARD=bl616dk flash COMX=/dev/ttyUSB1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意需要使用root权限，因为要操作串口设备，并确保COMX参数指向正确的烧录串口。&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp flash.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
此时打开/dev/ttyUSB1串口，波特率2000000，8n1，即可看到有日志输出：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp startup log.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
== iperf打流 ==&lt;br /&gt;
在设备端执行 &amp;lt;code&amp;gt;wifi_sta_connect &#039;&#039;your_wifi_ssid&#039;&#039; &#039;&#039;your_wifi_pwd&#039;&#039;&amp;lt;/code&amp;gt;，即可连接wifi。&lt;br /&gt;
&lt;br /&gt;
Wi-Fi连接后，输入iperf即可看到iperf的命令用法：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp iperf usage.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
此时在相同局域网下，找一台网线连接的电脑，执行&amp;lt;code&amp;gt;iperf -s -i 1 -t 30&amp;lt;/code&amp;gt;，在BL616上执行&amp;lt;code&amp;gt;iperf -c 192.168.133.15 -i 1 -t 30&amp;lt;/code&amp;gt;，其中&amp;lt;code&amp;gt;192.168.133.15&amp;lt;/code&amp;gt; 为电脑的IP。当前模式下BL616为Client，向Server发送数据，测试BL616的TX吞吐。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;本次实验在办公区开放环境下进行。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp tx iperf.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
如果测试BL616 RX的吞吐，则在BL616上执行&amp;lt;code&amp;gt;iperf -s -i 1 -t 30&amp;lt;/code&amp;gt;，在电脑上执行：&amp;lt;code&amp;gt;iperf -c 192.168.133.250 -i 1 -t 30&amp;lt;/code&amp;gt;，其中&amp;lt;code&amp;gt;192.168.133.250&amp;lt;/code&amp;gt;是BL616的IP地址。&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp rx iperf.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
上述操作步骤即完成了BL616的Wi-Fi TX/RX极限吞吐测试。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=157</id>
		<title>使用iperf打流</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=157"/>
		<updated>2025-11-06T02:50:08Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* iperf打流 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;当需要测试无线的极限吞吐的时候，一般会用到 iperf 工具进行打流。&lt;br /&gt;
&lt;br /&gt;
本文介绍如何使用bouffalo sdk实现iperf打流。&lt;br /&gt;
&lt;br /&gt;
注意如果想获得最佳的性能，需要在屏蔽环境执行打流操作，并确保屏蔽环境中没有其他路由器和设备干扰打流过程。&lt;br /&gt;
&lt;br /&gt;
== 编译打流固件 ==&lt;br /&gt;
在Bouffalo SDK上使用 &amp;lt;code&amp;gt;examples/wifi/sta/wifi_tcp&amp;lt;/code&amp;gt; 这个app，并确保 &amp;lt;code&amp;gt;CONFIG_WIFI_IPERF&amp;lt;/code&amp;gt; 配置项使能。&lt;br /&gt;
&lt;br /&gt;
以BL616为例，在Bouffalo SDK的根目录下执行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make -C examples/wifi/sta/wifi_tcp  CHIP=bl616 BOARD=bl616dk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
执行成功后，确保固件已经正常产生：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp build.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
然后执行烧录：&amp;lt;code&amp;gt;sudo make -C examples/wifi/sta/wifi_tcp CHIP=bl616 BOARD=bl616dk flash COMX=/dev/ttyUSB1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意需要使用root权限，因为要操作串口设备，并确保COMX参数指向正确的烧录串口。&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp flash.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
此时打开/dev/ttyUSB1串口，波特率2000000，8n1，即可看到有日志输出：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp startup log.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
== iperf打流 ==&lt;br /&gt;
Wi-Fi连接后，输入iperf即可看到iperf的命令用法：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp iperf usage.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
此时在相同局域网下，找一台网线连接的电脑，执行&amp;lt;code&amp;gt;iperf -s -i 1 -t 30&amp;lt;/code&amp;gt;，在BL616上执行&amp;lt;code&amp;gt;iperf -c 192.168.133.15 -i 1 -t 30&amp;lt;/code&amp;gt;，其中&amp;lt;code&amp;gt;192.168.133.15&amp;lt;/code&amp;gt; 为电脑的IP。当前模式下BL616为Client，向Server发送数据，测试BL616的TX吞吐。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;本次实验在办公区开放环境下进行。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp tx iperf.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
如果测试BL616 RX的吞吐，则在BL616上执行&amp;lt;code&amp;gt;iperf -s -i 1 -t 30&amp;lt;/code&amp;gt;，在电脑上执行：&amp;lt;code&amp;gt;iperf -c 192.168.133.250 -i 1 -t 30&amp;lt;/code&amp;gt;，其中&amp;lt;code&amp;gt;192.168.133.250&amp;lt;/code&amp;gt;是BL616的IP地址。&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp rx iperf.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
上述操作步骤即完成了BL616的Wi-Fi TX/RX极限吞吐测试。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_rx_iperf.png&amp;diff=156</id>
		<title>文件:Wifi tcp rx iperf.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_rx_iperf.png&amp;diff=156"/>
		<updated>2025-11-06T02:48:48Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;wifi tcp的rx iperf 吞吐（开放环境）&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_tx_iperf.png&amp;diff=155</id>
		<title>文件:Wifi tcp tx iperf.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_tx_iperf.png&amp;diff=155"/>
		<updated>2025-11-06T02:44:27Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi TCP TX吞吐打流（开放环境）&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=154</id>
		<title>使用iperf打流</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E4%BD%BF%E7%94%A8iperf%E6%89%93%E6%B5%81&amp;diff=154"/>
		<updated>2025-11-06T02:36:30Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“当需要测试无线的极限吞吐的时候，一般会用到 iperf 工具进行打流。  本文介绍如何使用bouffalo sdk实现iperf打流。  注意如果想获得最佳的性能，需要在屏蔽环境执行打流操作，并确保屏蔽环境中没有其他路由器和设备干扰打流过程。  == 编译打流固件 == 在Bouffalo SDK上使用 &amp;lt;code&amp;gt;examples/wifi/sta/wifi_tcp&amp;lt;/code&amp;gt; 这个app，并确保 &amp;lt;code&amp;gt;CONFIG_WIFI_IPERF&amp;lt;/code&amp;gt; 配置项使…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;当需要测试无线的极限吞吐的时候，一般会用到 iperf 工具进行打流。&lt;br /&gt;
&lt;br /&gt;
本文介绍如何使用bouffalo sdk实现iperf打流。&lt;br /&gt;
&lt;br /&gt;
注意如果想获得最佳的性能，需要在屏蔽环境执行打流操作，并确保屏蔽环境中没有其他路由器和设备干扰打流过程。&lt;br /&gt;
&lt;br /&gt;
== 编译打流固件 ==&lt;br /&gt;
在Bouffalo SDK上使用 &amp;lt;code&amp;gt;examples/wifi/sta/wifi_tcp&amp;lt;/code&amp;gt; 这个app，并确保 &amp;lt;code&amp;gt;CONFIG_WIFI_IPERF&amp;lt;/code&amp;gt; 配置项使能。&lt;br /&gt;
&lt;br /&gt;
以BL616为例，在Bouffalo SDK的根目录下执行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;make -C examples/wifi/sta/wifi_tcp  CHIP=bl616 BOARD=bl616dk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
执行成功后，确保固件已经正常产生：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp build.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
然后执行烧录：&amp;lt;code&amp;gt;sudo make -C examples/wifi/sta/wifi_tcp CHIP=bl616 BOARD=bl616dk flash COMX=/dev/ttyUSB1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意需要使用root权限，因为要操作串口设备，并确保COMX参数指向正确的烧录串口。&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp flash.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
此时打开/dev/ttyUSB1串口，波特率2000000，8n1，即可看到有日志输出：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp startup log.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
== iperf打流 ==&lt;br /&gt;
Wi-Fi连接后，输入iperf即可看到iperf的命令用法：&lt;br /&gt;
&lt;br /&gt;
[[文件:Wifi tcp iperf usage.png|无框|600x600像素]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_iperf_usage.png&amp;diff=153</id>
		<title>文件:Wifi tcp iperf usage.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_iperf_usage.png&amp;diff=153"/>
		<updated>2025-11-06T02:36:13Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;wifi tcp iperf的命令用法&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_startup_log.png&amp;diff=152</id>
		<title>文件:Wifi tcp startup log.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_startup_log.png&amp;diff=152"/>
		<updated>2025-11-06T02:33:47Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;wifi tcp 运行日志&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_flash.png&amp;diff=151</id>
		<title>文件:Wifi tcp flash.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_flash.png&amp;diff=151"/>
		<updated>2025-11-06T02:31:41Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;wifi_tcp 烧录成功日志。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_build.png&amp;diff=150</id>
		<title>文件:Wifi tcp build.png</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E6%96%87%E4%BB%B6:Wifi_tcp_build.png&amp;diff=150"/>
		<updated>2025-11-06T02:28:48Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;wifi tcp app 构建产物&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=Demo:DMA&amp;diff=75</id>
		<title>Demo:DMA</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=Demo:DMA&amp;diff=75"/>
		<updated>2025-07-16T04:55:41Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“=== Demo介绍： === 这部分代码保存在SDK下的：/examples/peripherals/dma/ 中。展示了不同模式下的dma运行情况，测试dma外设的功能完整性。  在该SDK中，dma的搬运被构建成一个链表，系统根据链表不断向下搬运直到结尾。  === dma_normal: === 该部分代码测试了内存到内存的基本dma运送。共搬运数据三组，字节对齐为32位。搬运模式为一次性搬运。  &amp;#039;&amp;#039;&amp;#039;数据字节对齐…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Demo介绍： ===&lt;br /&gt;
这部分代码保存在SDK下的：/examples/peripherals/dma/ 中。展示了不同模式下的dma运行情况，测试dma外设的功能完整性。&lt;br /&gt;
&lt;br /&gt;
在该SDK中，dma的搬运被构建成一个链表，系统根据链表不断向下搬运直到结尾。&lt;br /&gt;
&lt;br /&gt;
=== dma_normal: ===&lt;br /&gt;
该部分代码测试了内存到内存的基本dma运送。共搬运数据三组，字节对齐为32位。搬运模式为一次性搬运。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;数据字节对齐式初始化：&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
这里这里以32位对齐是为了配合后面DMA读取。&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
static __attribute((aligned(32))) uint8_t src1_buffer[DMA_BUFFER_LENGTH];&lt;br /&gt;
static __attribute((aligned(32))) uint8_t src2_buffer[DMA_BUFFER_LENGTH];&lt;br /&gt;
static __attribute((aligned(32))) uint8_t src3_buffer[DMA_BUFFER_LENGTH];&lt;br /&gt;
&lt;br /&gt;
static __attribute((aligned(32))) uint8_t dst1_buffer[DMA_BUFFER_LENGTH];&lt;br /&gt;
static __attribute((aligned(32))) uint8_t dst2_buffer[DMA_BUFFER_LENGTH];&lt;br /&gt;
static __attribute((aligned(32))) uint8_t dst3_buffer[DMA_BUFFER_LENGTH];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;DMA配置解析：&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
方向配置为：内存到内存；&lt;br /&gt;
&lt;br /&gt;
优先级都配置为： 0，是最高优先级；&lt;br /&gt;
&lt;br /&gt;
目标和源数据指针都为递增；&lt;br /&gt;
&lt;br /&gt;
突发传输次数配置都为 1；&lt;br /&gt;
&lt;br /&gt;
数据宽度都为 32位置。&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    config.direction = DMA_MEMORY_TO_MEMORY;&lt;br /&gt;
    config.src_req = 0;&lt;br /&gt;
    config.dst_req = 0;&lt;br /&gt;
    config.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;&lt;br /&gt;
    config.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE;&lt;br /&gt;
    config.src_burst_count = DMA_BURST_INCR1;&lt;br /&gt;
    config.dst_burst_count = DMA_BURST_INCR1;&lt;br /&gt;
    config.src_width = DMA_DATA_WIDTH_32BIT;&lt;br /&gt;
    config.dst_width = DMA_DATA_WIDTH_32BIT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;突发次数：&#039;&#039;&#039; ====&lt;br /&gt;
突发次数就是突发传输，是指在DMA占用总线时，一个周期里读或者写的次数。注意，虽然双方都配置了突发次数，但是&#039;&#039;&#039;并不是同时进行而是先读后写&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
比如，源数据的突发传输次数设定为4,目标写的突发次数为2,则是先读取四次，然后再写入两次。&#039;&#039;&#039;&#039;&#039;这里的突发读/写每次都会出发指针的递增&#039;&#039;&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;部分输出：&#039;&#039;&#039; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
===========================&lt;br /&gt;
uart  sig1:ffffffff, sig2:0000f32f&lt;br /&gt;
clock gen1:9ffffffd, gen2:0fff0c11&lt;br /&gt;
xtal:40000000Hz(crystal)&lt;br /&gt;
board init done&lt;br /&gt;
===========================&lt;br /&gt;
dma memory case:&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
copy finished with time=353us&lt;br /&gt;
case end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dma_normal_cycle: ===&lt;br /&gt;
该部分代码和上述代码的配置一致，但是该代码为循环搬运。&lt;br /&gt;
&lt;br /&gt;
不同的地方在于：&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    int used_count = bflb_dma_channel_lli_reload(dma0_ch0, lli, 20, transfers, 3);&lt;br /&gt;
    bflb_dma_channel_lli_link_head(dma0_ch0, lli, used_count);      //该函数将链表进行了头尾相接&lt;br /&gt;
    bflb_dma_channel_start(dma0_ch0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;链表头尾相接变成了环&#039;&#039;&#039;，所以程序将会重复循环搬运构建的链表内的所有item。&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;部分输出：&#039;&#039;&#039; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
tc done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;按照demo,应该触发一百次中断函数，所以应该有100次 tc done&lt;br /&gt;
&lt;br /&gt;
=== dma_reduce_or_add: ===&lt;br /&gt;
这部分代码主要展示了两个模式在不同的情况下的应用，并且展示了普通模式下当目标数据和源数据宽度不同时应该怎么传输数据和当应该使用模式但没有使用时会产生什么样的负面效果。&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Add与Reduce模式说明：&#039;&#039;&#039; ====&lt;br /&gt;
Add和Reduce模式从狭义来判断是当目标数据宽度和源数据宽度不匹配时使用。&lt;br /&gt;
&lt;br /&gt;
但事实并不仅仅如此，&#039;&#039;&#039;本demo在第一段代码的配置中就展示了即使数据宽度不匹配也可以在normal模式下通过设置配置来运行&#039;&#039;&#039;：&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    config.direction = DMA_MEMORY_TO_MEMORY;&lt;br /&gt;
    config.src_req = 0;&lt;br /&gt;
    config.dst_req = 0;&lt;br /&gt;
    config.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;&lt;br /&gt;
    config.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE;&lt;br /&gt;
    config.src_burst_count = DMA_BURST_INCR1;&lt;br /&gt;
    config.dst_burst_count = DMA_BURST_INCR4;&lt;br /&gt;
    config.src_width = DMA_DATA_WIDTH_32BIT;&lt;br /&gt;
    config.dst_width = DMA_DATA_WIDTH_8BIT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过设定 burst 突发次数来配合宽度，最终使得：&#039;&#039;&#039;源宽度*突发次数 = 目标宽度*突发次数&#039;&#039;&#039; &amp;lt;big&amp;gt;则可以完整的将数据正确的传输过去&amp;lt;/big&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;那什么情况下使用Add和Reduce？&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
答案是要&#039;&#039;&#039;参考数据总量&#039;&#039;&#039;，比如：&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    /* Disable reduce mode and enable add mode, src_width = 8bit, dst_width = 32bit, nbytes = 65, transfer length = nbytes + 3 = 68 byte, multiple of dst_width */&lt;br /&gt;
    bflb_dma_feature_control(dma0_ch0, DMA_CMD_SET_REDUCE_MODE, 0);&lt;br /&gt;
    bflb_dma_feature_control(dma0_ch0, DMA_CMD_SET_ADD_MODE, 1);&lt;br /&gt;
&lt;br /&gt;
    config.src_burst_count = DMA_BURST_INCR4;&lt;br /&gt;
    config.dst_burst_count = DMA_BURST_INCR1;&lt;br /&gt;
    config.src_width = DMA_DATA_WIDTH_8BIT;&lt;br /&gt;
    config.dst_width = DMA_DATA_WIDTH_32BIT;&lt;br /&gt;
    bflb_dma_channel_init(dma0_ch0, &amp;amp;config);&lt;br /&gt;
&lt;br /&gt;
    bflb_dma_channel_tcint_mask(dma0_ch0, false);&lt;br /&gt;
&lt;br /&gt;
    transfers[0].nbytes = DMA_TRANSFER_LENGTH + 1;  //这里更改设置总传输量为65字节&lt;br /&gt;
    bflb_dma_channel_lli_reload(dma0_ch0, lli, 20, transfers, 1);&lt;br /&gt;
&lt;br /&gt;
    bflb_dma_channel_start(dma0_ch0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;当目标数据宽度是32位4字节，而源数据的宽度是8位一字节，&#039;&#039;&#039;拿65/4 = 16 余下 1,也就是说最后一次传输会仅仅传输一字节数据向一个宽度为四字节的变量&#039;&#039;&#039;。假设这里不是变量而是寄存器，那么就有可能写不进去（可能识别错误）。那么&amp;lt;big&amp;gt;&#039;&#039;&#039;Add在这里的作用就是：字节对齐&#039;&#039;&#039;&amp;lt;/big&amp;gt;。它会自动补全后面的数据，也就是补出来3字节的数据，&#039;&#039;这就是什么注释中说最后的实际传输数据是65 + 3= 68 byte。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
而Reduce模式，在本demo中仅仅是测试，没有给出实际的需求场景。&lt;br /&gt;
&lt;br /&gt;
在实际场景中的应用一般是在如下情况：假设当目标宽度为32位，数据源宽度为8位,读取总量设定为61字节。 61 / 4 = 15 余下 1。此时必须再次读取，但是读取的四字节中只有一字节要使用，假设寄存器读取后就会复位，那么这里就会错误操作。所以reduce模式就可以在这种情况下使用，它会规定用户设定的传输总量为最大读取字节数，&amp;lt;big&amp;gt;&#039;&#039;&#039;reduce的作用就是：防止过量读取。&#039;&#039;&#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在配置上可以参考这个：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!模式&lt;br /&gt;
!适用场景&lt;br /&gt;
!配置公式&lt;br /&gt;
!效果&lt;br /&gt;
|-&lt;br /&gt;
|Reduce&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;源宽度 &amp;gt; 目标宽度  ||  不希望过度读取&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|nbytes = 期望 + 目标宽度&lt;br /&gt;
|实际传输 = 期望&lt;br /&gt;
|-&lt;br /&gt;
|Add&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;目标宽度 &amp;gt; 源宽度  ||  需要字节对齐写入数据&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|nbytes = 期望&lt;br /&gt;
|实际传输 = 对齐(期望)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 部分输出： ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
===========================&lt;br /&gt;
uart  sig1:ffffffff, sig2:0000f32f&lt;br /&gt;
clock gen1:9ffffffd, gen2:0fff0c11&lt;br /&gt;
xtal:40000000Hz(crystal)&lt;br /&gt;
board init done&lt;br /&gt;
===========================&lt;br /&gt;
dma memory case:&lt;br /&gt;
tc done&lt;br /&gt;
Check over&lt;br /&gt;
&lt;br /&gt;
tc done&lt;br /&gt;
Check over&lt;br /&gt;
&lt;br /&gt;
tc done&lt;br /&gt;
Correct, meaningless data. index: 65, src: 0x41, dst: 0x31&lt;br /&gt;
Correct, meaningless data. index: 66, src: 0x42, dst: 0x32&lt;br /&gt;
Correct, meaningless data. index: 67, src: 0x43, dst: 0x33&lt;br /&gt;
Check over&lt;br /&gt;
&lt;br /&gt;
tc done&lt;br /&gt;
Check over&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;可以看到在最终的没有添加add模式的情况下，出现了无意义数据。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=74</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=74"/>
		<updated>2025-07-16T04:53:59Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* Demos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
* [[烧录固件到开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;br /&gt;
* [[USB Wi-Fi用户手册]]&lt;br /&gt;
&lt;br /&gt;
= Demos =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo:FreeRTOS]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo:DMA]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo：Flash]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=73</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=73"/>
		<updated>2025-07-16T04:48:51Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* Demos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
* [[烧录固件到开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;br /&gt;
* [[USB Wi-Fi用户手册]]&lt;br /&gt;
&lt;br /&gt;
= Demos =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo:FreeRTOS]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo：DMA]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo：Flash]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=72</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=72"/>
		<updated>2025-07-16T04:43:46Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
* [[烧录固件到开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;br /&gt;
* [[USB Wi-Fi用户手册]]&lt;br /&gt;
&lt;br /&gt;
= Demos =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo:FreeRTOS]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=71</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=71"/>
		<updated>2025-07-16T04:42:56Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;br /&gt;
* [[USB Wi-Fi用户手册]]&lt;br /&gt;
&lt;br /&gt;
= Demos =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Demo:FreeRTOS]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8Ubuntu%E4%B8%8A%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83&amp;diff=70</id>
		<title>如何在Ubuntu上搭建编译环境</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8Ubuntu%E4%B8%8A%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83&amp;diff=70"/>
		<updated>2025-07-16T04:41:01Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 安装编译工具链 ==&lt;br /&gt;
T-Head GCC Toolchain的地址：https://github.com/bouffalolab/toolchain_gcc_t-head_linux&lt;br /&gt;
&lt;br /&gt;
使用Git clone下载T-Head GCC Toolchain： &amp;lt;code&amp;gt;git clone git@github.com:bouffalolab/toolchain_gcc_t-head_linux.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
假设clone到了&amp;lt;code&amp;gt;/data/toolchain_gcc_t-head_linux&amp;lt;/code&amp;gt;目录下：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux$ ls -l&lt;br /&gt;
total 28&lt;br /&gt;
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 bin&lt;br /&gt;
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 include&lt;br /&gt;
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 lib&lt;br /&gt;
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 lib64&lt;br /&gt;
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 libexec&lt;br /&gt;
drwxr-xr-x 5 jenkins jenkins 4096 Dec 24  2022 riscv64-unknown-elf&lt;br /&gt;
drwxr-xr-x 7 jenkins jenkins 4096 Dec 24  2022 share&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后把&amp;lt;code&amp;gt;/data/toolchain_gcc_t-head_linux/bin&amp;lt;/code&amp;gt;路径加入到系统PATH环境变量中，假设你使用的是bash，则在&amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;文件最后一行添加：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
... bashrc origin data ...&lt;br /&gt;
&lt;br /&gt;
# add t-head gcc toolchain to PATH&lt;br /&gt;
export PATH=/data/toolchain_gcc_t-head_linux/bin:$PATH&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后在当前终端下执行&amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;使PATH环境变量生效，然后执行&amp;lt;code&amp;gt;riscv64-unknown-elf-gcc -v&amp;lt;/code&amp;gt;应该可以看到GCC运行的打印。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ echo $PATH&lt;br /&gt;
/data/toolchain_gcc_t-head_linux/bin:/home/jenkins/.local/bin:/data/toolchain_gcc_t-head_linux/bin:/data/jenkins_tools:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&lt;br /&gt;
&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ riscv64-unknown-elf-gcc -v&lt;br /&gt;
Using built-in specs.&lt;br /&gt;
COLLECT_GCC=riscv64-unknown-elf-gcc&lt;br /&gt;
COLLECT_LTO_WRAPPER=/data/toolchain_gcc_t-head_linux/bin/../libexec/gcc/riscv64-unknown-elf/10.2.0/lto-wrapper&lt;br /&gt;
Target: riscv64-unknown-elf&lt;br /&gt;
Configured with: /mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc/configure --target=riscv64-unknown-elf --with-gmp=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpfr=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpc=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libexpat-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libmpfr-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-pkgversion=&#039;Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906&#039; CXXFLAGS=&#039;-g -O2 -DTHEAD_VERSION_NUMBER=2.6.1 &#039; --enable-libgcctf --prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1 --disable-shared --enable-threads=posix --enable-languages=c,c++ --with-system-zlib --enable-tls --with-newlib --with-sysroot=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead &#039;CFLAGS_FOR_TARGET=-Os   -mcmodel=medany&#039; &#039;CXXFLAGS_FOR_TARGET=-Os   -mcmodel=medany&#039;&lt;br /&gt;
Thread model: posix&lt;br /&gt;
Supported LTO compression algorithms: zlib&lt;br /&gt;
gcc version 10.2.0 (Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 安装环境依赖 ==&lt;br /&gt;
Bouffalo SDK Build依赖CMake工具，在Ubuntu下可以直接使用APT工具安装：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt update&lt;br /&gt;
$ sudo apt install cmake&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CMake安装成功之后，可以进入到Bouffalo SDK目录下的&amp;lt;code&amp;gt;examples/helloworld&amp;lt;/code&amp;gt;，执行&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;即可看到编译的日志。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8Ubuntu%E4%B8%8A%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83&amp;diff=69</id>
		<title>如何在Ubuntu上搭建编译环境</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8Ubuntu%E4%B8%8A%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83&amp;diff=69"/>
		<updated>2025-07-16T04:36:59Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 安装编译工具链 ==&lt;br /&gt;
T-Head GCC Toolchain的地址：https://github.com/bouffalolab/toolchain_gcc_t-head_linux&lt;br /&gt;
&lt;br /&gt;
使用Git clone下载T-Head GCC Toolchain： &amp;lt;code&amp;gt;git clone git@github.com:bouffalolab/toolchain_gcc_t-head_linux.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
假设clone到了&amp;lt;code&amp;gt;/data/toolchain_gcc_t-head_linux&amp;lt;/code&amp;gt;目录下：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux$ ls -l&lt;br /&gt;
total 28&lt;br /&gt;
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 bin&lt;br /&gt;
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 include&lt;br /&gt;
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 lib&lt;br /&gt;
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 lib64&lt;br /&gt;
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 libexec&lt;br /&gt;
drwxr-xr-x 5 jenkins jenkins 4096 Dec 24  2022 riscv64-unknown-elf&lt;br /&gt;
drwxr-xr-x 7 jenkins jenkins 4096 Dec 24  2022 share&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后把&amp;lt;code&amp;gt;/data/toolchain_gcc_t-head_linux/bin&amp;lt;/code&amp;gt;路径加入到系统PATH环境变量中，假设你使用的是bash，则在&amp;lt;code&amp;gt;~/.bashrc&amp;lt;/code&amp;gt;文件最后一行添加：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
... bashrc origin data ...&lt;br /&gt;
&lt;br /&gt;
# add t-head gcc toolchain to PATH&lt;br /&gt;
export PATH=/data/toolchain_gcc_t-head_linux/bin:$PATH&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然后在当前终端下执行&amp;lt;code&amp;gt;source ~/.bashrc&amp;lt;/code&amp;gt;使PATH环境变量生效。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ source ~/.bashrc&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ echo $PATH&lt;br /&gt;
/data/toolchain_gcc_t-head_linux/bin:/home/jenkins/.local/bin:/data/toolchain_gcc_t-head_linux/bin:/data/jenkins_tools:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$&lt;br /&gt;
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ riscv64-unknown-elf-gcc -v&lt;br /&gt;
Using built-in specs.&lt;br /&gt;
COLLECT_GCC=riscv64-unknown-elf-gcc&lt;br /&gt;
COLLECT_LTO_WRAPPER=/data/toolchain_gcc_t-head_linux/bin/../libexec/gcc/riscv64-unknown-elf/10.2.0/lto-wrapper&lt;br /&gt;
Target: riscv64-unknown-elf&lt;br /&gt;
Configured with: /mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc/configure --target=riscv64-unknown-elf --with-gmp=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpfr=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpc=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libexpat-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libmpfr-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-pkgversion=&#039;Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906&#039; CXXFLAGS=&#039;-g -O2 -DTHEAD_VERSION_NUMBER=2.6.1 &#039; --enable-libgcctf --prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1 --disable-shared --enable-threads=posix --enable-languages=c,c++ --with-system-zlib --enable-tls --with-newlib --with-sysroot=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead &#039;CFLAGS_FOR_TARGET=-Os   -mcmodel=medany&#039; &#039;CXXFLAGS_FOR_TARGET=-Os   -mcmodel=medany&#039;&lt;br /&gt;
Thread model: posix&lt;br /&gt;
Supported LTO compression algorithms: zlib&lt;br /&gt;
gcc version 10.2.0 (Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 安装环境依赖 ==&lt;br /&gt;
&lt;br /&gt;
更新源：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt update&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Bouffalo SDK需要CMake工具：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
$ sudo apt install cmake&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;下载编译工具链：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone &amp;quot;https://github.com/bouffalolab/bouffalo_sdk”&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;如果你使用clangd来作为LSP实现工具，则下载 bear和clangd ：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo apt install clangd&lt;br /&gt;
$ sudo apt install bear&lt;br /&gt;
#该工具和make一起使用时会生成 .json文件，该文件记录各种编译参数路径等信息，用于LSP通信使用&amp;lt;/syntaxhighlight&amp;gt;执行时则执行 根据手册执行对应参数，在前面加上一个 bear即可，例如：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
bear -- make clean &amp;amp;&amp;amp; make CHIP=bl616 BOARD=bl616dk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;如果你选择使用VScode，那么只需要下载对应插件即可。&lt;br /&gt;
&lt;br /&gt;
但VScode的原生插件的支持比较弱，实际验证发现有可能导致头文件跳转错误。但好消息是该插件也会采用bear生成的compile_commands.json，所以建议仍然使用bear生成一下。&amp;lt;gallery widths=&amp;quot;500&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;也可以在VScode中配置为clangd。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=56</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=56"/>
		<updated>2025-06-16T05:56:33Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;br /&gt;
* [[USB Wi-Fi用户手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E8%B0%83%E6%95%B4%E6%97%A0%E7%BA%BF%E5%8F%91%E5%B0%84%E5%8A%9F%E7%8E%87&amp;diff=51</id>
		<title>调整无线发射功率</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E8%B0%83%E6%95%B4%E6%97%A0%E7%BA%BF%E5%8F%91%E5%B0%84%E5%8A%9F%E7%8E%87&amp;diff=51"/>
		<updated>2025-06-10T07:41:23Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建文档页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;本文介绍了在博流芯片+SDK上如何调整无线部分的发射功率和capcode&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=USB%E7%9C%BC%E5%9B%BE%E6%B5%8B%E8%AF%95&amp;diff=50</id>
		<title>USB眼图测试</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=USB%E7%9C%BC%E5%9B%BE%E6%B5%8B%E8%AF%95&amp;diff=50"/>
		<updated>2025-06-09T12:14:53Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SDK需要打开&amp;lt;code&amp;gt;CONFIG_USBDEV_TEST_MODE&amp;lt;/code&amp;gt;这个配置宏，并重新编译SDK。&lt;br /&gt;
&lt;br /&gt;
当CONFIG_USBDEV_TEST_MODE宏开启之后，USB协议栈会配置USB IP进入Test Packet Mode，USB控制器就可以持续产生Test Pattern信号。示波器可以检测这些信号来生成眼图分析usb信号的完整性。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=USB%E7%9C%BC%E5%9B%BE%E6%B5%8B%E8%AF%95&amp;diff=49</id>
		<title>USB眼图测试</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=USB%E7%9C%BC%E5%9B%BE%E6%B5%8B%E8%AF%95&amp;diff=49"/>
		<updated>2025-06-09T11:56:29Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“SDK需要打开CONFIG_USBDEV_TEST_MODE这个配置宏”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SDK需要打开CONFIG_USBDEV_TEST_MODE这个配置宏&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=Coredump%E5%B7%A5%E5%85%B7&amp;diff=48</id>
		<title>Coredump工具</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=Coredump%E5%B7%A5%E5%85%B7&amp;diff=48"/>
		<updated>2025-06-03T01:35:07Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“介绍Bouffalolab coredump分析工具”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;介绍Bouffalolab coredump分析工具&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=Demo:FreeRTOS&amp;diff=40</id>
		<title>Demo:FreeRTOS</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=Demo:FreeRTOS&amp;diff=40"/>
		<updated>2025-05-28T07:52:43Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“在Bouffalo SDK上使用FreeRTOS APP。”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;在Bouffalo SDK上使用FreeRTOS APP。&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=38</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=38"/>
		<updated>2025-05-23T14:34:24Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=33</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=33"/>
		<updated>2025-04-28T06:38:09Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* Products */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=WiFi&amp;diff=32</id>
		<title>WiFi</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=WiFi&amp;diff=32"/>
		<updated>2025-04-28T06:37:37Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“test”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=31</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=31"/>
		<updated>2025-04-28T06:37:09Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* [[如何获取开发板]]&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
* [[BL808]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=30</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=30"/>
		<updated>2025-04-28T06:36:41Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* Bouffalo SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* 如何获取开发板&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
* [[BL808]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=29</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=29"/>
		<updated>2025-04-23T06:52:22Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* Bouffalo SDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* 如何获取开发板&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
&#039;&#039;&#039;BouffaloSDK&#039;&#039;&#039; 是 Bouffalo Lab 提供的 IOT 和 MCU 软件开发包，支持博流智能所有系列芯片，也是 &#039;&#039;&#039;bl_mcu_sdk&#039;&#039;&#039; 和 &#039;&#039;&#039;bl_iot_sdk&#039;&#039;&#039; 的结合体。&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
* [[BL808]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=28</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=28"/>
		<updated>2025-04-23T06:50:34Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* SDK Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* 如何获取开发板&lt;br /&gt;
&lt;br /&gt;
= Bouffalo SDK =&lt;br /&gt;
Bouffalo SDK Architecture：&lt;br /&gt;
&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
* [[BL808]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8Ubuntu%E4%B8%8A%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83&amp;diff=27</id>
		<title>如何在Ubuntu上搭建编译环境</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E5%A6%82%E4%BD%95%E5%9C%A8Ubuntu%E4%B8%8A%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83&amp;diff=27"/>
		<updated>2025-04-21T10:58:33Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​创建页面，内容为“= 准备环境 = Bouffalo SDK需要CMake工具：  &amp;lt;syntaxhighlight lang=shell&amp;gt; $ sudo apt install cmake &amp;lt;/syntaxhighlight&amp;gt;”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 准备环境 =&lt;br /&gt;
Bouffalo SDK需要CMake工具：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=shell&amp;gt;&lt;br /&gt;
$ sudo apt install cmake&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=26</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=26"/>
		<updated>2025-04-21T10:50:02Z</updated>

		<summary type="html">&lt;p&gt;荣卓然：​/* Chips and peripherals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting Started =&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bouffalolab/bouffalo_sdk 如何获取SDK]&lt;br /&gt;
* [[如何在Ubuntu上搭建编译环境]]&lt;br /&gt;
* [[如何在Windows上搭建编译环境]]&lt;br /&gt;
* 如何获取开发板&lt;br /&gt;
&lt;br /&gt;
= SDK Architecture =&lt;br /&gt;
[[文件:BouffaloSDK.png|无框|600x600像素]]&lt;br /&gt;
&lt;br /&gt;
= Peripherals =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[I2S]]&lt;br /&gt;
*[[I2C]]&lt;br /&gt;
*[[CVBS]]&lt;br /&gt;
*[[Watchdog]]&lt;br /&gt;
*[[GSM/GPRS]]&lt;br /&gt;
*[[Codec]]&lt;br /&gt;
*[[PCIe]]&lt;br /&gt;
*[[GPIO]]&lt;br /&gt;
*[[eMMC]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[WiFi]]&lt;br /&gt;
*[[LED]]&lt;br /&gt;
*[[Serial port]]&lt;br /&gt;
*[[PWM]]&lt;br /&gt;
*[[SPI]]&lt;br /&gt;
*[[USB OTG]]&lt;br /&gt;
*[[LCD]]&lt;br /&gt;
*[[CPU]]&lt;br /&gt;
*[[Network]]&lt;br /&gt;
|width=&amp;quot;32%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
*[[Bluetooth]]&lt;br /&gt;
*[[HDMI]]&lt;br /&gt;
*[[Camera]]&lt;br /&gt;
*[[Memory]]&lt;br /&gt;
*[[RTC]]&lt;br /&gt;
*[[EEPROM]]&lt;br /&gt;
*[[MIPI-DSI]]&lt;br /&gt;
*[[NPU]]&lt;br /&gt;
*[[VPU]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Products =&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL602]]&lt;br /&gt;
* [[BL702]]&lt;br /&gt;
* [[BL618]]&lt;br /&gt;
* [[BL606P]]&lt;br /&gt;
* [[BL808]]&lt;br /&gt;
|width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;|&lt;br /&gt;
* [[BL702L]]&lt;br /&gt;
* [[BL616]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Develop Boards =&lt;br /&gt;
* BL602EVB&lt;br /&gt;
&lt;br /&gt;
= Application Notes =&lt;br /&gt;
* [[SDIOWIFI架构和开发手册]]&lt;br /&gt;
* [[BL616低功耗开发手册]]&lt;/div&gt;</summary>
		<author><name>荣卓然</name></author>
	</entry>
</feed>