支持的芯片

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无线框架

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

../../_images/wifi_fullmac_architecture.svg

FullMAC architecture

备注

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

Function

Description

SDIO

PB6

SDIO_DAT2

SDIO pins

PB7

SDIO_DAT3

PB8

SDIO_CMD

PB9

SDIO_CLK

PB13

SDIO_DAT0

PB14

SDIO_DAT1

SPI

PB24

SPI_MOSI

SPI pins

PB25

SPI_MISO

PB23

SPI_CLK

PB26

SPI_CS

PB8

DEV_TX_REQ

PB9

DEV_READY

UART

PB14

SDIO_DAT1

SDIO_DAT1

PB14

SDIO_DAT1

SDIO_DAT1

备注

  • 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中断,可切换为polling模式

SDIO转接板

为避免飞线信号干扰,推荐使用专用转接板连接SDIO引脚:

../../_images/sdio_adapter_board.jpg

FullMAC SDIO转接板实物图

备注

瑞昱官方转接板即将上市,当前可邮件联系<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:

      ----General Config----
          CONFIG TrustZone --->
          CONFIG Link Option --->
            (FLASH) MG1(Bootloader) running on FLASH or PSRAM?
            (PSRAM) MG2(Application) running on FLASH or PSRAM?
          CONFIG Mass Production --->
          ... --->
      
    2. 找到 CONFIG WHC ITNF > WHC MODE (FULLMAC),选择需要的接口:

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

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

FullMAC Wi-Fi 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 驱动移植指南

FullMAC BT 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] 测试条件基于Device code跑在psram上,host driver跑在8721Dx (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