支持的芯片

Ameba SoC

RTL8721Dx

RTL8726E

RTL8720E

RTL8730E

支持状态

Y

N

N

N

FullMAC 概述

在 WHC FullMAC 方案中,Ameba 作为网卡通过 UART/SPI/SDIO/USB 与主机 MCU 连接,为 Host 提供网络接入能力。

FullMAC 架构

核心功能特性

  • 建立 Host 与 Device 之间的 UART/SPI/SDIO/USB 传输通道

  • 兼容 Linux 标准 wpa_supplicant 和 cfg80211 无线框架

  • 传输接口支持 Wi-Fi/BT 指令传输及客制化命令扩展

FullMAC 的架构图如下所示:

../../_images/fullmac_architecture.svg

备注

Host操作系统支持

  • Linux

  • FreeRTOS

  • Zephyr

备注

蓝牙协议栈适配

  • Linux HOST:Bluez 协议栈

  • Zephyr HOST:Zephyr BT 协议栈

  • FreeRTOS:Realtek BT 协议栈

FullMAC 传输接口规范

Interface

Wi-Fi

BT

SDIO

Y

Y

SPI

Y

Y

USB

Y

X

UART

X

X

SDIO (Wi-Fi) + UART (BT)

Y

Y

SPI (Wi-Fi) + UART (BT)

Y

Y

USB (Wi-Fi) + UART (BT)

X

X

FullMAC 功能特性

Features

Linux host

FreeRTOS host

Zephyr host

Wi-Fi API

Standard Linux APIs

FreeRTOS Wi-Fi APIs

Standard Zephyr APIs

Wi-Fi mode

  • Station

  • SoftAP

  • NAN

  • P2P GO

  • Station

  • SoftAP

  • Station

  • SoftAP

Wi-Fi security

  • Open

  • WPA

  • WPA2

  • WPA3

  • Open

  • WPA

  • WPA2

  • WPA3

  • Open

  • WPA

  • WPA2

  • WPA3

Wowlan

Y

Y

Y

Bluetooth features

  • BLE 5.0

  • BLE 5.2

  • Bluetooth 5.3

  • BLE 5.0

  • BLE 5.2

  • Bluetooth 5.3

  • BLE 5.0

  • BLE 5.2

  • Bluetooth 5.3

FullMAC 文件目录

Wi-Fi

├─ whc
│  ├─ README.md
│  ├─ 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_bridge_sdio_dev.c
│  │  │  ├─ whc_bridge_sdio_dev.h
│  │  │  ├─ whc_fullmac_sdio_dev.c
│  │  │  ├─ whc_fullmac_sdio_dev.h
│  │  │  ├─ whc_sdio_drv.c
│  │  │  └─ whc_sdio_drv.h
│  │  ├─ spi
│  │  │  ├─ whc_bridge_spi_dev.c
│  │  │  ├─ whc_bridge_spi_dev.h
│  │  │  ├─ whc_fullmac_spi_dev.c
│  │  │  ├─ whc_fullmac_spi_dev.h
│  │  │  ├─ whc_spi_dev.c
│  │  │  └─ whc_spi_dev.h
│  │  ├─ usb
│  │  │  ├─ whc_usb_dev.c
│  │  │  └─ whc_usb_dev.h
│  │  ├─ whc_bridge_dev_api.c
│  │  ├─ whc_bridge_dev_api.h
│  │  ├─ whc_dev.h
│  │  ├─ whc_dev_api.c
│  │  ├─ whc_dev_api.h
│  │  ├─ whc_dev_app.c
│  │  ├─ whc_dev_bridge.c
│  │  ├─ whc_dev_bridge.h
│  │  ├─ 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_struct.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
│  │  ├─ whc_host.h
│  │  ├─ whc_host_api.c
│  │  ├─ whc_host_api.h
│  │  ├─ whc_host_api_basic.c
│  │  ├─ whc_host_api_ext.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

Bluetooth

FullMAC 硬件配置

接口连接

Ameba 与树莓派引脚对应关系如下:

Interface

SoC pin

Function

SDIO

PB6

SDIO_DAT2

PB7

SDIO_DAT3

PB8

SDIO_CMD

PB9

SDIO_CLK

PB13

SDIO_DAT0

PB14

SDIO_DAT1

SPI

PB24

SPI_MOSI

PB25

SPI_MISO

