WHC 概述

支持的芯片[ RTL8721Dx ][...][ RTL8720E ][ RTL8710E ][ RTL8726E ][ RTL8713E ]

WHC 传输接口

Wi-Fi

BT

SDIO

Y

Y

SPI

Y

Y

USB

Y

Y

UART

X

Y

Mix Mode

SDIO/SPI/USB

SDIO/SPI/UART

WHC 介绍

WHC 架构

在 WHC(Wi-Fi Host Control) 方案中,Ameba 作为网卡通过 UART/SPI/SDIO/USB 与主机 MCU 连接,为 Host 提供网络接入能力,WHC 的架构图如下所示:

../../_images/fullmac_architecture_diagram.svg

WHC 架构优势

  • 多协议硬件接口支持:支持 UART、SPI、SDIO、USB 等多种物理层接口,满足不同场景的带宽与实时性需求。

  • 跨平台开发兼容性:支持 Linux、FreeRTOS、Zephyr 作为 Host 开发平台,降低移植成本。

  • Linux 平台深度适配,原生兼容 Linux 标准 wpa_supplicant(WPA_STD) 和 cfg80211 无线框架,并支持如下增强功能:

    • SME(由 wpa_supplicant 实现 MLME) 或非 SME 模式

    • 支持 P2P/NAN

WHC Wi-Fi 架构

WPAoH 与 WPAoD

根据 wpa_supplicant 的位置,WHC 分为 WPAoH (wpa_supplicant on Host) 与 WPAoD (wpa_supplicant on Device) 两种架构 (其中 Linux Host 跑 cfg80211 属于 WPAoH 架构):

  • API_PATH

    • 定义:Device 端驱动与 Host wpa_supplicant 的标准化通信接口。

    • 用途:仅当使用 WPAoH 模式时使用,供 SDK 内部调用。

    • 配置:需通过 Menuconfig 按指导手动启用。

  • CMD_PATH

    • 定义:Host 与 Device 间的非标准 API 数据传输通道(基于私有协议)。

    • 用途:CMD_PATH 多数 API 为 SDK 内部使用。

    • 配置:所有模式默认开启,无额外配置。

  • CUST_PATH

    • 定义:基于 CMD_PATH ,我们为客户提供了专门的 API,用于客户定制化的任意数据传输,我们称为 CUST_PATH。

    • 功能 1:通用数据传输,支持 Host 与 Device 间任意数据交互。

    • 功能 2:WPAoD 模式下,标准 Wi-Fi API 不可用,所有的 Wi-Fi 控制都通过 CUST_PATH 实现。

    • 配置:所有模式默认开启,无额外配置。

    • 参考: CUST_PATH

WHC 设备端 TCP/IP 保活

WPAoH 和 WPAoD 都可以选择在设备端运行 TCPIP 协议栈:

  • Device 端 LWIP 和 Host 端 TCP/IP 协议栈并行运行,Device 端 LWIP 用于提供必要的保活机制,减少 Host 唤醒次数(IP Camera 场景下续航大幅提升)

  • Device 端的 LWIP 协议栈可以预处理部分数据包,实现 Host 流量预过滤

WHC Wi-Fi 配置选项及模式

MENU CONFIG

WPAoD

WPAoH (cfg80211 Host)

WHC SUPPLICANT OFFLOAD

Y

N

WHC DEV TCPIP KEEPALIVE

O

O

WHC WIFI API PATH

N

Y

WHC CMD PATH

Y

Y

Status

Ready

Ready

  • WPAoH 和 WPAoD 的选择受 Support WHC SUPPLICANT OFFLOAD 的控制

  • 可选择的设备端 TCP/IP 保活

备注

WPAoD 模式下 Device 端的 wpa_supplicant 使用 WPA_LITE:

  • WPA_LITE:专为 Realtek 芯片优化的轻量级 wpa_supplicant 实现,通过更小的 code size 和内存占用,实现最基本的连线功能

  • WPA_STD:标准的 Linux wpa_supplicant,支持完整功能集,可以提供 P2P/NAN/SME 等高级功能

备注

MENU CONFIG

以上配置选项对应 Menuconfig 路径 CONFIG WHC ITNF > FULLMAC CONFIG :

(Top) -> CONFIG WHC INTF -> FULLMAC config
----Configuration----
    (X) Support WHC CMD PATH
    (X) Support WHC WIFI API PATH
    ( ) Support WHC SUPPLICANT OFFLOAD
    ( ) Support WHC DEV TCPIP KEEPALIVE

WHC Wi-Fi 文件目录

