配套资料在网盘资料的“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 系统。 1 源码编译 查看本次提供的压缩包内容,分别为指导文档,测试音乐以及源码文件夹,如下图所示。 将提供的压缩包中的文件夹 tinyalsa 拷贝到 Ubunut 的工作目录,如图。 本次编译环境为“arm-2009q3”,如下图所示。 进入到 ubuntu 上的 tinyalsa 文件夹,在当前目录下输入命令“make”,自动生成 4 个 可执行文件“tinycap、tinymix、tinypcminfo、tinyplay”。 编译完成。 2 耳机和喇叭测试 本次测试是在 iTOP-iMX6Q 开发板上进行,耳机,麦克风的连接如图。喇叭左声道是 J5,右声道是 J6。 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 命令查看研究,这里不再赘述。 编号 | | | | Headphone Playback Volume | | | Headphone Playback ZC Switch | | | | | | Speaker Playback ZC Switch | | | Right Output Mixer PCM Playback Switch | | | Left Output Mixer PCM Playback Switch | |
编号 5 中的零交叉检波(Zero Cross detection)设置增益只有在输入信号零交叉后才会变化,开启此项以避免增益变化引起的咔咔声。 应该注意的是,无论在最小 Linux 系统还是 Qt 系统,声音默认同时从扬声器以及内置耳机输出,并没有切换内外放的开关。而当扬声器的两个声道同时打开时,默认只有右声道有声音,要想使用左声道输出,则需关闭右声道。即扬声器只能作用在一个声道。如果在耳机和扬声器同时设置非零音量时播放音乐,声音从耳机以及扬声器的右声道传出。 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”,音频文件的具体路径应以实际情况为准,操作完成如下图所示。 可以听到扬声器中有声音播放。
|