SDK Introduction
Overview
The SDK consists of the following four parts:
SDK
├── amebaxxx_gcc_project Used to configure and compile firmware, including Kconfig, cmake, ld, library, etc.
├── component Components such as FreeRTOS, SoC, mbed API, Wi-Fi, network, etc.
├── tools Tools
└── cmake Compilation abstraction layer
project
Each SoC has a corresponding project directory amebaxxx_gcc_project, which serves as the compilation entry point for that SoC. Each SoC may include multiple MCUs, and each MCU has its own subdirectory project_xx under amebaxxx_gcc_project, containing the default main program entry, linker script, and CMake build configuration files for Bootloader and Application Image.
The amebaxxx_gcc_project directory also contains the following subdirectories:
utils: Script tools used for debugging and configuration files required for automated compilationmenuconfig: Configuration system supportingmake menuconfig, generated during configurationbuild: Generated after CMake compilation, stores intermediate files
amebaxxx_gcc_project/
├── project_xx/ Private configuration directory for each MCU
├── project_xx/ Private configuration directory for each MCU; there will be multiple directories if the SoC contains multiple MCUs
│ ├── src/ Main program source code
│ ├── inc/ Header files such as FreeRTOSConfig.h and build_info.h
│ └── asdk/ ld, CMake build system
├── utils/ Debugging and automated build scripts and configurations
├── menuconfig/ Configuration item definitions supporting make menuconfig, generated after configuration
└── build/ Generated after CMake compilation, stores intermediate files
component
This directory contains the core functional components of the SDK, which are called by upper-layer applications. Common components are listed in the following table:
Item |
Description |
|---|---|
at_cmd |
AT command support module |
audio |
Audio codec driver, supports: alc5616/alc5640/alc5651/alc5660/alc5679/alc5680/sgtl5000 |
bluetooth |
Bluetooth protocol stack source code and related library files |
example |
application examples, including:atcmd_host,network,ota,usb,peripherals, etc. |
file_system |
File system implementation, includes: fatfs, littlefs, ftl, kv, vfs, etc. |
lwip |
LWIP protocol stack APIs and source code |
network |
Network protocol support, includes:
|
os |
FreeRTOS real-time operating system source code and OS APIs wrapper layer implementation |
soc |
SoC-related core modules, includes:
|
ssl |
Secure communication protocol stack, implemented based on mbed TLS |
usb |
USB class drivers and verification code |
utils |
Utility modules, includes:
|
wifi |
Wi-Fi functional module, provides the following interfaces:
|
tools
This directory contains tools required during IC development.
Item |
Description |
|---|---|
TraceTool |
Used for printing logs and sending commands Trace Tool |
ImageTool |
Used for downloading firmware Image Tool |
DownloadServer |
Socket-based OTA server program |
DownloadServer (HTTP) |
HTTP-based OTA server program |
iperf |
Used for Wi-Fi throughput testing |
littlefs |
Generates the littlefs file system |
meta_tools |
VS Code extension SDK-side adaptation toolset |
Critical Header Files
The following table lists some key header files in the SDK and their descriptions:
Item |
Description |
Location |
|---|---|---|
basic_types.h |
|
component/soc/ |
section_config.h |
Definitions of various sections in the linker script:
|
|
ameba_soc.h |
Provides Raw APIs for low-level drivers (recommended to use) Compared to mbed APIs, Raw APIs offer more flexible, rich, and efficient hardware configuration interfaces |
|
mbed API headers |
High-level encapsulation interfaces based on Raw APIs, providing relatively simplified functionality |
component/soc/ |
SDK License
Layer |
Item |
Version |
License |
|---|---|---|---|
Application |
cJSON |
n/a |
MIT License |
NetWork |
Lwip |
v2.1.2 |
BSD License |
mbedTLS |
v3.6.2 |
Apache-2.0 |
|
Wi-Fi |
wpa_supplicant |
n/a |
BSD License |
BT |
LC3 Codec (BT audio codec lib) |
n/a |
Apache-2.0 |
SBC Codec (BT audio codec lib) |
n/a |
Apache-2.0 |
|
AES-CMAC |
n/a |
No License, free to use |
|
CCMS |
n/a |
Apache-2.0 |
|
ECC (Kenneth MacKay) |
n/a |
BSD 2-Clause License |
|
SHA256 (Colin Percival) |
n/a |
BSD 2-Clause License |
|
File System |
FatFs |
n/a |
BSD Licenses |
LittleFS |
n/a |
BSD 3-Clause License |
|
OS |
FreeRTOS |
v10.2.1 v10.4.3 v10.5.1 |
MIT License |
Audio |
Audio effect |
n/a |
For audio effects Apache-2.0 |
sonic |
n/a |
For audio speed Apache-2.0 |
|
FLAC (Free Lossless Audio Codec) decoder |
n/a |
For decoding FLAC v2 or any later version LGPL |
|
haac |
n/a |
For decoding haac The contents of this file, and the files included with this file, are subject to the current version of the RealNetworks Public Source License Version 1.0 (the “RPSL”) unless you have licensed the file under the RealNetworks Community Source License Version 1.0 (the “RCSL”), in which case the RCSL will apply. |
|
gsm610 |
v1.0.19 |
For playing sound in ekho Any use of this software is permitted provided that this notice is not removed and that neither the authors nor the Technische Universitaet Berlin are deemed to have made any representations as to the suitability of this software for any purpose nor are held responsible for any defects of this software. |
|
libopus |
n/a |
For decode opus Contributions to the collaboration shall not be considered confidential. Each contributor represents and warrants that it has the right and authority to license copyright in its contributions to the collaboration. Each contributor agrees to license the copyright in the contributions under the Modified (2-clause or 3-clause) BSD License or the Clear BSD License. Please see the IPR statements submitted to the IETF for the complete patent licensing details:
|
|
speexdsp |
v1.2.1 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
tremolo |
v0.07 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
Ui |
lvgl |
v8.3 |
MIT license Copyright(c) 2021 LVGL Kft |
jpeg |
v62 |
libjpeg-turbo is covered by three compatible BSD-style open source licenses:
|
|
png |
v1.6.34 |
libpng License |
|
zlib |
v1.2.11 |
zlib License |
|
AIVoice |
tflite_micro |
n/a |
Apache-2.0 |