news 2026/9/15 7:03:51

Zephyr 在 AMD ACP 7.X HiFi5 音频 DSP 上的移植:板级特性、构建与 SOF 固件烧录指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zephyr 在 AMD ACP 7.X HiFi5 音频 DSP 上的移植:板级特性、构建与 SOF 固件烧录指南

Zephyr 在 AMD ACP 7.X HiFi5 音频 DSP 上的移植:板级特性、构建与 SOF 固件烧录指南

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

本文面向音频固件与嵌入式开发者,系统讲解 Zephyr RTOS 在 AMD ACP 7.X 音频协处理器上的移植现状:包括该平台的硬件资源(HP SRAM / IRAM / DRAM、SDW / I2S / DMIC 音频接口)、系统时钟范围、基于 Zephyr SDK 与 Cadence Xtensa 工具链的两种构建路径、hello_world 的编译方法,以及经由 ACP Linux 驱动完成签名镜像烧录与固件启动验证的完整流程。读完本文,你将掌握在 ACP 7.X 平台上构建、烧录并验证 Zephyr 音频 DSP 固件的完整实战方案。

ACP 7.X 平台概览

ACP(Audio Co-Processor)7.X 是集成在 AMD SoC 中的音频协处理器,其 DSP 内核基于HiFi5 Xtensa 架构。Zephyr OS 被移植到该平台,用于在SOF(Sound Open Firmware)框架之上承载各类音频与语音处理用例。

从 SOC 定义文件 可以看到,该 SoC 的 Zephyr 代号为acp_7_x,对应的工具链 SoC 名为amd_acp_7_3_adsp,这是 Zephyr SDK 中用于该平台的 GCC 交叉编译目标。一个关键事实是:SOF 既可以使用 Zephyr 构建,也可以使用 Cadence 专有的 Xtensa OS(XTOS)构建,两者都能运行在 ACP 7.X 平台上——这意味着你在 Zephyr 中开发的固件与 XTOS 固件遵循同一套平台内存与启动约定。

板级信息在 board.yml 中登记为acp_7_x_adsp(全称 "ACP 7.X Xtensa Audio DSP"),acp_7_x_adsp.yml 则进一步声明该板为xtensa架构的 mpu 类型设备,工具链同时支持zephyr(SDK 内置 GCC)与xcc(Cadence 专有编译器)两种变体。

硬件特性

特性规格
运行内存(RAM)4MB HP SRAM,另有 512KB 可在 IRAM/DRAM 间配置
音频接口3 × SDW(SoundWire)、3 × I2S(PCM)、2 × DMIC

这些特性在设备树中得到了充分映射。查看 dts/xtensa/amd/acp_7_x.dtsi 可以发现:

  • 主核cpu@9eac0000的 compatible 为cdns,tensilica-xtensa-lx7,即 HiFi5 DSP 所基于的Xtensa LX7 核心
  • 中断控制器acp-intc(compatible 为amd,acp-intc)、主机 DMAacp-host-dma均为status = "okay"的默认启用节点;
  • 88 个 SDW DAI 节点acp-sdw-dai0acp-sdw-dai87)覆盖了 SoundWire 侧音频数据接口,配套的acp-sdw-dma提供64 个 DMA 通道,用于承载 SDW 数据流;
  • 另有 3 个tdm-dai节点与 6 通道的acp-tdm-dma,对应文档中所说的 I2S(PCM)接口路径。

板级设备树 acp_7_x_adsp.dts 非常简洁,仅包含amd/acp_7_x.dtsi并声明 model 为 "AMD ACP_7_X Audio DSP"、compatible 为acp_7_x,说明绝大多数外设能力都沉淀在 SoC 级设备树中。

系统时钟

ACP 7.X SoC 工作在200 MHz 至 1000 MHz 的音频时钟频率范围内。

在设备树中,dts/xtensa/amd/acp_7_x.dtsi 为cpu@9eac0000设置了clock-frequency = <600000000>,即该移植默认将 CPU 配置在 600 MHz。这一设备树属性会被 Kconfig.defconfig 读取:

config SYS_CLOCK_HW_CYCLES_PER_SEC default $(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)

即 Zephyr 的系统时钟节拍频率直接取自设备树 CPU 节点的clock-frequency,最终得到CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC = 600000000。同时该 SoC 默认启用XTENSA_TIMER,选用的是 Xtensa 内核的定时器中断源。

支持的板级特性

板级默认配置位于 acp_7_x_adsp_defconfig,它反映了该音频 DSP 移植在中断与缓存方面的关键取舍:

CONFIG_GEN_ISR_TABLES=y CONFIG_GEN_IRQ_VECTOR_TABLE=n CONFIG_GEN_SW_ISR_TABLE=y CONFIG_DYNAMIC_INTERRUPTS=y CONFIG_SHARED_INTERRUPTS=n CONFIG_MULTI_LEVEL_INTERRUPTS=n CONFIG_XTENSA_TIMER=y CONFIG_XTENSA_TIMER_ID=0 CONFIG_TICKLESS_KERNEL=y CONFIG_CACHE_MANAGEMENT=y CONFIG_DCACHE=y CONFIG_SYS_HEAP_HARDENING_NONE=y