├─ whc
│  ├─ README.md
│  ├─ CMakeLists.txt
│  ├─ whc_def.h
│  ├─ whc_dev
│  │  ├─ ipc
│  │  │  ├─ whc_ipc_dev_api.c
│  │  │  ├─ whc_ipc_dev_trx.c
│  │  │  ├─ whc_ipc_dev_trx.h
│  │  │  └─ whc_ipc_device.c
│  │  ├─ sdio
│  │  │  ├─ whc_sdio_dev.c
│  │  │  ├─ whc_sdio_dev.h
│  │  │  ├─ whc_sdio_drv.c
│  │  │  └─ whc_sdio_drv.h
│  │  ├─ spi
│  │  │  ├─ whc_spi_dev.c
│  │  │  ├─ whc_spi_dev.h
│  │  │  ├─ whc_spi_drv.c
│  │  │  └─ whc_spi_drv.h
│  │  ├─ usb
│  │  │  ├─ whc_usb_dev.c
│  │  │  └─ whc_usb_dev.h
│  │  ├─ whc_dev.h
│  │  ├─ whc_dev_api.c
│  │  ├─ whc_dev_api.h
│  │  ├─ whc_dev_api_path.c
│  │  ├─ whc_dev_api_path.h
│  │  ├─ whc_dev_app.c
│  │  ├─ whc_dev_cust_evt.c
│  │  ├─ whc_dev_cust_evt.h
│  │  ├─ whc_dev_msg_queue.c
│  │  ├─ whc_dev_msg_queue.h
│  │  ├─ whc_dev_protocal_offload.c
│  │  ├─ whc_dev_protocal_offload.h
│  │  ├─ whc_dev_tcpip.c
│  │  ├─ whc_dev_tcpip.h
│  │  ├─ whc_dev_trx.c
│  │  └─ whc_dev_trx.h
│  ├─ whc_host_rtos
│  │  ├─ ipc
│  │  │  ├─ whc_ipc_host.c
│  │  │  ├─ whc_ipc_host_api.c
│  │  │  ├─ whc_ipc_host_api.h
│  │  │  ├─ whc_ipc_host_api_basic.c
│  │  │  ├─ whc_ipc_host_api_ext.c
│  │  │  ├─ whc_ipc_host_trx.c
│  │  │  ├─ whc_ipc_host_trx.h
│  │  │  └─ whc_ipc_host_zephyr.c
│  │  ├─ spi
│  │  │  ├─ whc_spi_host.c
│  │  │  ├─ whc_spi_host.h
│  │  │  ├─ whc_spi_host_trx.c
│  │  │  └─ whc_spi_host_trx.h
│  │  ├─ sdio
│  │  │  ├─ rtw_sdio_drvio.c
│  │  │  ├─ rtw_sdio_drvio.h
│  │  │  ├─ whc_sdio_host.c
│  │  │  ├─ whc_sdio_host.h
│  │  │  ├─ whc_sdio_init.c
│  │  │  ├─ whc_sdio_host_trx.c
│  │  │  └─ whc_sdio_host_trx.h
│  │  ├─ whc_host.h
│  │  ├─ whc_host_api.c
│  │  ├─ whc_host_api.h
│  │  ├─ whc_host_api_basic.c
│  │  ├─ whc_host_api_ext.c
│  │  ├─ whc_host_app.c
│  │  ├─ whc_host_app.h
│  │  ├─ whc_host_init.c
│  │  ├─ whc_host_cust_evt.c
│  │  ├─ whc_host_cust_evt.h
│  │  └─ whc_rtos
│  │     ├─ os_wrapper_memory.c
│  │     ├─ os_wrapper_mutex.c
│  │     └─ os_wrapper_semaphore.c
│  ├─ whc_ipc.h
│  ├─ whc_ipc_cfg.h
│  ├─ whc_ipc_msg_queue.c
│  └─ whc_ipc_msg_queue.h

WHC Wi-Fi 驱动组成与移植

设备端驱动

主机端驱动

CUST_PATH

  • WPAoH 模式:若除了标准的 Wi-Fi/BT/Socket 编程之外,客户还有 Host 与 Device 之间客制化的通信需求,可以使用 CUST_PATH 。

  • WPAoD 模式:Wi-Fi 无法使用标准的 Wi-Fi API,此时一定会使用 CUST_PATH。

  • 请参考: CUST_PATH

WHC Wi-Fi 吞吐量

Interface

Wi-Fi driver location

Item

WPAoD

WPAoH

SDIO [1]

KM4 (334MHz)

TCP RX

49.7

53.5

TCP TX

50.1

51.2

UDP RX

58.9

59.6

UDP TX

56.5

56.6

SPI [2]

KM4 (334MHz)

TCP RX

16.8

17.1

TCP TX

17.4

17.7

UDP RX

19.1

18.6

UDP TX

18.9

18.4

USB [3]

TCP RX

TCP TX

UDP RX

UDP TX

  • [1] Device 代码运行在 Flash 中,主机:Raspberry Pi 5 Model B Rev 1.1,root: Linux raspberrypi 6.6.31+rpt-rpi-2712

  • [2] Device 代码运行在 Flash 中,主机:Raspberry Pi 5 Model B Rev 1.0,root: Linux raspberrypi 6.6.31+rpt-rpi-2712