DSP SDK 架构
SoC 系统架构介绍
Realtek Ameba SoC 采用异构多核架构,由 MCU 核和 DSP 核组成,两者协同工作实现完整的系统功能。 传统单片机架构在处理计算密集型任务(如 AI 推理、复杂音频处理)时往往性能不足或者任务间相互干扰。异构多核架构通过分工协作解决了这一问题:
MCU 核:专注于系统控制和通信,负责 Wi-Fi/蓝牙协议栈、外设驱动等,保证系统稳定性和实时性;
DSP 核:专注于算法计算,负责 AI 算法、音频处理、传感器数据融合等计算密集型任务,发挥硬件加速器的性能优势。
DSP SDK 不能独立运行,必须配合 MCU SDK (FreeRTOS SDK) 使用。Ameba SDK 的整体系统架构如下:
系统各层级说明:
架构层级 |
负责模块 |
功能描述 |
|---|---|---|
应用层 |
DSP 核 + MCU 核 |
负责语音算法、传感器应用等计算密集型任务,以及外设控制、系统逻辑等控制任务 |
算法处理层 |
DSP 核 (HiFi5) |
负责 AI 算法、音频处理、数据融合等计算密集型任务。不直接操作传感器、外设。 |
核间通信层 |
IPC (Inter-Process Communication) |
DSP 与 MCU 之间的数据传递和控制通信 |
系统控制层 |
MCU 核 |
负责 Boot、Wi-Fi/蓝牙协议栈、外设驱动,以及音频的录制、回放等。 |
硬件抽象层 |
HAL & Drivers |
统一的硬件访问接口 |
硬件层 |
SoC |
实际的芯片硬件 |
DSP 对 MCU 的依赖关系:
依赖类型 |
说明 |
MCU 承担的角色 |
|---|---|---|
启动依赖 |
DSP 无自举能力,无法独立启动 |
MCU 在系统启动时将 DSP 固件加载到内存并触发启动 |
硬件资源共享 |
外设时钟速度较慢,不建议 DSP 直接访问所有硬件外设 |
MCU 提供驱动服务,DSP 通过 IPC 调用 |
内存管理 |
DSP 使用的内存区域需要预先配置 |
MCU 在 Boot 阶段完成内存配置和分配 |
时钟与电源 |
DSP 需要独立的时钟域管理 |
MCU 负责 DSP 时钟使能和电源管理 |
DSP SDK 专注于算法处理:
DSP 核心:Cadence HiFi5 高性能音频/语音 DSP 处理器
算法库:AIVoice、TFLite Micro、Neural Network Library
驱动支持:iDMA、GDMA 等专用加速器驱动
开发工具:Xplorer IDE、调试插件、ISS 仿真器
MCU SDK 提供完整的系统功能:
无线连接:Wi-Fi 和蓝牙协议栈,提供网络通信能力
外设驱动:UART、I2C、SPI、GPIO、Timer 等,DSP 可以通过 IPC 间接调用
安全功能:Secure Boot、TrustZone、加密引擎等
DSP 管理:DSP 固件加载、启动、监控
备注
关于 MCU SDK 的详细内容,请参考: MCU SDK 使用指南 。
DSP SDK 组成结构
本节介绍 DSP SDK 的目录结构和各组件的功能定位。
DSP SDK 总体结构:
SDK
├── bsp 外设驱动 (IPC、GDMA、GPIO、Timer、OTP 等)
├── configurations Windows、Linux 平台的编译配置包
├── example GDMA、iDMA 等使用示例
├── lib FreeRTOS、IPC、HiFi5 等库文件
└── project DSP 工程工作区
Project 工作区
project 目录是 Xplorer IDE 的工作区,包含主程序入口、链接脚本、工程配置文件等:
project
├── auto_build Linux 命令行编译脚本及中间文件
├── image 编译生成的固件和反汇编文件
├── img_utility 后处理脚本、LSP 修改脚本
├── project_dsp DSP 工程文件(主函数、MPU 配置等)
└── RTK_LSP 链接脚本(Linker Script)
Example 示例
example 目录包含了基本外设的使用方法。AIVoice、TFLM 等高级应用的示例位于各自独立仓库。
关于例程的编译方法和编译机制说明,请参考:
例程编译
例程名称 |
功能类型 |
简介 |
|---|---|---|
example_gdma |
DMA 操作 |
演示 GDMA 的单块和多块传输模式 |
example_idma |
DMA 操作 |
演示 iDMA 将数据从 PSRAM 搬运到 DTCM |
example_idma_nn |
算法加速 |
演示 iDMA ping-pong 策略加速神经网络计算 |
Library 库文件
lib 目录包含 DSP 开发所需的组件库和算法库,提供不同 ABI (Call0/Window) 和工具链的编译版本,包括 aivoice、ipc、freertos、hifi5、tflite_micro、xa_nnlib 等。
关于库文件的详细说明和使用方法,请参考:
DSP 库
版本兼容性
DSP SDK 与 MCU SDK 存在版本依赖关系。 由于两个 SDK 由独立维护,且涉及异构多核架构的紧密协作,使用不兼容的版本组合可能会出问题。
Cadence 官方文档
Cadence 提供了完整的 HiFi5 DSP 官方文档,包括配置信息、用户手册、编译器链接器使用手册、仿真调试手册等。 安装完 Xplorer 工具链后,文档位于以下路径:
DSP 使用说明:
C:\usr\xtensa\XtDevTools\downloads\RI-2021.8\docs
DSP 架构文档 (Call0 ABI):
C:\usr\xtensa\XtDevTools\install\builds\RI-2021.8-win32\HIFI5_PROD_1123_asic_UPG\index.html
DSP 架构文档 (Window ABI):
C:\usr\xtensa\XtDevTools\install\builds\RI-2021.8-win32\HIFI5_PROD_1123_asic_wUPG\index.html
DSP 使用说明:
/opt/xtensa/XtDevTools/downloads/RI-2021.8/docs
DSP 架构文档 (Call0 ABI):
/opt/xtensa/XtDevTools/install/builds/RI-2021.8-linux/HIFI5_PROD_1123_asic_UPG/index.html
DSP 架构文档 (Window ABI):
/opt/xtensa/XtDevTools/install/builds/RI-2021.8-linux/HIFI5_PROD_1123_asic_wUPG/index.html
在上述 docs 目录下,以下文档在开发过程中最为常用:
应用场景 |
文档名称 |
说明 |
|---|---|---|
调试相关 |
|
Xtensa 调试指南 |
调试相关 |
|
GDB 调试工具使用手册 |
ISS 仿真 |
|
指令集仿真器使用方法 |
性能分析 |
|
Profile 结果分析工具使用指南 |
内存布局 |
|
链接脚本和内存布局参考手册 |
iDMA 使用 |
|
The Integrated DMA Library API |
异常分析 |
|
Exception Causes (异常原因对照表) |
备注
当遇到 Crash Dump 需要分析异常原因时,请参考 isa_rm.pdf 中的 Table-94。