<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://docs.bouffalolab.com/index.php?action=history&amp;feed=atom&amp;title=NetHubArchitecture</id>
	<title>NetHubArchitecture - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://docs.bouffalolab.com/index.php?action=history&amp;feed=atom&amp;title=NetHubArchitecture"/>
	<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=NetHubArchitecture&amp;action=history"/>
	<updated>2026-04-14T08:41:06Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=NetHubArchitecture&amp;diff=246&amp;oldid=prev</id>
		<title>张良：​Sync NetHub docs from local Markdown</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=NetHubArchitecture&amp;diff=246&amp;oldid=prev"/>
		<updated>2026-03-17T05:33:51Z</updated>

		<summary type="html">&lt;p&gt;Sync NetHub docs from local Markdown&lt;/p&gt;
&lt;a href=&quot;https://docs.bouffalolab.com/index.php?title=NetHubArchitecture&amp;amp;diff=246&amp;amp;oldid=233&quot;&gt;显示更改&lt;/a&gt;</summary>
		<author><name>张良</name></author>
	</entry>
	<entry>
		<id>https://docs.bouffalolab.com/index.php?title=NetHubArchitecture&amp;diff=233&amp;oldid=prev</id>
		<title>张良：​创建页面，内容为“= NetHub 架构说明 =  本文档面向需要理解模块边界和 API 的开发者。  == 1. 当前架构结论 ==  * 当前物理主路径是 &#039;&#039;&#039;SDIO&#039;&#039;&#039; * &lt;code&gt;USB / SPI&lt;/code&gt; 目前仍保留 backend 骨架，不作为当前推荐 bringup 路径 * device 侧 Wi-Fi backend 支持 &lt;code&gt;fhost / wl80211&lt;/code&gt; * 控制通道和 &lt;code&gt;USER virtual channel&lt;/code&gt; 都是当前 host link 上的逻辑通道，不是独立物理接口 * host 控制 backend 运行…”</title>
		<link rel="alternate" type="text/html" href="https://docs.bouffalolab.com/index.php?title=NetHubArchitecture&amp;diff=233&amp;oldid=prev"/>
		<updated>2026-03-13T09:16:39Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“= NetHub 架构说明 =  本文档面向需要理解模块边界和 API 的开发者。  == 1. 当前架构结论 ==  * 当前物理主路径是 &amp;#039;&amp;#039;&amp;#039;SDIO&amp;#039;&amp;#039;&amp;#039; * &amp;lt;code&amp;gt;USB / SPI&amp;lt;/code&amp;gt; 目前仍保留 backend 骨架，不作为当前推荐 bringup 路径 * device 侧 Wi-Fi backend 支持 &amp;lt;code&amp;gt;fhost / wl80211&amp;lt;/code&amp;gt; * 控制通道和 &amp;lt;code&amp;gt;USER virtual channel&amp;lt;/code&amp;gt; 都是当前 host link 上的逻辑通道，不是独立物理接口 * host 控制 backend 运行…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= NetHub 架构说明 =&lt;br /&gt;
&lt;br /&gt;
本文档面向需要理解模块边界和 API 的开发者。&lt;br /&gt;
&lt;br /&gt;
== 1. 当前架构结论 ==&lt;br /&gt;
&lt;br /&gt;
* 当前物理主路径是 &amp;#039;&amp;#039;&amp;#039;SDIO&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;USB / SPI&amp;lt;/code&amp;gt; 目前仍保留 backend 骨架，不作为当前推荐 bringup 路径&lt;br /&gt;
* device 侧 Wi-Fi backend 支持 &amp;lt;code&amp;gt;fhost / wl80211&amp;lt;/code&amp;gt;&lt;br /&gt;
* 控制通道和 &amp;lt;code&amp;gt;USER virtual channel&amp;lt;/code&amp;gt; 都是当前 host link 上的逻辑通道，不是独立物理接口&lt;br /&gt;
* host 控制 backend 运行时二选一：&amp;lt;code&amp;gt;tty&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;vchan&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. 功能视角架构图 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Host&lt;br /&gt;
  |&lt;br /&gt;
  | network data / control payload / USER payload&lt;br /&gt;
  v&lt;br /&gt;
