SDK 简介

SDK 描述

Realtek Ameba-IoT 系列产品的 FreeRTOS SDK 托管于 GitHub:https://github.com/Ameba-AIoT/ameba-rtos

该 SDK 包含了 Wi-Fi、蓝牙(BT)等基础功能,可作为开发的基础 SDK。对于一些高阶功能,例如 AI Voice、TensorFlow Lite(tflite)、GUI、Audio 等,则由其他独立仓库进行托管和维护。

备注

这些高阶功能依赖于基础 SDK,建议在使用时选择官方指定的基础 SDK 版本,而不是直接使用最新的基础 SDK 版本,以确保兼容性和稳定性。

SDK 由以下四部分组成:

SDK
  ├── amebaxxx_gcc_project        用于配置、编译生成固件,包含 Kconfig、cmake、ld、library 等
  ├── component                   FreeRTOS、SoC、mbed API、Wi-Fi、network 等组件
  ├── tools                       工具
  └── cmake                       编译抽象层

project

每个 SoC 对应一个项目目录 amebaxxx_gcc_project,该目录是该 SoC 的编译入口。每个 SoC 可能包含多个 MCU,每个 MCU 在 amebaxxx_gcc_project 下拥有一个独立的子目录 project_xx,其中包含了默认主程序入口、链接脚本(linker script)、以及 Bootloader 和 Application Image 的 CMake 编译配置文件等。

amebaxxx_gcc_project 目录下还包含以下子目录:

  • utils:调试时使用的脚本工具及自动化编译所需的配置文件

  • menuconfig:用于支持 make menuconfig 的配置系统,该目录配置的时候产生

  • build:在 CMake 编译以后产生,存放中间文件

amebaxxx_gcc_project/
  ├── project_xx/              每个 MCU 的专属配置目录
  ├── project_xx/              每个 MCU 的专属配置目录,SoC 中有多个 MCU,就会有多个目录
  │   ├── src/                 主程序源码
  │   ├── inc/                 头文件 FreeRTOSConfig.h 以及 build_info.h 等
  │   └── asdk/                ld、CMake 编译系统
  ├── utils/                   调试和自动化编译脚本及配置
  ├── menuconfig/              支持 make menuconfig 的配置项定义,配置后产生
  └── build/                   在 CMake 编译以后产生,存放中间文件

component

该目录包含 SDK 的核心功能组件,供上层应用调用。常见的组件如下表所示:

条目

描述

at_cmd

AT 命令支持模块

audio

音频 codec 驱动,支持:alc5616/alc5640/alc5651/alc5660/alc5679/alc5680/sgtl5000

bluetooth

蓝牙协议栈源码及相关库文件

example

应用示例集合,包括:audio、network、ota、usb 、外设等功能示例

file_system

文件系统实现,包含:fatfs、littlefs、ftl、kv、vfs 等

lwip

LWIP 协议栈 API 及其源代码

network

网络协议支持,包括:

  • cJSON

  • CoAP

  • DHCP

  • HTTP/2

  • HTTP Client(httpc)

  • HTTP Server(httpd)

  • mDNS

  • MQTT

  • Ping

  • iPerf

  • SNTP

  • WebSocket

  • XML

os

FreeRTOS 实时操作系统源代码及OS APIs wrapper层实现

soc

SoC 相关的核心模块,包括:

  • app:系统监控和 Shell 工具

  • loader:Bootloader 和 GDB Loader

  • cmsis:Arm 头文件,定义 CPU 寄存器及基础操作 API

  • cmsis-dsp:Arm CMSIS-DSP 数字信号处理库

  • fwlib:底层驱动程序,如 Audio Codec、SPORTS、UART、I2C、SPI、Timer、PWM 等

  • img3:Trustzone支持(可能未启用)

  • hal:基于 Raw APIs 封装的 Mbed APIs

  • misc:其他杂项功能,如 crashdump、OTA、PMU 等

  • swlib:ROM 提供的标准软件库函数,如 _memcpy_memcmp

  • usrcfg:用户自定义配置文件

ssl

安全通信协议栈,基于 mbed TLS 实现

usb

USB class driver 及验证代码

utils

工具类模块,包括:

  • IPC(多核间通信)

  • Ringbuffer(环形缓冲区)

  • Unit Test Framework(单元测试框架)

wifi

Wi-Fi 功能模块,提供以下接口:

  • WIFI 网卡模式:作为传统WIFI 卡片使用

  • R-mesh: Realtek WIFI Mesh

  • CSI : WIFI sensing

  • KVR:WIFI 漫游

  • WPS:Wi-Fi Protected Setup

  • MCC:WIFI 多信道共存

  • Promisc :WIFI 混杂模式,可以收取所有当前channel 数据包

  • Fast connect :WIFI 重启后迅速连接

tools

该目录包含 IC 开发过程中需要用到的工具。

条目

描述

TraceTool

用于打印日志和发送指令 Trace Tool

ImageTool

用于下载固件 Image Tool

DownloadServer

基于 socket 的 OTA server 程序

DownloadServer (HTTP)

基于 HTTP 的 OTA server 程序

iperf

用于 Wi-Fi 吞吐量测试

littlefs

littlefs 文件系统生成

meta_tools

VSCode 插件 SDK 端适配工具集

关键头文件

SDK 中的一些关键头文件及说明如下表所示:

条目

描述

位置

basic_types.h

  • RTK_SUCCESS/RTK_FAIL

  • TRUE/FALSE

  • ENABLE/DISABLE

  • ON/OFF

  • NULL

  • u8/u16/u32/u64

  • BOOL

  • BIT x

component/soc/amebaxxx/fwlib/include

section_config.h

链接脚本中各种Section的定义:

  • BOOT_RAM_DATA_SECTION

  • IMAGE2_RAM_TEXT_SECTION

ameba_soc.h

提供底层驱动的Raw API(推荐使用)

相对于mbed API,Raw API提供更灵活丰富和高效的硬件配置接口

mbed API headers

基于Raw API的高级封装接口,提供的功能相对单一

component/soc/amebaxxx/hal