一、CODEC设备检查
1. sun8i-v3s-licheepi-zero-dock.dts中已经默认使能了codec,如下图所示:
2. 通过SecureCRT 查看串口输出的linux kernel日志也可以查看到codec:
3. 进入根文件系统下/dev/snd,查看设备信息:
ls /dev/snd
<1> controlC0表示控制器,C0就是声卡0。
<2> pcmC0D0c 表示capture,是用于录音的pcm设备。
<3> pcmC0D0p 表示playback,是用于放音的pcm设备。
<4> timer 表示定时器
如果以上检查都没问题,说明codec设备被成功使能!但是音频驱动被使能以后还不能直接播放音乐或者录音,还需要移植alsa-lib和alsa-utils这两个库文件。
二、alsa-lib移植
1. 首先下载alsa-lib和alsa-utils源码,下载地址为:http://www.alsa-project.org/main/index.php/Main_Page。当前最新版本为 1.2.12,如下图所示:
2. 注意 alsa-lib 编译过程中会生成一些配置文件,而这些配置信息的路径都是绝对路径,因此为了保证 ubuntu 和开发板根文件系统中的路径一致!我们需要在 ubuntu 和开发板中各创建一个路径和名字完全一样的目录,这里我们都创建一个/usr/share/arm-alsa 目录,ubuntu 中创建命令如下:
cd /usr/share
sudo mkdir arm-alsa
在开发板根目录中也创建一个/usr/share/arm-alsa目录:
mkdir /usr/share/arm-alsa -p
这样我们在交叉编译的时候就可以使用绝对路径了。
3. 进入ubuntu下的/home/daemonchen/linux/V3S,创建文件夹tool/alsa-lib用来保存编译结果:
cd /home/daemonchen/linux/V3S
mkdir tool
mkdir tool/alsa-lib
将下载好的alsa-lib-1.2.12.tar.bz2文件拷贝到/home/daemonchen/linux/V3S/tool下,并进行解压:
tar -vxjf alsa-lib-1.2.12.tar.bz2
4. 解压完成以后就会得到一个名为“alsa-lib-1.2.12”的文件夹,这个就是 alsa-lib 的源码。进入alsa-lib-1.2.12 目录,然后配置并编译,命令如下:
cd alsa-lib-1.2.12/
./configure --host=arm-linux-gnueabihf --prefix=/home/daemonchen/linux/V3S/tool/alsa-lib --with-configdir=/usr/share/arm-alsa
5. 切换到root用户模式下进行编译:
sudo su
source /etc/profile
make
make install
exit
编译完成后就会在/home/daemonchen/linux/V3S/tool下保存相应的编译结果,如下图所示:
ubuntu中/usr/share/arm-alsa目录下的内容如图所示:
6. 将 /home/daemonchen/linux/V3S/tool目录下的所有文件拷贝到开发板根文件系统/usr/lib目录下,将 ubuntu中/usr/share/arm-alsa目录下的所有文件拷贝到开发板的/usr/share/arm-alsa目录下:
cd alsa-lib
sudo cp lib/* /home/daemonchen/linux/nfs/rootfs/lib/ -af
cd /usr/share/arm-alsa
sudo cp * /home/daemonchen/linux/nfs/rootfs/usr/share/arm-alsa/ -raf
三、alsa-utils移植
1. 进入ubuntu下的,创建文件夹alsa-utils用来保存编译结果:
cd /home/daemonchen/linux/V3S/tool
mkdir alsa-utils
2. 将下载好的alsa-utils-1.2.12.tar.bz2文件拷贝到/home/daemonchen/linux/V3S/tool下,并进行解压。
tar -vxjf alsa-utils-1.2.12.tar.bz2
3. 解压成功以后会得到一个名为“alsa-utils-1.2.2”的文件夹,此文件夹就是 alsa-utils 源码。配置编译如下所示:
cd alsa-utils-1.2.12/
./configure --host=arm-linux-gnueabihf --prefix=/home/daemonchen/linux/V3S/tool/alsa-utils --with-alsa-inc-prefix=/home/daemonchen/linux/V3S/tool/alsa-lib/include/ --with-alsa-prefix=/home/daemonchen/linux/V3S/tool/alsa-lib/lib/ --disable-alsamixer --disable-xmlto
4. 切换到root用户模式下进行编译:
sudo su
source /etc/profile
make
make install
exit
5. 编译完成以后就会在前面创建的“/home/daemonchen/linux/V3S/tool/alsa-utils”目录下生成 bin、sbin 和 share 三个文件夹,如下所示:
6. 将/home/daemonchen/linux/V3S/tool/alsa-utils目录下的所有文件拷贝到开发板根目录下的/bin、/sbin 和/usr/share/alsa 目录下,命令如下:
cd alsa-utils
sudo cp bin/* /home/daemonchen/linux/nfs/rootfs/bin/ -rfa
sudo cp sbin/* /home/daemonchen/linux/nfs/rootfs/sbin/ -rfa
sudo cp share/* /home/daemonchen/linux/nfs/rootfs/usr/share/ -rfa
7. 打开开发板根文件系统中的/etc/profile 文件,在里面加入如下所示内容:
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.conf
ALSA_CONFIG_PATH 用于指定 alsa 的配置文件,这个配置文件是 alsa-lib 编译出来的。
四、开机测试
进入根文件系统后,输入以下命令查看设备:
arecord -l
成功安装alsa-utils的话,将输出一下内容:
五、音乐播放测试
1. 在根文件系统下创建music文件夹,并将放入一个wav格式的测试音频test.wav:
2. 播放音乐测试(耳机一定要插紧,我第一次没插紧,导致只有一个耳机有声音):
amixer -c 0 sset 'Headphone',0 50% unmute
aplay test.wav
成功播放音乐!
六、录音及播放测试
1. 使用下面的命令使能麦克风并录音:
amixer -c 0 cset numid=12 2 使能mic1
arecord -D hw:0,0 -d 3 -f S16_LE -r 16000 tmp.wav 录音测试
2. 播放测试:
amixer -c 0 sset 'Headphone',0 100% unmute
aplay tmp.wav