i.MX RT600 SDK dsp_xaf_demo 工程介绍

前言

在前面两篇博文 《i.MX RT600 DSP Core 开发环境搭建》 和 《i.MX RT600 DSP Core 调试》中我们介绍了相关开发工具的安装以及调试过程, 本篇再给大家介绍一下如何用 SDK 自带的例程来播放 mp3 文件, 这样有助于大家更好的理解 i.MX RT600 开发过程。


一. 工程说明

NXP 原厂提供的 SDK 中有一个 dsp_xaf_demo 工程:

\boards\evkmimxrt685\dsp_examples\xaf_demo\,

dsp_xaf_demo 演示了如何用 DSP 核去处理音频, 还包括了 Xtensa Audio Framework ( XAF) 中间件库以及 Xtensa 音频解码库的选择。    

dsp_xaf_demo 包含ARM 核 (M33) 和 DSP 核 (HiFi4) 两套独立运行的应用代码, ARM 核跑命令行 shell 脚本, 用来在串口终端接收输入指令并通过 RPMsg-Lite方式传递给 DSP 核。

二. 工程准备

在开始前,先介绍一下工具:

  • MIMXRT685-EVK 开发板 * 1
  • J-Link V9 调试工具 * 1
  • USB TO UART 转接板 * 1
  • TYPE-A 转 Micro-USB 线 * 1
  • 耳机线或音箱 * 1

     例程会用到板载的 WM8904 Codec, 所以需要把耳机接到 J4 耳机座上, 另外需要把 JP7-1 与 JP8-2 进行短接, UART 还是使用 J16, 具体使用方法参考 《i.MX RT600 DSP Core 调试》, 如图所示:

三. Debug 工程烧录及运行

Debug 工程包含两套独立的代码, 一个是 ARM 核的代码, 一个是 DSP 核的代码。 如果要调试 DSP 核代码, 必须要先运行 ARM 核代码, 由 ARM 核启动 DSP 核。 先下载 ARM 核代码, 再下载 DSP 核代码。

ARM 核的代码可以通过 KEIL / IAR / MCUXpresso 等工具来烧录, 工程路径为:    

                \boards\evkmimxrt685\dsp_examples\xaf_demo\cm33\,

这里我用 KEIL 进行编译和烧录。烧录完成后, 手动复位, 在串口会输出:

理论上, 我们在串口终端上输入 “Help” 命令就可以看到相关提示, 但事实上并没有反应, 检查原理图得知, 因为我们没有用板载的调试工具, 所以线路还需要作一下微调, 查看原理图得知, 芯片的 RX 脚没有接上, 默认连接的是 JP21 的 1和2 脚, 这里需要改成 JP21 的 2 和 3 脚相连。


再次输入 “help” 命令:

这样就表明串口的收发都成功了, 注意: “help” 执行后显示的指令内容并不是都能执行, 因为大多数功能需要 DSP核配合才能完成。 接下来打开 Xplore DSP 开发环境, 加载工程并进行调试界面,工程路径:\boards\evkmimxrt685\dsp_examples\xaf_demo\dsp\xtensa\, 关于编译下载可以参考上一篇博文 《i.MX RT600 DSP Core 调试》, 运行后在 Xplore Console 中会现相关版本信息:

因为 Demo 功能比较强大, 我们只需要使用到 mp3 文件播放功能, 所以只需要把 mp3 文件放到 SD 卡中, 注意: mp3 文件一定要放到根目录下。

我们回到串口终端界面, 输入 “file list”,可以查看 SD 根目录下 .mp3, .ogg, .sbc文件列表。

输入 “file xxx.mp3”, 即可以开始播放音频文件, 我们可以通过 J4 接口连接耳机或者音箱听到音乐:



在 xplore console 界面会同步显示解码信息:

播放完成后:

对应 xplore console 界面:

这里要注意的是, 不是所有的 mp3 文件都能正常播放, 有一些通过工具生成的 mp3 文件可能不能正常播放:

四. Release 工程烧录及运行

前面我们演示的是基于 Debug 工程来播放 mp3 音乐, 它需要独立的两套代码,  需要先运行 ARM 核, 再去调试 DSP 核。

我们也可以用一套代码来实现上面的功能, 这就是 Release 工程:将两套代码合并成一套代码,  ARM 核先启动后去指定的存储地址取得 DSP 核的代码, 并把代码自动加载到 RAM, 使能 DSP 核后, DSP 核运行 RAM 中代码。

我们可以先把 DSP 核代码编译好, 选择 release 模式:

 生成:

记住这些 bin 文件的位置, 回到 ARM 核开发环境, 我这里是 KEIL, 选择 release 版本编译烧录即可:

或者也可以在 debug 版本的工程上通过修改宏定义的方式, 一共有两个地方:C/C++ 页 和 Asm 页, 如图所示:



 这里将 DSP_IMAGE_COPY_TO_RAM = 1, 将刚才 DSP 编译生成的 bin 文件包含到 ARM 的 bin中, 再由ARM 核自动加载到 ram 中, 这样就不需要再运行 Xplore 环境进行编译加载调试了。

DSP 核 bin 文件路径设置:



如果 bin 文件路径不对, 需要手动把 bin 文件拷贝到对应路径下。这样重新上电就可以正常运行了, 重复第三节内容, 在串口终端输入对应指令, 就可以听到声音了。

总结

通过本文, 大家对 dsp_xaf_demo 例程以及 XAF 框架有了一定的了解, 接下来就可以进一步深入代码去理解 ARM 核及 DSP 核的运行机制, 以及双核之间的通信机制。 后续我们还会推出 i.MX RT600 相关的开发文章, 敬请期待!

参考资料

  1. 《 Getting Started with Xplorer for MIMXRT600 》, NXP Semiconductors
  2. 《 SPF-35099_E2 》, NXP Semiconductors
  3. 《 IMX-RT685-EVK-QSG 》, NXP Semiconductors
  4. 《MCUXpresso SDK Release Notes for EVK-MIMXRT685》, NXP Semiconductors

 



★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能