几点值得注意:

  • 中断方面采用生成 ISR 表 + 软件中断向量表GEN_ISR_TABLESGEN_SW_ISR_TABLE),并开启动态中断注册(DYNAMIC_INTERRUPTS),这在 SOF 这类需要按需注册 DMA/邮箱中断的音频框架中非常必要;多级中断与共享中断则被关闭。
  • 定时器选用Xtensa 内核定时器 0XTENSA_TIMER=yXTENSA_TIMER_ID=0),并开启 tickless 内核(CONFIG_TICKLESS_KERNEL=y),适合音频这类对低功耗与低抖动有要求的负载。
  • 缓存管理(CACHE_MANAGEMENTDCACHE)默认打开。SoC 层面(Kconfig.defconfig)还进一步把缓存类型默认设为ARCH_CACHEDCACHE 行大小为 128 字节,内核入口固定为__start

系统要求与构建环境

使用 Zephyr SDK(默认路径)

Zephyr SDK 提供基于 GCC 的工具链,足以完成 AMD ACP 板卡的 Zephyr 固件构建,这也是开箱即用的默认方式。SDK 中对应的目标 SoC 名称为amd_acp_7_3_adsp(见 Kconfig.soc)。

使用 Cadence Xtensa 专有工具链(可选)

对于追求更高优化级别的场景,可以改用 Cadence 的专有 Xtensa 工具链(XCC)。以下步骤假定你已经按照 Xtensa 官方文档完成工具链与内核(core)的购买和安装。

首先,确保已从 Cadence 获取必要许可证,并按 Cadence 的指引设置许可证相关的环境变量。接着,设置以下环境变量——其中底部的三个变量是 acp_7_x 平台特有的

export XTENSA_TOOLCHAIN_PATH="tools installed path" export XTENSA_BUILDS_DIR="user build directory path" export ZEPHYR_TOOLCHAIN_VARIANT=xcc export TOOLCHAIN_VER=RI-2022.9-linux export XTENSA_CORE=ACP73x_HiFi5_NNE_PROD

各变量含义:

环境变量说明
XTENSA_TOOLCHAIN_PATHXtensa 工具链的安装路径(tools installed path需替换为实际目录)
XTENSA_BUILDS_DIR用户构建目录路径,用于存放 Xtensa 内核构建产物
ZEPHYR_TOOLCHAIN_VARIANT固定为xcc,告诉 Zephyr 构建系统选用 Cadence 编译器
TOOLCHAIN_VER工具链版本号,示例为RI-2022.9-linux,需与安装版本匹配
XTENSA_COREXtensa 内核配置名,acp_7_x 平台为ACP73x_HiFi5_NNE_PROD(注意其中含 NN 加速器配置)

其中XTENSA_CORE=ACP73x_HiFi5_NNE_PROD与 Kconfig.soc 中声明的工具链目标amd_acp_7_3_adsp对应,两者都指向同一颗带 NN 扩展的 HiFi5 内核。

构建 hello_world

构建方式与 Zephyr 其他平台完全一致,使用 west 即可:

west build -b acp_7_x_adsp/acp_7_x samples/hello_world
  • -b参数中的板目标acp_7_x_adsp/acp_7_x与 acp_7_x_adsp.yml 中登记的identifier: acp_7_x_adsp/acp_7_x完全一致;
  • 若使用 XCC 构建,请先完成上一节的环境变量设置,构建系统会根据ZEPHYR_TOOLCHAIN_VARIANT=xcc自动切换到 Xtensa 编译器。

构建产物会经过链接脚本 soc/amd/acp_7_x/linker.ld 的布局。该脚本为平台划定了完整的物理内存图,例如:

  • IRAM_BASE 0x7F000000(大小 0x20000)承载复位向量与各级中断/异常向量表(Level2~Level7、内核、用户、Double 异常、NMI);
  • DRAM0/DRAM1 0xE0000000区域,其中 DRAM1 顶部预留了SOF_STACK_SIZE (0x1000)的固件栈空间;
  • SRAM1 0x6000C000(大小 0x350000 ≈ 3.3MB)作为主要 RAMABLE/ROMABLE 区域,存放.text.rodata.data.bss.heap_mem等段;
  • CONFIG_GEN_ISR_TABLES开启时,还会在 IRAM 之后放置IDT(中断描述符表),大小为 0x2000;
  • 此外专门划分了 UUID 条目、静态日志条目与扩展固件元数据(fw_metadata)三个PT_NOTE段,用于承载 SOF 固件所需的元数据与日志信息。

烧录与启动验证

烧录方式

AMD 仅支持通过ACP Linux 驱动在 ACP 7.X 平台上烧录签名镜像。签名与镜像打包工作由板级 board.cmake 中的board_set_rimage_target(acp_7_x)衔接——rimage是 SOF 生态中的镜像工具,负责把 ELF 固件转换为带元数据、可被驱动校验和加载的签名格式。

固件启动序列

通过 ACP Linux 驱动加载固件后,可以在dmesg中观察到如下启动序列消息:

