文章目录

  • 前言
  • 一、ALSA 简介
  • 二、ALSA 框架
  • 三、buildroot 配置
  • 四、烧录到 SD 卡
  • 五、测试
    • 1、查看 CODEC 设备
    • 2、alsa-utils 使用
      • ①、查看设备
      • ②、调节音量
      • ③、查看控制器
      • ④、录音测试
      • ⑤、播放测试

前言

默认 dts 中使能了 codec

需要使用的话,在 buildroot 中勾选 alsa-utils 相关命令即可


一、ALSA 简介

ALSA 是 Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System,开放声音系统)。

ALSA的官方网址为:https://www.alsa-project.org/wiki/Main_Page

但是ALSA的缺点也是十分明显的:1、Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Linux中有分别针对4个平台的驱动代码。2、音频事件没有标准的方法来通知用户,例如耳机、麦克风的插拔和检测,这些事件在移动设备中是非常普通的,而且通常都需要特定于机器的代码进行重新对音频路劲进行配置。3、当进行播放或录音时,驱动会让整个codec处于上电状态,这对于PC没问题,但对于移动设备来说,这意味着浪费大量的电量。同时也不支持通过改变过取样频率和偏置电流来达到省电的目的。

二、ALSA 框架

三、buildroot 配置

1、在 buildroot 根目录下执行 make menuconfig,选择 Target packages

2、选择 Audio and video application

3、勾选 atest,选择 alsa-utils

4、按照下图进行配置

5、保存

6、make,重新编译文件系统

四、烧录到 SD 卡

sudo tar xf ./output/images/rootfs.tar -C /media/Gnep/rootfs/

五、测试

1、查看 CODEC 设备

上电可以看到这样一条打印

执行下列命令,查看 CODEC 设备

ls /dev/snd

  • controlC0表示控制器
  • pcmC0D0c 表示capture
  • pcmC0D0p 表示play
  • timer 表示定时器

使用该设备编程可以参考:http://blog.csdn.net/zhenwenxian/article/details/5901239

出现了该设备说明codec驱动被正确加载。

2、alsa-utils 使用

①、查看设备

arecord -l

②、调节音量

alsamixer

alsamixer 是图形化的 amixer 工具,如下图所示
按 F4
从左到右是:耳机音量,耳机输出源,Mic增益,mic1 boost,DAC增益。

可以很方便地调整音频输出设置

00表示当前音量正常,MM表示此声道是静音。可以通过键盘上的M键来切换静音和正常状态。

开机后默认状态是静音状态,需要取消掉静音状态

或者执行下列命令设置音量和解除静音

amixer -c 0 sset 'Headphone',0 100% unmute

alsamixer

③、查看控制器

amixer contents

④、录音测试

耳机输入内置了放大器。

耳机,linein,同时只能使用1种。

使用输入端口前需要设置 mixer 控制器,ADC input Mux

ADC Input Mux 和对应的输入端口

0   linein
1   fmin
2   mic1
3   mic2
4   mic1,mic2
5   mic1+mic2
6   output mixer
7   linein,mic1

使用amixer来设置通道

amixer -c <"card"> cset numid=<"control#"> <"input_port">where:
<"card"> is the card, 0 for the sunxi-codec and 1 for the hdmi audio output
<"input_port"> is the input port from the table
<"control#"> is the control # showed using: aximer contents

card,device 的确定方法:
card,device 必须对应 hdmi 的声卡号和设备号,可以使用 aplay -l 查看对应的 hdmi 设备,可能会有出现多个 hdmi设备,确定当前可以使用的hdmi设备的方法如下:

aplay -l

cat /proc/asound/cards # 查看nvidia设备对应的ID号(根据下面的查看就是为0)


使用下面命令使能耳机并录音

amixer -c 0 cset numid=12 2     # 使能mic1
arecord -D hw:0,0 -d 3 -f S16_LE -r 16000 tmp.wav   # 3s 录音测试

生成的音频文件

或执行下面的录音10s

arecord -f cd -d 10 record.wav

-f 是设置录音质量,“-f cd”表示录音质量为 cd 级别。-d 是指定录音时间,单位是 s,这条指令就是录制一段 cd 级别 10s 的 wav 音频,音频名字为 record.wav。录制的时候大家就可以对着开发板上的 MIC 说话,直到录制完成。

⑤、播放测试

amixer -c 0 sset 'Headphone',0 100% unmute
speaker-test -twav -c2
atest
aplay  tmp.wav

戴上耳机就可以就可以听到录制的音频


我的qq:2442391036,欢迎交流!

