alsa 库移植与声音编程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在移植alsa-lib和alsa-utils之前首先要移植alsa-device,保证系统支持alsa 驱动,移好alsa-device后再dev/snd后出现相应的设备:
∙controlC0 --> 用于声卡的控制,例如通道选择,混音,麦克风的控制等∙midiC0D0 --> 用于播放midi音频
∙pcmC0D0c --〉用于录音的pcm设备
∙pcmC0D0p --〉用于播放的pcm设备
∙seq --〉音序器
∙timer --〉定时器
1. tar -xvf alsa-lib_1.0.23.orig.tar.bz2
(1)配置alsa-lib
./configure --host=arm-fsl-linux-gnueabi
--prefix=/opt/ALSA/alsa_lib
CC=/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/a rm-fsl-linux-gnueabi-gcc
error:
configure error required courses helper header not found
安装libncursesw5-dev。apt-get install libncursesw5-dev
configure: error: panelw library not found
./configure加入--with-curses=ncurses
/bin/bash: xmlto: command not found
安装xmlto
/bin/rm: cannot remove `libtoolt': No such file or directory
强制make!
(2)
make
make install
生成的库
alsa_lib$ ls
bin include lib share
在这个文件lib下的库*.so.*是要发布到板子上去的,可以直接copy到开发板的根目录lib下
(这里只是copy,不要剪贴,后面还要用到,注意的是有些软连接不能copy,只能自己到板子上创建。。。)
2. tar -xvf alsa-utils-1.0.2
3.tar.bz2
./configure --host=arm-fsl-linux-gnueabi
--prefix=/opt/ALSA/alsa_utils/
--with-alsa-inc-prefix=/opt/ALSA/alsa_lib/include/
--with-alsa-prefix=/opt/ALSA/alsa_lib/lib/
--disable-alsamixer --disable-xmlto
注:
--with-alsa-inc-prefix:指定头文件为alsa-lib编译出来的头文件路径
--with-alsa-prefix:指定库文件为alsa-lib编译出来的库文件路径
error:
mv: cannot stat `t-ja.gmo': No such file or directory
解决方法是下载gettext:apt-get install gettext
make
make install
成功以后,你会在自己的alsa-utils安装路径下的bin目录下见到生成的工具
aconnect amidi amixer aplay aplaymidi arecord arecordmidi ase qdump aseqnet iecset speaker-test
3.alsa_lib
cp ALSA/alsa_lib/lib/libasound.* ./nfsdir_linux/lib/
alsa的配置文件拷贝
除了库之外alsa的配置文件也需要拷贝到目标板根文件系统中,这里需要注意的是share目录在目标板的存放位置必须和在主机的存放路径一致,比如在主机上存放在/home/david/project/S5PC100/alsa/alsa-lib,
那么我们就得把share放在目标板上的这个路径里
cp -rf share /home/nfsdir_linux/home/ALSA/alsa_lib/
alsa_utils
将alsa-utils/bin目录下的内容拷贝到目标板根文件系统中的bin下
cp bin/* /home/nfsdir_linux/bin/
4.测试
#cat /proc/asound/devices
0: [ 0] : control
16: [ 0- 0]: digital audio playback
24: [ 0- 0]: digital audio capture
33: : timer
# ls -l /dev/snd/
crw-rw---- system audio 116, 33 1970-01-01 00:00 timer 定时器接口crw-rw---- system audio 116, 0 1970-01-01 00:00 controlC0 控制接口crw-rw---- system audio 116, 24 1970-01-01 00:00 pcmC0D0c PCM 接口
crw-rw---- system audio 116, 16 1970-01-01 00:00 pcmC0D0p
如果没有snd目录则创建
播放wav文件