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 |
网络协议支持,包括:
|
os |
FreeRTOS 实时操作系统源代码及OS APIs wrapper层实现 |
soc |
SoC 相关的核心模块,包括:
|
ssl |
安全通信协议栈,基于 mbed TLS 实现 |
usb |
USB class driver 及验证代码 |
utils |
工具类模块,包括:
|
wifi |
Wi-Fi 功能模块,提供以下接口:
|
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 |
|
component/soc/ |
section_config.h |
链接脚本中各种Section的定义:
|
|
ameba_soc.h |
提供底层驱动的Raw API(推荐使用) 相对于mbed API,Raw API提供更灵活丰富和高效的硬件配置接口 |
|
mbed API headers |
基于Raw API的高级封装接口,提供的功能相对单一 |
component/soc/ |