Nethub架构和开发手册:修订间差异
跳转到导航
跳转到搜索
无编辑摘要 |
|||
| (未显示同一用户的3个中间版本) | |||
| 第1行: | 第1行: | ||
= Nethub = | |||
* | '''Nethub''' 是一个开源解决方案,使 Bouffalolab SoCs/模块(如 BL616/BL618D/BL616L)能够作为外部主机系统的'''无线通信协处理器'''。 | ||
它允许'''主机设备'''(基于 Linux 的系统或微控制器 MCU)通过'''标准接口'''(如USB、SPI、SDIO 或 UART)添加 Wi-Fi 和 BLE 功能。 | |||
=== 主要特性 === | |||
* '''灵活的连接方式''':Wi-Fi + BLE | |||
* '''广泛的主机支持''':支持基于 Linux 和 MCU 的系统 | |||
* '''多种接口''':SPI、SDIO、UART | |||
* '''共享网络''':WiFiSoc 和主机可以共享相同的 IP 地址 | |||
* '''高能效''':为电池供电的应用场景提供低功耗模式 | |||
=== 高层架构 === | |||
<pre> | |||
┌─────────────────────────────────────────┐ | |||
│ Host (Linux/RTOS) │ | |||
├─────────────────────────────────────────┤ | |||
│ UserAPP │ NetInterface │ RpcCtrl │ | |||
└─────────────────────────────────────────┘ | |||
│ | |||
USB/SDIO/SPI/UART/GPIO | |||
│ | |||
┌─────────────────────────────────────────┐ | |||
│ Device Module │ | |||
├─────────────────────────────────────────┤ | |||
│ Lowerpower │ wifi │ BLE │ RpcCtrl │ | |||
└─────────────────────────────────────────┘ | |||
</pre> | |||
== Nethub 变体 == | |||
=== WiFiCard-Linux === | |||
最适合需要标准 Wi-Fi 和 Bluetooth 集成的 '''Linux 主机''': | |||
* 作为原生 802.11 无线设备 | |||
* 可通过 <code>cfg80211</code> / <code>wpa_supplicant</code> 配置 | |||
* 支持 <code>NetworkManager</code> | |||
* 通过标准 HCI 接口使用 BLE | |||
---- | |||
=== Nethub-Linux === | |||
专为 '''Linux 主机'''设计,采用自定义轻量级基于 RPC 的控制: | |||
* Ethernet 802.3 接口 | |||
* 通过基于 protobuf 的 RPC 进行 Wi-Fi 配置 | |||
* 完全可定制的 API | |||
* 通过标准 HCI 使用 BLE | |||
* 支持 Python 或 C 集成 | |||
* 当主机关机时,BouffaloLab Soc 保持网络连接 | |||
---- | |||
=== Nethub-MCU === | |||
针对'''资源受限的 MCU'''优化: | |||
* 最小的内存占用 | |||
* 高效的功耗运行 | |||
* 已提供 STM32 作为主机的移植示例和 Demo | |||
* 即使主机处于深度睡眠或关机状态,WiFiSoc 仍保持连接 | |||
---- | |||
== 变体对比 == | |||
{| class="wikitable" | |||
|- | |||
! 特征 !! WiFiCard-Linux !! Nethub-Linux !! Nethub-MCU | |||
|- | |||
| '''目标主机''' || Linux || Linux || MCU | |||
|- | |||
| '''Wi-Fi 配置''' || <code>cfg80211</code> || RPC || RPC | |||
|- | |||
| '''网络接口''' || 802.11 Wi-Fi || 802.3 Ethernet || 802.3 Ethernet | |||
|- | |||
| '''Device 和主机共用 IP''' || || ✅ || ✅ | |||
|- | |||
| '''电源管理''' || || ✅ || ✅ | |||
|- | |||
| '''Wi-Fi 模式''' || || STA, AP, STA+AP || STA, AP, STA+AP | |||
|- | |||
| '''总线接口''' || || USB, SDIO, SPI, UART(及组合) || USB, SDIO, SPI, UART(及组合) | |||
|- | |||
| '''Wi-Fi 安全''' || || WPA, WPA2, WPA3, Open || WPA, WPA2, WPA3, Open | |||
|- | |||
| '''标准''' || || 802.11 b/g/n/ax, BLE || 802.11 b/g/n/ax, BLE | |||
|- | |||
| '''支持的芯片''' || || BL616/BL616D/BL616L || BL616/BL616D/BL616L | |||
|} | |||
---- | |||
== 选择合适的变体 == | |||
{| class="wikitable" | |||
|- | |||
! 使用场景 !! 推荐变体 | |||
|- | |||
| 标准 Linux Wi-Fi 配置 (<code>NetworkManager</code>、<code>wpa_supplicant</code>) || '''WiFiCard-Linux''' | |||
|- | |||
| 需要对 Wi-Fi 进行自定义/专有控制的 Linux(例如,智能门锁门铃、行车记录仪等) || '''Nethub-Dualstack-Linux''' | |||
|- | |||
| 嵌入式 Linux 平台(如 Raspberry Pi、BeagleBone) || '''Nethub-Dualstack-Linux''' | |||
|- | |||
| 资源受限设备(低 RAM/CPU 的 MCU) || '''Nethub-Dualstack-MCU(甚至直接只用AT方案)''' | |||
|- | |||
| 自定义网络或重复协议栈(主机和 WiFiSoc 上相同 IP) || '''Nethub-Dualstack-Linux''' 或 '''Nethub-Dualstack-MCU''' | |||
|- | |||
| 需要同时使用 BLE 和 Wi-Fi 的 IoT 应用场景 || '''Any''' | |||
|- | |||
| 需要协议定制/深度包检测 || '''Nethub-Dualstack-Linux''' 或 '''Nethub-Dualstack-MCU''' | |||
|} | |||
---- | |||
== 文档与资源 == | |||
=== WiFiCard-Linux === | |||
... | |||
=== Nethub-Linux === | |||
'''主机端 (Host)''' | |||
{| class="wikitable" | |||
|- | |||
! 模块 !! 说明 | |||
|- | |||
| '''UserExt''' || 用户业务逻辑层,由用户自行开发 | |||
|- | |||
| '''EthernetDriver''' || 网络接口层,提供驱动源代码,将 SDIO 接口虚拟化为网卡。用户可使用对应 Linux 平台的工具链编译相关驱动 | |||
|- | |||
| '''VirtualChannel''' || WiFi 控制层,提供主机控制 Device 模块的接口,包括网络连接、断开、扫描、OTA 升级、用户私有数据传输等功能 | |||
|} | |||
'''Device端''' | |||
<blockquote> | |||
'''注意''':当前不支持从 SDIO 启动,因此 Device 模块需要配备 Flash 存储器。 | |||
</blockquote> | |||
{| class="wikitable" | |||
|- | |||
! 模块 !! 说明 | |||
|- | |||
| '''UserExt''' || 用户业务逻辑层,由用户自行开发 | |||
|- | |||
| '''Lowpower''' || 低功耗功能层,需要与主控制器进行交互,可以通过额外的 GPIO 实现触发唤醒功能 | |||
|- | |||
| '''Filter''' || 默认的 filter 处理规则,也支持用户自定义 | |||
|} | |||
=== Nethub-MCU === | |||
常见问题 | |||
*sdiowifi和nethub框架方案对比 | |||
* [[ATModule 协议格式]] | * [[ATModule 协议格式]] | ||
* | * | ||
2026年1月27日 (二) 12:50的最新版本
Nethub
Nethub 是一个开源解决方案,使 Bouffalolab SoCs/模块(如 BL616/BL618D/BL616L)能够作为外部主机系统的无线通信协处理器。
它允许主机设备(基于 Linux 的系统或微控制器 MCU)通过标准接口(如USB、SPI、SDIO 或 UART)添加 Wi-Fi 和 BLE 功能。
主要特性
- 灵活的连接方式:Wi-Fi + BLE
- 广泛的主机支持:支持基于 Linux 和 MCU 的系统
- 多种接口:SPI、SDIO、UART
- 共享网络:WiFiSoc 和主机可以共享相同的 IP 地址
- 高能效:为电池供电的应用场景提供低功耗模式
高层架构
┌─────────────────────────────────────────┐
│ Host (Linux/RTOS) │
├─────────────────────────────────────────┤
│ UserAPP │ NetInterface │ RpcCtrl │
└─────────────────────────────────────────┘
│
USB/SDIO/SPI/UART/GPIO
│
┌─────────────────────────────────────────┐
│ Device Module │
├─────────────────────────────────────────┤
│ Lowerpower │ wifi │ BLE │ RpcCtrl │
└─────────────────────────────────────────┘
Nethub 变体
WiFiCard-Linux
最适合需要标准 Wi-Fi 和 Bluetooth 集成的 Linux 主机:
- 作为原生 802.11 无线设备
- 可通过
cfg80211 /wpa_supplicant配置 - 支持
NetworkManager - 通过标准 HCI 接口使用 BLE
Nethub-Linux
专为 Linux 主机设计,采用自定义轻量级基于 RPC 的控制:
- Ethernet 802.3 接口
- 通过基于 protobuf 的 RPC 进行 Wi-Fi 配置
- 完全可定制的 API
- 通过标准 HCI 使用 BLE
- 支持 Python 或 C 集成
- 当主机关机时,BouffaloLab Soc 保持网络连接
Nethub-MCU
针对资源受限的 MCU优化:
- 最小的内存占用
- 高效的功耗运行
- 已提供 STM32 作为主机的移植示例和 Demo
- 即使主机处于深度睡眠或关机状态,WiFiSoc 仍保持连接
变体对比
| 特征 | WiFiCard-Linux | Nethub-Linux | Nethub-MCU |
|---|---|---|---|
| 目标主机 | Linux | Linux | MCU |
| Wi-Fi 配置 | cfg80211 |
RPC | RPC |
| 网络接口 | 802.11 Wi-Fi | 802.3 Ethernet | 802.3 Ethernet |
| Device 和主机共用 IP | ✅ | ✅ | |
| 电源管理 | ✅ | ✅ | |
| Wi-Fi 模式 | STA, AP, STA+AP | STA, AP, STA+AP | |
| 总线接口 | USB, SDIO, SPI, UART(及组合) | USB, SDIO, SPI, UART(及组合) | |
| Wi-Fi 安全 | WPA, WPA2, WPA3, Open | WPA, WPA2, WPA3, Open | |
| 标准 | 802.11 b/g/n/ax, BLE | 802.11 b/g/n/ax, BLE | |
| 支持的芯片 | BL616/BL616D/BL616L | BL616/BL616D/BL616L |
选择合适的变体
| 使用场景 | 推荐变体 |
|---|---|
标准 Linux Wi-Fi 配置 (NetworkManager、wpa_supplicant) |
WiFiCard-Linux |
| 需要对 Wi-Fi 进行自定义/专有控制的 Linux(例如,智能门锁门铃、行车记录仪等) | Nethub-Dualstack-Linux |
| 嵌入式 Linux 平台(如 Raspberry Pi、BeagleBone) | Nethub-Dualstack-Linux |
| 资源受限设备(低 RAM/CPU 的 MCU) | Nethub-Dualstack-MCU(甚至直接只用AT方案) |
| 自定义网络或重复协议栈(主机和 WiFiSoc 上相同 IP) | Nethub-Dualstack-Linux 或 Nethub-Dualstack-MCU |
| 需要同时使用 BLE 和 Wi-Fi 的 IoT 应用场景 | Any |
| 需要协议定制/深度包检测 | Nethub-Dualstack-Linux 或 Nethub-Dualstack-MCU |
文档与资源
WiFiCard-Linux
...
Nethub-Linux
主机端 (Host)
| 模块 | 说明 |
|---|---|
| UserExt | 用户业务逻辑层,由用户自行开发 |
| EthernetDriver | 网络接口层,提供驱动源代码,将 SDIO 接口虚拟化为网卡。用户可使用对应 Linux 平台的工具链编译相关驱动 |
| VirtualChannel | WiFi 控制层,提供主机控制 Device 模块的接口,包括网络连接、断开、扫描、OTA 升级、用户私有数据传输等功能 |
Device端
注意:当前不支持从 SDIO 启动,因此 Device 模块需要配备 Flash 存储器。
| 模块 | 说明 |
|---|---|
| UserExt | 用户业务逻辑层,由用户自行开发 |
| Lowpower | 低功耗功能层,需要与主控制器进行交互,可以通过额外的 GPIO 实现触发唤醒功能 |
| Filter | 默认的 filter 处理规则,也支持用户自定义 |
Nethub-MCU
常见问题
- sdiowifi和nethub框架方案对比
- ATModule 协议格式