arm linux 下mq,飞凌嵌入式干货分享丨如何在iMX8MQ 核心板上实现低功耗音频播放…

原标题:飞凌嵌入式干货分享丨如何在iMX8MQ 核心板上实现低功耗音频播放

01、低功率音频应用概述

在这个应用中,i.MX8处理器A53内核会向M4内核发送请求,然后休眠。M4核独立播放或录制音频,操作完成后唤醒A53核。

五个软件组件被创建来实现这个功能:

Linux的Play和 record应用

Linux RPMSG 字符设备驱动

Linux 远程核心共享内存驱动程序

FreeRTOS 音频服务

1. 低功耗播放程序

低功耗播放程序将解码mp3文件,并在M4核心上播放该文件。

在本程序中,我们将:

解码mp3音频文件。

复制解码数据到共享内存空间。

将已分配缓冲区的物理地址发送到M4核心。

Linux休眠,等待唤醒信 。

当播放结束时,MU中断信 唤醒Linux。

2.低功耗录音程序

低功耗录音程序将接收M4核心上的声音,并在“A53”核心上保存PCM原始数据。

程序将:

分配足够的共享内存空间。

将已分配缓冲区的物理地址发送到M4核心。

Linux休眠,等待唤醒信 。

当录音完成时,MU中断信 唤醒Linux。

从共享内存空间获得音频数据并保存到文件。

3.Decode mp3音频文件

在这个程序中,我们使用gstreamer解码mp3文件到PCM原始数据。

4.复制解码数据到共享内存空间

在这里,我们将使用远程核心共享内存驱动程序将PCM原始数据复制到一个连续的内存空间。

5.将已分配缓冲区的物理地址发送到M4核心

使用RPMSG字符设备发送物理地址的缓冲区到M4核心。

这里我们强调,通常,在一个核心和M4核心之间应该有一个协议。使用RPMSG字符设备,可以在用户空间中实现协议。例如,在低功耗播放程序中,为了访问远程M4核上的音频设备,我们创建了一个音频请求和响应协议。

6. Linux 内核休眠

在Linux中进入挂起模式的命令是:

echomem > /sys/power/state

7. Linux 内核唤醒

在ATF补丁中,我们添加了MU中断作为唤醒源。当Linux内核从M4核得到MU中断时,它将被唤醒。

03、运行低功率音频的程序示例

本章介绍了运行低功率音频的程序示例

? ATF 低功耗补丁

ATF实现了功率状态协调接口(PowerState Coordination Interface, PSCI),并具有低功耗的特性。

在默认BSP发行版的Linux内核中,它将会使Cortex-A53内核和Cortex-M4内核同时处于挂起模式。因此ATF需要一个补丁来配合低功耗应用。

ATF补丁将阻止DDR进入retention模式,并且不禁用PLLs

? 重新编译内核和驱动

在内核中,加上RPMSG字符设备驱动程序和远程内核共享内存驱动程序的补丁。

? 编译低功耗音频应用

编译低功耗音频应用

? 编译Cortex-M4核应用

Cortex-M4应用是由IAR开发的,IAR并打开音频服务器示例并编译。

? 准备好测试环境

连接好A核和M4核调试串口

? 启动uboot运行M4核音频服务程序

在M4核调试串口可以看到

调试信息:

解码

唤醒

由于低功耗音频播放将做额外的操作,如解码mp3到文件,分配CMA缓冲区,将音频数据从文件到缓冲区,然后从缓冲区到CMA缓冲区,需要一些额外的时间,大约350毫秒。

可以对低功耗播放的其他操作进行一些优化,比如在GST解码中使用appsync,它将把mp3数据直接解码到缓冲区中,通过这种方式,额外的时间可以减半。

05、功耗测试

本章对使用或不使用低功率音频比较了功耗。仅对播放进行测试,用户可以根据播放情况对录音进行评估。

正常播放

https://www.forlinx.com/article_view_566.html返回搜狐,查看更多

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24890 人正在系统学习中 相关资源:基于java的GUI图形化界面的汽车油耗软件-Java代码类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月11日
下一篇 2021年4月11日

相关推荐