NetHubQuickBringup:修订间差异

来自Bouffalo Lab Docs
跳转到导航 跳转到搜索
张良留言 | 贡献
无编辑摘要
张良留言 | 贡献
无编辑摘要
第2行: 第2行:


本文档面向首次接触 NetHub 的客户,目标是尽快完成 device 和 host 的 bringup。
本文档面向首次接触 NetHub 的客户,目标是尽快完成 device 和 host 的 bringup。
[[index.php?title=文件:Nethub_sdio_quickstart_demo.gif|链接=文件:Nethub_sdio_quickstart_demo.gif|NetHub SDIO 快速入门演示]]
 
[[文件:Nethub_sdio_quickstart_demo.gif | NetHub SDIO 快速入门演示]]


== 1. 方案概览 ==
== 1. 方案概览 ==

2026年3月13日 (五) 09:31的版本

NetHub 快速上手

本文档面向首次接触 NetHub 的客户,目标是尽快完成 device 和 host 的 bringup。

NetHub SDIO 快速入门演示

1. 方案概览

  • 当前主路径是 SDIO
  • device 侧运行 Wi-Fi backend(fhost / wl80211)+ lwIP
  • nethub 负责把 device 侧 Wi-Fi 能力桥接到 host
  • 控制通道和 USER virtual channel 都承载在同一条 host link 上

当前生效目录:

  • device 侧
    • components/net/nethub
    • examples/wifi/nethub
  • host 侧
    • bsp/common/msg_router/linux_host/kernel
    • bsp/common/msg_router/linux_host/userspace/nethub

2. Bringup 前先确认两项选择

2.1 选择 Wi-Fi backend

默认配置:

  • 不打开 CONFIG_WL80211
  • 使用 fhost

如果要切到 wl80211,在 examples/wifi/nethub/defconfig 中打开:

CONFIG_WL80211=y

说明:

  • fhostwl80211 是二选一关系
  • 当前 nethub 同时支持这两种 device Wi-Fi backend

2.2 选择控制通道

device 与 host 需要匹配:

device 配置 host 启动方式
CONFIG_NETHUB_AT_USE_VCHAN=n ./output/bflbwifid./output/bflbwifid -c tty -p /dev/ttyAT0
CONFIG_NETHUB_AT_USE_VCHAN=y ./output/bflbwifid -c vchan

默认配置是:

CONFIG_NETHUB_AT_USE_VCHAN=n

即控制通道默认走 TTY

补充说明:

  • host 侧会同时编入 tty + vchan
  • 实际选择发生在 bflbwifid 运行时

3. 编译并烧录 device 固件

cd examples/wifi/nethub

# BL616
make CHIP=bl616 BOARD=bl616dk

# BL616CL
make CHIP=bl616cl BOARD=bl616cldk

# BL618DG
make CHIP=bl618dg BOARD=bl618dgdk CPU_ID=ap

烧录示例:

cd examples/wifi/nethub
make flash CHIP=bl618dg COMX=/dev/ttyUSB0

常见关键配置:

  • CONFIG_NETHUB=y
  • CONFIG_MR_NETDEV=y
  • CONFIG_MR_TTY=y
  • CONFIG_MR_VIRTUALCHAN=y
  • CONFIG_NETHUB_AT_USE_VCHAN=n

4. 编译并启动 host 软件

4.1 编译

cd bsp/common/msg_router/linux_host/userspace/nethub
./build.sh build

产物:

  • output/mr_sdio.ko
  • output/bflbwifid
  • output/bflbwifictrl
  • output/libnethub_vchan.a
  • output/nethub_vchan_app

4.2 加载内核模块

cd bsp/common/msg_router/linux_host/userspace/nethub
sudo ./build.sh load

如需卸载:

sudo ./build.sh unload

4.3 启动 host daemon

默认 TTY 模式:

sudo ./output/bflbwifid

显式指定 TTY:

sudo ./output/bflbwifid -c tty -p /dev/ttyAT0

VCHAN 模式:

sudo ./output/bflbwifid -c vchan

5. 基础验证流程

建议按下面顺序验证:

5.1 查看状态

sudo ./output/bflbwifictrl status

5.2 扫描 AP

sudo ./output/bflbwifictrl scan

5.3 连接 AP

sudo ./output/bflbwifictrl connect_ap "<ssid>" "<password>"

5.4 再次查看状态

sudo ./output/bflbwifictrl status

如果连接成功,通常可以看到:

  • backend 已连接
  • Wi-Fi 状态为 CONNECTEDGOTIP
  • 获取到地址后显示 IP / Gateway / Netmask / DNS

5.5 断开连接

sudo ./output/bflbwifictrl disconnect

6. 常用命令

当前公共命令固定为 9 条:

  • connect_ap
  • disconnect
  • scan
  • status
  • version
  • reboot
  • ota
  • start_ap
  • stop_ap

7. SDIO 硬件信息

当前客户 bringup 路径建议直接按 SDIO 使用。 USB / SPI 目前仍保留架构骨架,不作为当前推荐 bringup 路径。

7.1 芯片支持情况

接口类型 BL616 / BL618 BL618DG BL616CL
SDIO 支持 支持 支持
USB 规划中 规划中 规划中
SPI 规划中 规划中 规划中

7.2 SDIO 引脚

功能引脚 BL616 / BL618 BL618DG BL616CL
SDIO_DAT2 GPIO10 GPIO43 GPIO6
SDIO_DAT3 GPIO11 GPIO44 GPIO7
SDIO_CMD GPIO12 GPIO45 GPIO8
SDIO_CLK GPIO13 GPIO46 GPIO9
SDIO_DATA0 GPIO14 GPIO47 GPIO10
SDIO_DATA1 GPIO15 GPIO48 GPIO11

8. USER Virtual Channel

如果客户需要在 host 与 device 之间传输私有消息,可使用 USER virtual channel

说明:

  • USER 通道和控制通道是并列关系
  • 它不是独立物理接口,而是承载在当前 host link 上的逻辑通道

device 侧头文件:

  • components/net/nethub/include/nethub_vchan.h

host 侧头文件:

  • bsp/common/msg_router/linux_host/userspace/nethub/virtualchan/nethub_vchan.h

更多说明见 NetHub USER Virtual Channel

9. 常见问题

9.1 bflbwifid 启动失败

优先检查:

  • device 和 host 的控制 backend 是否匹配
  • /dev/ttyAT0 是否存在
  • mr_sdio.ko 是否已经成功加载
  • SDIO 硬件链路是否正常

9.2 connect_ap 成功但 host 没有网络

优先检查:

  • status 是否已经进入 GOTIP
  • mr_eth0 是否已经获取地址
  • 系统里的 NetworkManagerdhcpcd 等服务是否覆盖了 NetHub 配置

说明:

  • build.sh 默认以 ENABLE_NETIF_AUTO_CONFIG=1 编译 userspace
  • device 上报 GOTIP 后,host 会自动配置 mr_eth0 的 IP、网关和 DNS

9.3 build.sh unload 提示模块被占用

优先确认:

  • 是否还有 bflbwifid 正在运行
  • 是否还有 nethub_vchan_app 正在运行

通常直接执行:

sudo ./build.sh unload

脚本会先尝试停止已知持有者,再执行卸载。

10. 延伸阅读