alsa 库移植与声音编程 下载本文

内容发布更新时间 : 2024/7/1 2:00:10星期一 下面是文章的全部内容请认真阅读。

在移植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/arm-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.23.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 aseqdump 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文件