Host Link (current main path: SDIO)&lt;br /&gt;
  |&lt;br /&gt;
  +-- Data Channel   &amp;lt;--&amp;gt; nethub data bridge&lt;br /&gt;
  +-- Control Channel &amp;lt;-&amp;gt; nethub ctrlpath &amp;lt;-&amp;gt; ATModule&lt;br /&gt;
  +-- USER VCHAN      &amp;lt;-&amp;gt; nethub vchan user path&lt;br /&gt;
  |&lt;br /&gt;
  v&lt;br /&gt;
Device&lt;br /&gt;
  |&lt;br /&gt;
  +-- nethub&lt;br /&gt;
  |    +-- data bridge&lt;br /&gt;
  |    +-- hard-coded Wi-Fi RX filter&lt;br /&gt;
  |    +-- active Wi-Fi selector (STA / AP)&lt;br /&gt;
  |    +-- ctrlpath&lt;br /&gt;
  |    +-- virtual channel&lt;br /&gt;
  |&lt;br /&gt;
  +-- Wi-Fi backend (fhost / wl80211) + lwIP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
从功能上看，&amp;lt;code&amp;gt;nethub&amp;lt;/code&amp;gt; 主要做 4 件事：&lt;br /&gt;
&lt;br /&gt;
* 维护 &amp;lt;code&amp;gt;Wi-Fi &amp;lt;-&amp;gt; HostLink&amp;lt;/code&amp;gt; 的数据桥接&lt;br /&gt;
* 用硬编码 filter 决定报文是 &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;host&amp;lt;/code&amp;gt;、还是 &amp;lt;code&amp;gt;both&amp;lt;/code&amp;gt;&lt;br /&gt;
* 维护当前生效的 Wi-Fi 通道选择 &amp;lt;code&amp;gt;STA / AP&amp;lt;/code&amp;gt;&lt;br /&gt;
* 在同一 host link 上提供控制通道和可选的 &amp;lt;code&amp;gt;USER virtual channel&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 技术/API 视角架构图 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Application&lt;br /&gt;
  |&lt;br /&gt;
  +-- device public API&lt;br /&gt;
  |    +-- nethub.h&lt;br /&gt;
  |    +-- nethub_vchan.h&lt;br /&gt;
  |    +-- nethub_filter.h&lt;br /&gt;
  |&lt;br /&gt;
  +-- host public API&lt;br /&gt;
       +-- bflbwifi.h&lt;br /&gt;
       +-- virtualchan/nethub_vchan.h&lt;br /&gt;
&lt;br /&gt;
device side&lt;br /&gt;
  nethub_bootstrap()&lt;br /&gt;
    -&amp;gt; profile select&lt;br /&gt;
    -&amp;gt; endpoint register&lt;br /&gt;
    -&amp;gt; hub lifecycle&lt;br /&gt;
    -&amp;gt; Wi-Fi bridge&lt;br /&gt;
    -&amp;gt; host backend (current main path: sdio)&lt;br /&gt;
&lt;br /&gt;
host side&lt;br /&gt;
  bflbwifictrl&lt;br /&gt;
    -&amp;gt; IPC&lt;br /&gt;
    -&amp;gt; bflbwifid&lt;br /&gt;
    -&amp;gt; libbflbwifi&lt;br /&gt;
    -&amp;gt; channel facade&lt;br /&gt;
       +-- tty backend&lt;br /&gt;
       +-- vchan backend&lt;br /&gt;
    -&amp;gt; mr_sdio.ko + msg_router&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Device 侧公共接口 ==&lt;br /&gt;
