来源:华清远见研发中心
一、驱动的移植
这个驱动在内核中支持,我们只需要进行简单的配置就行了,配置如下:
$ make menuconfig
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
SoC Audio for the Samsung S3C --->
<*> SoC Audio for the Samsung S3C chips
<*> SoC AC97 Audio support for SMDKC100 - WM9713
SMDK Record Path Select (Input Stream is MIC) --->
(X) Input Stream is MIC
这里record path必须选择为MIC否则无法录音(华清远见研发中心原创,转载请注明出处)。
二、ALSA工具移植
我们要实现语音的录制和播放,在这里我们选择了alsa-utils,下面是它的移植过程,首先我们需要下载alsa工具的源码,包括alsa-lib和alsa-utils,在下载这两个源码的时候我们尽量让他们的版本移植,减少不必要的麻烦,下载网站如下:
http://www.alsa-project.org/main/index.php/Download
这里我们选择的版本是:
alsa-lib-1.0.23.tar.bz2
alsa-utils-1.0.23.tar.bz2
1、alsa-lib移植
1)解压代码
$ tar xvf alsa-lib-1.0.23.tar.bz2
2)配置
$ cd alsa-lib-1.0.23
$./configure --host=arm-none-linux-gnueabi
--prefix=/home/david/project/S5PC100/alsa/alsa-lib
3)编译
$ make
4)安装
$ make install
2、alsa-utils移植
1)解压代码
tar xvf alsa-utils-1.0.23.tar.bz2
2)配置
$ cd alsa-utils-1.0.23
$ ./configure --host=arm-none-linux-gnueabi
--prefix=/home/david/project/S5PC100/alsa/alsa-utils
--with-alsa-inc-prefix=/home/david/project/S5PC100/alsa/alsa-lib/include
--with-alsa-prefix=/home/david/project/S5PC100/alsa/alsa-lib/lib
--disable-alsamixer --disable-xmlto
3)编译
$ make
4)安装
$ make install
3、开发板配置
1)库的拷贝
将alsa的库拷贝到目标板根文件系统的lib下
$ cp alsa-lib/lib/libasound.* /source/rootfs-S5PC100/lib/
2) alsa的配置文件拷贝
除了库之外alsa的配置文件也需要拷贝到目标板根文件系统中,这里需要注意的是share目录在目标板的存放位置必须和在主机的存放路径移植,比如在主机上存放在/home/david/project/S5PC100/alsa/alsa-lib,那么我们就得把share放在目标板上的这个路径里
$ cp alsa-lib/lib/share/ /source/rootfs-S5PC100/ /home/david/project/S5PC100/alsa/alsa-lib
3) alsa-utils拷贝
将alsa-utils/bin目录小的内容拷贝到目标板根文件系统中的bin下
$ cp alsa-utils/bin/* /source/rootfs-S5PC100/bin/
4、测试
1)录音测试
单声道录音:
$ arecord -d 10 -t wav -c1 -r 22050 -f S16_LE test.wav
立体声录音:
$ arecord -d 10 -t wav -c2 -r 22050 -f S16_LE test1.wav
2)放音测试
$ aplay test.wav