SDK 简介

概述

SDK 由以下三部分组成:

SDK
  ├── component                   FreeRTOS、SoC、mbed API、Wi-Fi、network 等组件
  ├── tools                       工具
  └── 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

  • main: 主程序入口

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

  • project: 编译、配置入口

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

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

ssl

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

usb

USB class driver 及验证代码

utils

工具类模块,包括:

  • IPC(多核间通信)

  • Ringbuffer(环形缓冲区)

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

wifi

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

  • Wi-Fi 网卡模式:作为传统Wi-Fi 卡片使用

  • R-mesh: Realtek Wi-Fi Mesh

  • CSI : Wi-Fi sensing

  • KVR:Wi-Fi 漫游

  • WPS:Wi-Fi Protected Setup

  • MCC:Wi-Fi 多信道共存

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

  • Fast connect :Wi-Fi 重启后迅速连接

soc 目录下,每个 SoC 都有一个独立的子目录 main,该目录是该 SoC 的主程序入口。每个 SoC 可能包含多个 MCU,每个 MCU 拥有一个独立的子目录。

component/soc/xxx/main
  ├── {mcu1}/                           每个 MCU 的专属主程序目录
  └── {mcu2}/                           每个 MCU 的专属主程序目录
     ├── inc/                           头文件 FreeRTOSConfig.h 以及 build_info.h 等
     └── src/                           主程序源码

soc 目录下,每个 SoC 都有一个独立的子目录 project,该目录是该 SoC 的编译入口,包含 Kconfig, CMake, layout 等文件。每个 SoC 可能包含多个 MCU,每个 MCU 拥有一个独立的子目录 project_xx,其中包含了链接脚本(linker script)、以及 Bootloader 和 Application Image 的 CMake 编译配置文件等。

component/soc/xxx/project
  ├── project_{mcu1}/                   每个 MCU 的专属配置目录
  └── project_{mcu2}/                   每个 MCU 的专属配置目录,SoC 中有多个 MCU,就会有多个目录
     ├── ld/                            链接脚本
     ├── lib/                           库文件
     └── make/                          用于编译 image 的 CMake 脚本

tools

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

条目

描述

TraceTool

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

ImageTool

用于下载固件 Image Tool

DownloadServer

基于 socket 的 OTA server 程序

DownloadServer (HTTP)

基于 HTTP 的 OTA server 程序

iperf

用于 Wi-Fi 吞吐量测试

littlefs

littlefs 文件系统生成

meta_tools

VS Code 插件 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