迅为IMX6Q开发板QT系统移植tinyplay

配套资料在网盘资料的“迅为iTOP-i.MX6开发板资料汇总(不含光盘资料)\08_迅为iTOP-i.MX6开发板 Linux 系统开发资料\13-Linux 系统移植 tinyplay\iTOP-iMX6-Linux 系统-声卡移植 tinyplay.zip”
tinyalsa 是 Google 在 Android 4.0 之后推的基于 alsa 内核的用户层音频接口。tinyalsa 提供的头文件是"asoundlib.h",提供最基础的 pcm 和 mixer 操作。
tinyalsa 的实现文件为 pcm.c(实现 pcm api)和 mixer.c(实现 mixer api)。在其中有四个小工具它们分别是:
tinypcminfo:tinypcminfo.c,查看 pcm 设备能力;
tinyplay:tinyplay.c,使用 pcm 设备播放 wav 格式的音频文件;
tinycap:tinycap.c,使用 pcm 设备采集 pcm 格式的码流,并保存为 wav 格式的文件;
tinymix:tinymix.c,对 pcm 设备的控制,包括音量调节、设备切换。
这四个工具使用时可以先使用 tinypcminfo 查看 pcm 设备的能力,以防我们使用其他三个命令时使用
了不合理的配置会出现 parameter invalid 的错误。
本文档适用于最小 Linux 系统以及 Qt 系统。

64.1 源码编译
查看本次提供的压缩包内容,分别为指导文档,测试音乐以及源码文件夹,如下图所示。

将提供的压缩包中的文件夹 tinyalsa 拷贝到 Ubunut 的工作目录,如图。

本次编译环境为“arm-2009q3”,如下图所示。

进入到 ubuntu 上的 tinyalsa 文件夹,在当前目录下输入命令“make”,自动生成 4 个 可执行文件“tinycap、tinymix、tinypcminfo、tinyplay”。

编译完成。

64.2 耳机和喇叭测试
本次测试是在 iTOP-iMX6Q 开发板上进行,耳机,麦克风的连接如图。喇叭左声道是 J5,右声道是 J6。

64.2.1 测试环境和 tinymix
将上一步生成的 4 个二进制可执行文件和我们提供的测试音乐 1.wav 文件拷贝到 U 盘,插入到运行最小 Linux 系统的 iMX6Q 开发板上,挂载 U 盘使用命令 “mount /dev/sda1 /mnt/disk”,如下图所示。

如果在 qt 系统上,那么先需要使用命令“mknod /dev/sda1 b 8 1”创建节点,再使用命令“mount/dev/sda1 /mnt/disk”挂载 U 盘,如下图所示。

然后使用命令“cp /mnt/disk/tiny* /bin”将 U 盘中的四个可执行文件拷贝到“/bin”目录下,如下图所示。

接着在控制台输入“tinymix”命令,如下图所示,可以看到全部设置。

第一行显示“Number of controls: 52”表明有 52 条 tinymix 混音命令。
第二行是介绍 0-52 条命令的表格; 第一列 ctl 表示编号。使用对应命令的时候如果想用第 n 条命令,则 tinymix 要加上第一个参数 n; 第二列 type 表示类型。INT 类型可以设置为 0-127 或者 255,BOOL 表示可以设置为 0 和 1; 第三列 num 表示“可控制数目”。例如,有两个耳机(左耳和右耳)通道,可是只用设置一个参数 4 同时就可以设定两 个耳机的音量;第四列 name 解释命令;第五列 value显示参数当前的值。
测试中需要用到的命令如下表所示。注意,下表中只有最常用的命令,其它命令可以使用 tinymix 命令查看研究,这里不再赘述。

编号 5 中的零交叉检波(Zero Cross detection)设置增益只有在输入信号零交叉后才会变化,开启此项以避免增益变化引起的咔咔声。
应该注意的是,无论在最小 Linux 系统还是 Qt 系统,声音默认同时从扬声器以及内置耳机输出,并没有切换内外放的开关。而当扬声器的两个声道同时打开时,默认只有右声道有声音,要想使用左声道输出,则需关闭右声道。即扬声器只能作用在一个声道。如果在耳机和扬声器同时设置非零音量时播放音乐,声音从耳机以及扬声器的右声道传出。

64.2.2 耳机播放测试
使用耳机输出,则在串口控制台依次执行以下命令:tinymix 4 127、tinymix 5 1、 tinymix 38 1、
tinymix 41 1,如下图所示。

接下来在串口控制台输入“tinyplay /mnt/disk/1.wav”,音频文件的具体路径应以实际情况为准,操作完成如下图所示。

可以看到正在播放,并且耳机中可以听到声音,退出播放使用快捷键 Ctrl+c。

64.2.3 扬声器喇叭播放测试
使用扬声器,则需在串口依次输入以下命令:tinymix 6 127、tinymix 7 1、tinymix 38 1、tinymix
41 1,如下图所示。

接下来在串口控制台输入“tinyplay /mnt/disk/1.wav”,音频文件的具体路径应以实际情况为准,操作完成如下图所示。

可以听到扬声器中有声音播放。

posted @ 2021-08-20 10:50  心底狂像  阅读(225)  评论(0编辑  收藏  举报