booting DSP firmware ACP_DSP0_RUNSTALL : 0x0 ipc rx: 0x70000000 Firmware info: version 2:11:99-03a9d Firmware: ABI 3:29:1 Kernel ABI 3:23:0 mailbox upstream 0x0 - size 0x400 mailbox downstream 0x400 - size 0x400 stream region 0x1000 - size 0x400 debug region 0x800 - size 0x400 fw_state change: 3 -> 6 ipc rx done: 0x70000000 firmware boot complete

对这条序列的解读(可作为固件是否成功上电自检的依据):

  1. booting DSP firmware:驱动开始向 DSP 下发固件;
  2. ACP_DSP0_RUNSTALL : 0x0:DSP 退出 RUNSTALL 复位状态,CPU 开始执行;
  3. ipc rx: 0x70000000ipc rx done: 0x70000000:宿主与 DSP 之间的 IPC 消息握手完成;
  4. Firmware info: version 2:11:99-03a9d/Firmware: ABI 3:29:1 Kernel ABI 3:23:0:固件版本与 ABI 兼容性信息(固件 ABI 与内核 ABI 需匹配,否则后续消息流可能异常);
  5. mailbox upstream/downstreamstream regiondebug region:驱动与固件之间共享的邮箱、音频流与调试内存区域已按给定偏移和大小(各 0x400)建立;
  6. fw_state change: 3 -> 6:固件状态机推进,最终firmware boot complete表示启动完成,DSP 固件已就绪,可接受后续音频管线配置。

小结

AMD ACP 7.X 平台为 Zephyr 提供了一个完整的音频 DSP 落地场景:HiFi5(LX7)内核配 4MB SRAM 与丰富的 SDW/I2S/DMIC 音频通路,配合 SOF 框架即可承载音频与语音处理管线。开发者既可以用 Zephyr SDK 快速构建,也可以通过xcc+XTENSA_CORE=ACP73x_HiFi5_NNE_PROD获得更高优化度;烧录时需走 ACP Linux 驱动完成签名镜像加载,并通过本文给出的 dmesg 序列验证固件启动状态。

进一步阅读:板级配置见 boards/amd/acp_7_x_adsp,SoC 层实现见 soc/amd/acp_7_x,设备树定义见 dts/xtensa/amd/acp_7_x.dtsi。

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 7:03:42

网站被黑挂马?江苏网络推广排名背后的源码下载实战

网站被黑挂马?江苏网络推广排名背后的源码下载实战 网站后台突然弹出满屏的博彩广告,打开源码全是乱码,这时候你才意识到: 网站被黑挂马不知道怎么办 。别慌,这种时候盲目重装系统是下策,最稳妥的办法是找回干净的 源码下载…

作者头像 李华
网站建设 2026/9/15 7:02:55

算力大会闭幕:国产算力拼系统不拼单卡

2026中国算力大会9月11日至13日在河北廊坊举行&#xff0c;主题「共织算力网 智启新未来」。当业内还在争论「单卡算力能不能追上英伟达」时&#xff0c;这届大会释放了一个新信号——拼的不再是某一颗芯片的参数&#xff0c;而是芯片、集群、模型、调度、计费标准的整体协同。…

作者头像 李华
网站建设 2026/9/15 7:01:10

大模型SFT微调技术:原理、实践与优化

1. 为什么大模型表现不尽如人意&#xff1f;大模型在实际应用中常常会遇到各种性能瓶颈&#xff0c;这背后往往隐藏着几个关键因素。首先是预训练阶段的数据分布与实际应用场景的错位——就像用百科全书训练出来的学者&#xff0c;面对具体业务问题时可能显得过于理论化。其次是…

作者头像 李华
网站建设 2026/9/15 7:00:39

HHT变换MATLAB例程:EMD分解与希尔伯特时频分析实战详解

简介&#xff1a;这是一份面向MATLAB信号处理学习者的希尔伯特黄变换&#xff08;HHT&#xff09;例程包&#xff0c;围绕希尔伯特变换与经验模态分解&#xff08;EMD&#xff09;详细展示时频分析实现思路。压缩包共3个文件&#xff0c;全部为.m脚本&#xff0c;体积仅10KB。三…

作者头像 李华
网站建设 2026/9/15 6:59:42

Vue3 中 ECharts 的使用与自定义样式

1. 安装与引入 在 Vue3 项目中使用 ECharts&#xff0c;推荐通过 npm 安装&#xff0c;并结合按需引入减小打包体积。 npm install echarts按需引入&#xff08;推荐&#xff09;&#xff1a;在项目中新建 src/utils/echarts.js 统一管理引入&#xff1a; // src/utils/echarts…

作者头像 李华
网站建设 2026/9/15 6:59:12

AI算力革命:驱动人工智能发展的核心动力

1. 算力为何成为AI发展的核心引擎2012年&#xff0c;多伦多大学的研究团队在ImageNet竞赛中首次使用GPU训练深度神经网络AlexNet&#xff0c;以压倒性优势夺冠。这个标志性事件揭示了一个关键事实&#xff1a;当算法理论突破遇到足够强大的计算能力&#xff0c;人工智能的发展速…

作者头像 李华