DSP SDK 架构

SoC 系统架构介绍

Realtek Ameba SoC 采用异构多核架构,由 MCU 核和 DSP 核组成,两者协同工作实现完整的系统功能。 传统单片机架构在处理计算密集型任务(如 AI 推理、复杂音频处理)时往往性能不足或者任务间相互干扰。异构多核架构通过分工协作解决了这一问题:

  • MCU 核:专注于系统控制和通信,负责 Wi-Fi/蓝牙协议栈、外设驱动等,保证系统稳定性和实时性;

  • DSP 核:专注于算法计算,负责 AI 算法、音频处理、传感器数据融合等计算密集型任务,发挥硬件加速器的性能优势。

DSP SDK 不能独立运行,必须配合 MCU SDK (FreeRTOS SDK) 使用。Ameba SDK 的整体系统架构如下:

../_images/soc_sdk_arch.svg

系统各层级说明:

架构层级

负责模块

功能描述

应用层

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 工程工作区

备注

对于 AIVoice、TFLite Micro 等高阶功能,由独立的仓库进行托管和维护:

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

在上述 docs 目录下,以下文档在开发过程中最为常用:

应用场景

文档名称

说明

调试相关

xtensa_debug_guide.pdf

Xtensa 调试指南

调试相关

gnu_gdb_ug.pdf

GDB 调试工具使用手册

ISS 仿真

inst_set_sim_ug.pdf

指令集仿真器使用方法

性能分析

gnu_profiler_ug.pdf

Profile 结果分析工具使用指南

内存布局

lsp_rm.pdf

链接脚本和内存布局参考手册

iDMA 使用

sys_sw_rm.pdf (Chapter-8)

The Integrated DMA Library API

异常分析

isa_rm.pdf (Table-94)

Exception Causes (异常原因对照表)

备注

当遇到 Crash Dump 需要分析异常原因时,请参考 isa_rm.pdf 中的 Table-94。