zoukankan      html  css  js  c++  java
  • 迅为IMX6Q开发板QT系统移植tinyplay

    配套资料在网盘资料的“迅为iTOP-i.MX6开发板资料汇总(不含光盘资料)8_迅为iTOP-i.MX6开发板 Linux 系统开发资料13-Linux 系统移植 tinyplayiTOP-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”,音频文件的具体路径应以实际情况为准,操作完成如下图所示。

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

  • 相关阅读:
    QTP问题:查询文件被占用
    QTP自动化
    Spring: $Proxy9 cannot be cast to test.spring.service.impl.PersonServiceImpl2
    spring: White spaces are required between publicId and systemId.
    spring学习1
    MyBatis学习(1)
    从技术人员的角度看,公司怎么生存?
    一天一工程总结系列-7.7-KVOController
    appCode使用说明
    ios开发中的字符串常量如何处理
  • 原文地址:https://www.cnblogs.com/liyue3/p/15165465.html
Copyright © 2011-2022 走看看