PB23

SPI_CLK

PB26

SPI_CS

PB8

DEV_TX_REQ

PB9

DEV_READY

UART

PB4

UART_RX

PB5

UART_TX

备注

  • SPI DEV_TX_REQ:Ameba 通过此引脚上升沿通知 Host 有数据待发送

  • SPI DEV_READY:Ameba 状态指示信号

    • 高电平(1):设备就绪,可接收数据

    • 低电平(0):设备繁忙,暂停传输

备注

  • 默认使用 Ameba SDK 预定义 SDIO 引脚,如需修改需调整以下文件中 SPDIO_Board_Init() 函数中的 pinmux 配置:

    component/soc/amebadplus/hal/src/spdio_api.c

  • Host 端 SDIO 中断模式要求:

    • SDIO_DATA1 必须配置为 SDIO 功能(非GPIO)。

    • 若 Host 不支持 SDIO 中断,可切换为轮询模式。

SDIO 转接板

Realtek 提供了方便对接 mini SD 卡槽的转接板供客户选择,推荐使用专用转接板连接 SDIO 引脚。

../../_images/sdio_adapter_board.jpg

FullMAC SDIO 转接板实物图

备注

Realtek 官方转接板即将上市,当前可邮件联系 <claire_wang@realsil.com.cn> 申请样品。

树莓派直连方案

高速传输场景建议直接将 Ameba SDIO 引脚焊接至树莓派 GPIO。

../../_images/connection_with_raspberry_pi.jpg

Ameba与树莓派直连示意图

FullMAC Wi-Fi 移植指南

Device 驱动移植

  1. 在目录 {SDK}/amebadplus_gcc_project 中执行 ./menuconfig.py

    1. 找到 CONFIG Link Option > IMG2(Application) running on FLASH or PSRAM?,选择 PSRAM

      (Top) -> CONFIG Link Option
      ----Configuration----
          IMG1(Bootloader) running on FLASH or PSRAM?
          IMG2(Application) running on FLASH or PSRAM?
           ( ) FLASH
           (X) PSRAM
      CONFIG Mass Production --->
      ... --->
      
    2. 找到 CONFIG WHC ITNF > WHC MODE > FULLMAC_DEV > HW INTERFACE,选择需要的接口。

      (Top) -> CONFIG WHC INTF
      ----Configuration----
          WHC MODE (FULLMAC_DEV) --->
          HW INTERFACE --->
              ( ) WHC_INTF_SDIO
              ( ) WHC_INTF_USB
              ( ) WHC_INTF_SPI
          WPA Lite location (HOST) --->
          Debug --->
      
  2. 执行 ./build.py 生成 km4_boot_all.binkm0_km4_app.bin

  3. 使用 image tool 下载固件到开发板。

Host 驱动移植

Ameba 作为 FullMAC Host 使用指南

  1. 环境配置

    1. 在目录 {SDK}/amebadplus_gcc_project 执行配置工具

    ./menuconfig.py
    
    1. 导航至 CONFIG WHC ITNF > WHC MODE,选择传输接口:

      (Top) -> CONFIG WHC INTF
      ----Configuration----
          WHC MODE (FULLMAC_HOST) --->
          HW INTERFACE (WHC_INTF_SPI) --->
      
  2. 固件编译

    生成目标文件:

    ./build.py
    

    输出文件

    • km4_boot_all.bin

    • km0_km4_app.bin

  3. 固件烧录

    使用专用烧录工具将固件写入开发板

第三方平台移植

使用其他 Host 芯片时,需将 component/os/freertos 目录移植至目标系统。

FullMAC BT 移植指南

Device 驱动移植

Host 驱动移植

FullMAC Wi-Fi 吞吐量

Interface

Item

BW 20M (Mbps)

SPI [1]

TCP RX

8.3

TCP TX

9.9

UDP RX

15.8

UDP TX

17.6

  • [1] 设备代码运行在 PSRAM 中,主机驱动程序运行 RTL8721Dx上(KM4:260MHz)

FullMAC 内存占用量

Device

以 Wi-Fi 运行在 KM0 上为例:

项目

KM0

KM4

txt

270KB

31KB

rodata

51KB

9KB

data+bss

17KB

4KB

heap

~68KB

~2.5KB

Host

Host

Item

whc

SPI

txt

4.8KB

bss

~3.5KB

heap

~5KB