默认 dts 中使能了 codec
需要使用的话,在 buildroot 中勾选 alsa-utils 相关命令即可
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没问题,但对于移动设备来说,这意味着浪费大量的电量。同时也不支持通过改变过取样频率和偏置电流来达到省电的目的。
1、在 buildroot 根目录下执行 make menuconfig,选择 Target packages
2、选择 Audio and video application
3、勾选 atest,选择 alsa-utils
4、按照下图进行配置
5、保存
6、make,重新编译文件系统
sudo tar xf ./output/images/rootfs.tar -C /media/Gnep/rootfs/
上电可以看到这样一条打印
执行下列命令,查看 CODEC 设备
ls /dev/snd
使用该设备编程可以参考:http://blog.csdn.net/zhenwenxian/article/details/5901239
出现了该设备说明codec驱动被正确加载。
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
戴上耳机就可以就可以听到录制的音频