查看: 3589|回复: 0

[原创] 【i.MX8MM】audio可以这么玩:A核解码,M核播放

[复制链接]
  • TA的每日心情
    开心
    2020-1-31 22:07
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    20

    主题

    385

    帖子

    19

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    1688
    最后登录
    2020-7-1
    发表于 2019-11-24 21:03:58 | 显示全部楼层 |阅读模式
    本帖最后由 1209实验室@ujn 于 2019-11-24 23:08 编辑

    iMX8MM应该是imx8m系列的第二个产品了(第一个是imx8mq),依旧延续了8mq的“4核A53+单核M4”的多核异构架构,不过制造工艺由28nm升级为三星的14nm,此芯片主打多媒体娱乐影音市场。。。。。。

    直接入正题,运行一个A核解码音乐文件,M核播放文件的multicore程序,需要点啥?
    整个的demo流程大概是:
    1.A核起来了,进uboot
    2.在uboot界面将sd卡里的M4 binary load到TCM里,并运行起来,初始化codec
    3.boot linux kernel,这是A和M之间会建立链接
    4.在linux界面输入解码播放指令,A核解码数据,并将解码好的数据存放至DDR,M4从DDR获取数据,输送至codec芯片播放

    硬件你需要
    一块imx8mm官方EVK开发板
    一块多媒体拓展底板
    一个卡农接口的转接线
    一个3.5mm的耳机
    一张8G的SD卡

    iMX8MM.jpg
    软件
    官方release的linux镜像文件(基于linux4.19版本内核的):http://www.nxp.com/design/i.mx- ... lopment-tool:IMX-SW
    补丁IAR and Segger tool patch to support MCUXpresso SDK for i.MX 8 devices GA:下载地址同上

    imx8mm CM4核的SDK开发包(IAR工程): http://mcuxpresso.nxp.com/en/welcome


    运行步骤
    1.把官方的linux镜像文件烧写到sd卡中(Win32DiskImager软件即可或者linux下用dd指令),烧写完成,插入开发板,测试是否能boot起来。
    2.下载完imx8mm CM4核的SDK开发包后,解压,到EVK-MIMX8MM_max\boards\evkmimx8mm\demo_apps\sai_low_power_audio\iar目录,打开工程,编译得到sai_low_power_audio.bin文件。(如果无法编译,说明需要给iar打补丁)
    3.烧写完linux镜像的sd卡,通过读卡器接入PC,可以发现一个名为“Boot imx8mm”的磁盘,将iar工程编译得到的.bin文件拷贝到此磁盘中。
    4.通过PC的磁盘管理器可以看到,sd卡其实是有未使用的隐藏空间的,将其格式化成fat32格式,并将需要播放的音乐文(lpa_test.wav)件拷入其中。
    5.将sd卡插入开发板,开发板与多媒体底板通过FPC软排线连接,各自供电,然后打开开发板上的SW101电源开关,板子跑起来了。
    6.中断板子的autoboot,让其停留在uboot的命令行界面,我们需要在这里load M4 binary并让其运行起来,执行以下命令:
    1. fatload mmc 1:1 0x48000000 sai_low_power_audio.bin;cp.b 0x48000000 0x7e0000 20000;dcache flush;sleep 3;bootaux 0x7e0000
    复制代码
    观察M4的串口信息,如果得到以下log, 则说明M4运行成功(板子接入PC会枚举出两个虚拟串口,A核和M核各一个):
    1. ####################  LOW POWER AUDIO TASK ####################

    2.     Build Time: Nov 24 2019--19:32:39
    3. ********************************
    4. Please follow:
    5.   (1) Boot Linux kernel first to create the link between M core and A core;
    6.   (2) If want to make the M core enter STOP mode when there is no audio playback, press "s" or "S" first;
    7.   (3) Audio playback is allowed even skip the step 2 using the playback command.
    8. ********************************
    复制代码
    运行多核demo需要特定的fdt file,在uboot界面输入:
    1. setenv fdt_file fsl-imx8mm-evk-m4.dtb
    2. save
    复制代码

    接着可以在uboot界面输入"boot"命令启动kernel ,以"root"为用户名登录,接着查看音乐文件存放在哪个分区(df指令找一下),比如我存放在: /run/media/mmcblk1p3/lpa_test.wav
    7.这时候运行播放命令,即可通过耳机听到音乐了:
    1. aplay -Dhw:0  /run/media/mmcblk1p3/lpa_test.wav
    复制代码


    1.由于篇幅问题,我这里可能说的比较简单,其实具体信息都可以在SDK包中的《Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf》文档和对应的demo readme里获取。
    2.底板的codec芯片为ak4497,支持解码DSD文件,但是播放指令会有不同,具体参看readme。
    3.EVK板子自带 wm8524 codec,不需要底板也可以运行这个demo,但是需要用户修改代码中对应的宏,具体参看readme。
    4.早期的uboot是可以直接将M4 binary直接load到TCM里运行的,但是uboot-2019不支持这个操作了,所以现在是先load到DDR中,然后copy到TCM再运行。
    5.iar补丁的安装很简单,就是找到iar的安装路径,然后把补丁文件覆盖进去就行了,不然无法编译imx8系列的SDK工程



    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 17:01 , Processed in 0.116405 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表