&lt;br /&gt;
头文件：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;components/net/nethub/include/nethub.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;components/net/nethub/include/nethub_vchan.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;components/net/nethub/include/nethub_filter.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
核心 API：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_bootstrap()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_shutdown()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_get_status()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_set_active_wifi_channel()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_ctrl_upld_send()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_ctrl_dnld_register()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_user_send()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_user_recv_register()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_set_wifi_rx_filter()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
边界说明：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_ctrl_*&amp;lt;/code&amp;gt; 对应 host link 上的逻辑控制通道&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_user_*&amp;lt;/code&amp;gt; 对应 host link 上的逻辑 &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; 通道&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_set_wifi_rx_filter()&amp;lt;/code&amp;gt; 用于完全替换内建 Wi-Fi RX filter，必须在 &amp;lt;code&amp;gt;nethub_bootstrap()&amp;lt;/code&amp;gt; 前调用&lt;br /&gt;
&lt;br /&gt;
== 5. Host 侧公共接口 ==&lt;br /&gt;
&lt;br /&gt;
头文件：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;bsp/common/msg_router/linux_host/userspace/nethub/bflbwifictrl/include/bflbwifi.h&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bsp/common/msg_router/linux_host/userspace/nethub/virtualchan/nethub_vchan.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
控制面能力：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_ctrl_config_init()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_ctrl_config_use_tty()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_ctrl_config_use_vchan()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_init_ex()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_get_ctrl_status()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_sta_connect()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_sta_disconnect()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_sta_get_state()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_scan()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_get_version()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_restart()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_ota_upgrade()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_ap_start()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bflbwifi_ap_stop()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
USER virtual channel 能力：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_init()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_deinit()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_user_send()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_user_register_callback()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_get_state_snapshot()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nethub_vchan_register_link_event_callback()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 关键数据流 ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 connect_ap ===&lt;br /&gt;
&lt;br /&gt;
# 用户执行 &amp;lt;code&amp;gt;bflbwifictrl connect_ap &amp;amp;lt;ssid&amp;amp;gt; &amp;amp;lt;password&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# CLI 通过本地 IPC 把命令发给 &amp;lt;code&amp;gt;bflbwifid&amp;lt;/code&amp;gt;&lt;br /&gt;
# daemon 调用 &amp;lt;code&amp;gt;libbflbwifi&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;libbflbwifi&amp;lt;/code&amp;gt; 通过 &amp;lt;code&amp;gt;tty&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;vchan&amp;lt;/code&amp;gt; backend 下发控制消息&lt;br /&gt;
# device 侧 &amp;lt;code&amp;gt;ATModule&amp;lt;/code&amp;gt; 执行 Wi-Fi 控制&lt;br /&gt;
# device 侧上报响应和状态，host 侧刷新状态并返回结果&lt;br /&gt;
&lt;br /&gt;
=== 6.2 数据面 ===&lt;br /&gt;
&lt;br /&gt;
# host 网络流量进入 &amp;lt;code&amp;gt;mr_eth0&amp;lt;/code&amp;gt;&lt;br /&gt;
# kernel/msg_router 通过 SDIO 与 device 通信&lt;br /&gt;
# device 侧 &amp;lt;code&amp;gt;nethub&amp;lt;/code&amp;gt; 把 host data 转给当前 active Wi-Fi&lt;br /&gt;
# Wi-Fi RX 包经过 &amp;lt;code&amp;gt;nethub&amp;lt;/code&amp;gt; filter 判断后，决定是本地处理、发给 host，还是两边都处理&lt;br /&gt;
&lt;br /&gt;
== 7. 推荐阅读顺序 ==&lt;br /&gt;
&lt;br /&gt;
* 首次 bringup：[[NetHubQuickBringup|NetHub 快速上手]]&lt;br /&gt;
* 理解 &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; 通道：[[NetHubVirtualChannel|NetHub USER Virtual Channel]]&lt;/div&gt;</summary>
		<author><name>张良</name></author>
	</entry>
</feed>