alsa编译

内核版本:由menuconfig配置文件TOP6410_3d.config编译所得内核2.6.28.6(使用老版28内核或使用默认menuconfig配置文件编译会出现alsa录音没有声音的问题)

文件系统版本:老版光盘中的ubifs即可

alsa-lib版本:1.0.9

alsa-util版本:1.0.9a

其他版本的alsa-lib和alsa-util不能保证正常工作




在上述版本的内核、ubifs已成功烧录至6410后(调试阶段也可采用tftp下载内核、nfs挂载ubifs),开始下面的工作

首先在Ubuntu上交叉、编译alsa-lib和alsa-util

1.解压alsa-lib-1.0.9.tar,进入解压所得目录

2.使用命令

./configure --host=arm-none-linux-gnueabi --prefix=/usr/share/arm-alsa

Tips:--host参数指定了交叉编译器为“arm-none-linux-gnueabi-gcc",因此必须确保交叉编译器已成功配置,且可以在shell里直接调用;--prefix参数指定了alsa-lib的目标安装目录,之后的alsa-util配置也一样

3.使用命令

make

sudo make install

Tips:make install必须加上sudo,因为在install过程中会创建某些目录

4.解压alsa-util-1.0.9a.tar,进入解压所得目录

5.使用命令

./configure --host=arm-none-linux-gnueabi --prefix=/usr/share/arm-alsa --with-alsa-inc-prefix=/usr/share/arm-alsa/include --with-alsa-prefix=/usr/share/arm-alsa/lib --disable-alsamixer

Tips:--with-alsa-inc-prefix和--with-alsa-prefix分别指定了交叉编译util应用所需要的alsa-lib的头文件和库文件;--disable-alsamixer表示不编译生成alsamixer这个应用程序,因为该程序依赖于ncurses这个图形界面库,目前我们对于该库还不能交叉编译,故放弃

6.使用命令

touch alsaconf/po/t-ja.gmo

避免之后make报错

7.使用命令

make

sudo make install

至此Ubuntu上的工作全部结束




接着要在6410上部署已交叉编译好的alsa-lib和alsa-util

为便于理解,设6410的根目录为$rootfs

1.将Ubuntu中alsa安装目录下的所有文件移至6410的对应目录(绝对路径必须一致),使用命令

sudo cp -r /usr/share/arm-alsa $rootfs/usr/share/

2.将alsa安装目录下已交叉编译好的alsa库移至6410的默认库搜索目录,使用命令

sudo cp -r $rootfs/usr/share/arm-alsa/lib/* $rootfs/lib/

3.将alsa安装目录下已交叉编译好的alsa-util应用程序移至6410默认应用程序搜索目录,使用命令

sudo cp -r $rootfs/usr/share/arm-alsa/bin/* $rootfs/usr/sbin/

sudo cp -r $rootfs/usr/share/arm-alsa/sbin/* $rootfs/usr/sbin/

4.编辑$rootfs/etc/init.d/rcS,添加如下几行


[plain] view plaincopyprint?
#alsa_init  
mkdir /dev/snd  
ln /dev/controlC0 /dev/snd/controlC0  
ln /dev/pcmC0D0c /dev/snd/pcmC0D0c  
ln /dev/pcmC0D0p /dev/snd/pcmC0D0p  
ln /dev/timer /dev/snd/timer  
 
amixer cset numid=86 2  
amixer cset numid=87 2  

#alsa_init
mkdir /dev/snd
ln /dev/controlC0 /dev/snd/controlC0
ln /dev/pcmC0D0c /dev/snd/pcmC0D0c
ln /dev/pcmC0D0p /dev/snd/pcmC0D0p
ln /dev/timer /dev/snd/timer

amixer cset numid=86 2
amixer cset numid=87 2Tips:amixer的两句命令,是将amixer的默认设置'Left Capture Source'和'Right Capture Source'的值改为'Line‘,否则会出现alsa录音没有声音的问题

5.编辑$rootfs/etc/profile,添加如下两行


[plain] view plaincopyprint?
#alsa_init  
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/share/alsa/alsa.conf  

#alsa_init
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/share/alsa/alsa.confTips:该环境变量的值必须与alsa安装目录保持一致,否则使用aplay和arecord时会报错

至此alsa-lib、alsa-util移植完毕




测试

1.测试能否正常播放,使用命令

aplay test1.wav

test1.wav为已录制好的正常音频文件

2.测试能否正常录音,使用命令

arecord -d 10 -fdat test2.wav

-d表示录制时间为10秒,-fdat表示以dat质量进行录制(决定了采样率、声道等参数)



amixer 音量调节
amixer cset anduim=3 20


你可能感兴趣的:(综合项目开发)