荔枝派Zero(全志V3S)开启alsa,测试codec相关推荐

  1. 4.荔枝派 zero(全志V3S)-开启alsa,测试codec

    上面是我的微信和QQ群,欢迎新朋友的加入. 1.buildroot配置 按照如上配置,重新编译文件系统,拷贝到设备 2.测试 查看设备 # arecord -l **** List of CAPTUR ...

  2. 荔枝派Zero | 全志V3s 开发教程(一) 烧录系统镜像的方法以及如何烧录主线Linux系统镜像

    荔枝派Zero | 全志V3s 开发教程(一) 荔枝派Zero的开发教程: http://zero.lichee.pro/系统开发/type.html 刚开始尝试编译Camdroid官方SDK,最终浪 ...

  3. 1.荔枝派 zero(全志V3S)-编译及SD烧录

    上面是我创建的群聊,欢迎新朋友的加入. 之前买了个荔枝派,全志的A3S芯片.折腾了两天,写一下编译和SD烧录的过程. 目录 1.直接烧录镜像文件 2.uboot编译 3.kernel编译 4.root ...

  4. 7.荔枝派 zero(全志V3S)-编译内核驱动,生成KO文件

    上面是我的微信和QQ群,欢迎新朋友的加入. 在网上溜了一大圈,发现竟然没人写过荔枝派编译内核驱动的帖子. 或许是我输入的关键字不对 今天特意做了一下这个事情. 1.改kernel makefile 当 ...

  5. 5.荔枝派 zero(全志V3S)-buildroot配置播放视频

    上面是我的微信和QQ群,欢迎新朋友的加入. 1.开启ALSA和MPLAY 编译烧录 2.测试 amixer -c 0 sset 'Headphone',0 100% unmute cd /usr/bi ...

  6. 13.荔枝派 zero(全志V3S)-gadget Mass Storage虚拟U盘

    上面是我的微信和QQ群,欢迎新朋友的加入. make ARCH=arm menuconfig 配置如图 保存之后,重新编译 make ARCH=arm CROSS_COMPILE=arm-linux- ...

  7. 荔枝派Zero(全志V3S)编译Kernel

    文章目录 前言 一.安装依赖 二.安装交叉编译器 三.下载linux源码 四.编译linux源码 前言 上文我们讲述了uboot编译及配置,本文讲述了如何编译kernel,对编译过程中遇到的问题进行解 ...

  8. 玩转RT-Thread之荔枝派Nano(全志F1C100S) 新手上路

    玩转RT-Thread之荔枝派Nano(全志F1C100S) 一.新手上路 --作者:燕十三(flyingcys) blog:http://blog.csdn.net/flyingcys --荔枝派n ...

  9. 荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记

    首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点: 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用.如果希望自己烧固件 ...

最新文章

  1. Oracle数据库实例的创建、删除、修改
  2. 在android studio中配置ndk开发环境
  3. Python 第三方模块之 imgaug (图像增强)
  4. 最小拍控制系统详细解读(阶跃输入+速度输入2个案例)【Simulink仿真】
  5. 执行h2o的python命令时出现:TypeError: ‘NoneType‘ object is not callable
  6. endnote如何导入txt文件_python如何处理txt及excel文件
  7. html插入swf自动播放,html嵌入播放器,flv视频播放器 Flvplayer.swf 可自动播放参数说明...
  8. Tomcat介绍和MyEclipse搭建DRP系统
  9. HbuilderX开发App调用手机支付宝支付
  10. JavaScript 判断手机号码格式 正则表达式 亲测
  11. 沈阳大学博客网站的设计与实现
  12. 学习matlab(六)——微分和积分
  13. 计算机取证(Windows)FTK+X-Way取证复制
  14. Java基础——LinkedList源码分析
  15. uniapp 简陋易懂版仿抖音视频播放
  16. 解决无法正常下载Git安装包的问题
  17. 将Vue项目methods中的方法暴露在window上
  18. 胡新宇.华为.过劳死
  19. dumpbin是什么意思_Boost 连接库的命名含义
  20. 小程序毕业设计 基于微信医院预约挂号小程序毕业设计开题报告功能参考

热门文章

  1. Java的静态类详解
  2. Java ASCII编码表和运算符
  3. DataStage(ETL)技术总结
  4. 二维静电场有限元matlab,利用MATLAB计算电磁场有关分布
  5. 【云原生】阿里云容器镜像服务产品ACR EE
  6. julia的Unicode 字符输入
  7. FreeRTOS 任务简介
  8. 在使用npm install时遇到的问题 npm ERR! code ERESOLVE
  9. 你还在为无法完美卸载SQL Server 2008 R2而烦恼吗?
  10. 探索 SwiftUI 基本手势