百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

飞凌嵌入式丨如何在iMX8MQ 核心板上实现低功耗音频播放

ninehua 2025-04-11 03:10 43 浏览

飞凌嵌入式FETMX8MQ-C核心板基于NXP i.MX8MQ处理器设计,该处理器拥有4个Cortex-A53处理器(工业级主频最高为1.3GHz、商业级主频最高为1.5GHz)+1个Cortex-M4处理器。本文将系统讲解——如何在FETMX8MQ-C核心板上实现低功耗音频播放。

01、低功率音频应用概述

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

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

  • Linux的Play和 record应用
  • Linux RPMSG 字符设备驱动
  • Linux 远程核心共享内存驱动程序
  • FreeRTOS 音频服务

低功率音频程序

02、软件设计

RPMSG字符设备驱动程序

i.MX8上,核心间使用RPMSG机制来进行消息通信。RPMSG是基于MU模块实现的。

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

在低功耗音频应用中,Linux需要创建一个非缓冲、非缓存和连续的内存来存储解码的音频数据。M4core只能处理这样的内存空间。

此外,Linux需要获得内存的物理地址并将其传递给M4核心。

通常,在Linux中,我们有两种方法来创建这样的内存空间。

  • 使用DMA内存空间,这是使用CMA(连续内存分配器)。
  • 在DTS文件中预定义了一个保留的内存空间。

这里我们建议使用DMA内存空间。它更灵活。我们不需要分配一个保留的内存空间,我们可以释放分配的空间。同时,我们可以得到实际地址。

对于这种情况,函数dma_alloc_coherent()是一个理想的函数。

在此基础上,我们创建了一个远程核心共享内存驱动程序,它可以帮助用户分配、读写DMA相干内存空间。

AMP优化

默认情况下,当检测到M4时,内核启用所有模块的时钟。所以SOC电流会很大。在i.mx8M上,电流大约是500毫安。

因此在内核中,我们需要启用m4程序所需的时钟,并对所有其他模块的时钟进行使能。

Linux低功率音频应用程序设计

下图表明低功耗播放音频功能的模块间的关系

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核调试串口可以看到


运行低功耗音频应用

当音频服务在M4内核上运行时,在u-boot中引导内核。

安装RPMSG字符设备和远程核心共享内存驱动程序。

运行./lp_play./ xxxxx .mp3启动低功耗播放。

调试信息:

解码

播放并睡眠

唤醒

运行./lp_record启动低功耗录音。录音的数据将保存为audio_rect.tmp。

04、时间消耗

在低功率音频解决方案中,数据在A53核解码,然后M4核播放。在核之间的协议通信中有一些时间损失。我们试着计算一下这个解的时间损失。

在这个例子中,我们将以两种方式播放48kbps,22050 Hz的steromp3文件,A53核直接播放和M4核通过RPMSG播放。将比较从使用gstreamer打开文件到播放的持续时间。仅对播放进行测试,用户可以根据回放情况对录音进行评估。

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

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

05、功耗测试

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

正常播放

低功耗音频播放

注:本文来自NXP提供的ApplicationsNote AN1219

相关推荐

Origin将普通双Y轴柱状图升级为高级的3D倒影柱状图

双Y轴柱状图可以在同一张图表中展示两组具有不同量纲或数量级的数据。3D倒影柱状图是一种通过三维立体及倒影形式展示多个数据的图表,它通过柱子的高度和颜色来表示不同的数据类别和数值大小,以及通过不同平面展...

Origin 2021 安装教程(附安装包下载)

Origin2021软件介绍广泛用于科研、工程和数据分析领域。它支持多种数据格式,包括Excel、ASCII、CSV等,可以方便地导入和分析各种类型的数据。Origin提供了丰富的数据分析工具,包括...

VIVO origin os系统关闭广告教程(IQOO同理)

以下是我使用期间发现的,如有其他未发现的,欢迎大家评论补充。1设置-安全-更多安全设置-广告与隐私-个性化广告推荐关闭2设置-安全-更多安全设置-应用安装-应用推荐关闭3设置-系统管理-全局搜索-首页...

Origin 2019 安装教程(附安装包下载)

Origin2019软件介绍广泛用于科研、工程和数据分析领域。它支持多种数据格式,包括Excel、ASCII、CSV等,可以方便地导入和分析各种类型的数据。Origin提供了丰富的数据分析工具,包括...

vivo开启Origin OS3系统公测,并且公布首批至第四批可升级名单

vivo在本月初发布了OriginOS3.0操作系统,11月25日开启了首批机型的公测招募活动,首批公测机型包括vivo和iQOO,共计14款机型。首批公测招募的机型有:vivoxfold+、v...

Origin将普通热图升级为高级的3D堆叠热图

3D堆叠热图是一种将多个热图组合在一起展示的图表可视化形式。每个热图代表一个数据集,通过比较不同数据集在不同条件(分组)下的颜色深浅变化来挖掘数据的大小差异或者相关性,能够直观地比较多组数据的相对强度...

最新最详细的Origin2021安装教程(保姆级)

直入正题,下面是Origin2021的安装过程安装包(复制到浏览器打开):%74%2E%63%6E/%41%36%4E%67%6D%54%74%4A安装步骤1、下载得到安装包后,请先解压!一定要先解压...

vivo和iQOO抓紧更新 OriginOS5末班车 12月最后一波升级

进入12月底了,很多老旧机型也已经开始更新各家的新系统了,所以大家一定要注意查看系统版本更新。那么就拿今年国内销量第一的vivo和iQOO来说,OriginOS5都已经推出两个月了,根据之前公布的适...

Origin将普通点线图转换为高级的3D堆叠点线图

点线图用于显示数据随时间或其他连续变量的变化趋势;点线图主要功能是展示数据随时间或连续变量的变化趋势,强调变化幅度,比较多个变量,描述周期性变化,识别异常值,并帮助分析趋势和预测未来趋势。当具有多组数...

蓝厂Origin OS 2.0首批适配机型曝光!有没有你的手机型号?

2020年11月18日蓝厂新系统OriginOS正式发布,并由后来的X60系列首发,新系统发布后网上就有言论:蓝厂补足了最后一块短板!发布至今大概已经有11月的时间了,网上也是褒贬不一,Origin...

Origin2018软件安装包以及安装教程

安装步骤:1.鼠标右击软件压缩包,选择“解压到Origin2018”2.打开“Origin2018\Origin2018”文件夹,鼠标右击“setup”,选择“以管理员身份运行”3.软件正在准备...

Origin这样操作,轻松绘制漂亮的雷达图

背景介绍雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。轴的相对位置和角度通常没有信息。雷达图也称为网络图、蜘蛛图、星图、星图、蜘蛛网、不规则多边形...

曝OriginOS新版本在“玩命打磨底层”流畅性比肩鸿蒙

  日前,vivo正式官宣了2022年vivo开发者大会的举办时间:11月8日-11月9日。OriginOS全新版本届时将正式登场。时隔一年,这次全新OriginOS又将给我们带来什么样的全新体验? ...

Dify工具使用全场景:1.0.1发布了,升级(功能篇·第8期)

上一篇:Dify工具使用全场景:API扩展(功能篇·第7期)一、Dify1.0.1版本升级特性Dify1.0.1版本在稳定性、性能和用户体验方面进行了全面升级,修复了之前版本中的一些已知问题,带来...

vivo 新系统originOS 升级公测后增加手机内存

vivo新系统originOS,通过内存融合、进程优化、应用预载三种技术,一方面调用部分闲置的闪存空间,另一方面低系统对内存的占用,从而可以让原硬件内存增加2-3GB内存使用。vivo新系统ori...