alsa音频相关文件的移植


分类: linux   50人阅读  评论(0)  收藏  举报

情况简介:
ALSA 是目前 Linux 系统上大量采用的音频设备库,通过 Alsa 架构能分离驱动和应用的开发。 

有了 Alsa 内核驱动,我们还需要 Alsa Lib 和 Alsa Util 的支持,这 3 者的关系如下图所示:
alsa-driver:alsa的驱动程序
alsa-lib:     应用程序调用的API函数
alsa-utils:  alsa的应用程序

 

移植主机的环境:

1、主机:ubuntu-10.10

2、交叉编译器版本:arm-none-linux-gnueabi-gcc-4.4.1(gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202))

 

一、alsa-lib-1.0.23移植:
1、configure
./configure --host=arm-none-linux-gnueabi 
 --prefix=/home/linux/tools/arm_install/alsa/alsa-lib-1.0.23 
 --enable-static --enable-shared  --disable-python  
 --with-alsa-devdir=/dev 
 --with-configdir=/usr/local/share/alsa 
 --with-plugindir=/usr/local/lib/alsa_lib

配置会先对此命令中的配置项进行检查,然后实现配置。需要注意的是:配置如果出错,未必一定报错,而是会采用默认的配置选项。几个重要的配置项:
1)、--host 指定编译器,这里指定为交叉编译器。注意运行本配置命令前务必保证编译器已经可以在 Shell下直接执行了
2)、--prefix 指定编译后文件的安装路径,后续的安装命令会在该目录中创建 lib 和 include 两个目录
3)、--with-configdir 指定 conf 文件的安装目录,该目录中对我们最有用的 alsa.conf ,此文件会被直接移植到你的目标系统中
4)、--with-alsa-devdir 指定音频设备文件的目录。例如在/dev/  目录下有(pcmC0D0c/pcmC0D0p/pcmC0D1p等)
 但是有些设备的设备文件是在  /dev/snd/ (pcmC0D0c/pcmC0D0p/pcmC0D1p等。
 所以"--with-alsa-devdir"是改变设备文件的选项,我的设备文件时在/dev/ 目录下,所以就是--with-alsa-devdir=/dev

2、make
 make or  sudo make

3、安装编译好的文件
 su root           //这里面为什么进入root用户,因为我sudo make install一直错误,我完全进入root用户后问题就解决了
 make install
 

二、alsa-utils-1.0.23移植:

utils会生成用于播放,录制,配置音频的应用文件,对测试很有用处。编译过程如下:

1、Configure
./configure --host=arm-none-linux-gnueabi \
 --prefix=/home/linux/tools/arm_install/alsa/alsa-utils-1.0.23 \
 --with-alsa-inc-prefix=/home/linux/tools/arm_install/alsa/alsa-lib-1.0.23/include \
 --with-alsa-prefix=/home/linux/tools/arm_install/alsa/alsa-lib-1.0.23/lib \
 --with-configdir=/usr/locale/share \
 --disable-alsamixer --disable-xmlto

主要的配置选项:
1)、--host 指定编译器,与 lib 的配置选项相同
2)、--prefix 指定编译后文件的安装路径,与 lib 的配置选项相同
3)、--with-alsa-inc-prefix用来指定alsa-lib编译好的文件的include目录
4)、--with-alsa-prefix用来指定alsa-lib编译好的文件的lib目录

2、编译
 make

3、安装编译好的文件
 su root
 make install

 

三、将 lib 和 utils 文件系统中,在目标板上,以下文件必须被拷贝至对应位置:

alsa-lib的库文件
1、cp /home/linux/tools/arm_install/alsa/alsa-lib-1.0.23/lib/lib*  /source/rcar/rootfs/lib

 

拷贝alsa配置文件到 /usr/share/ 下
2、cp /usr/local/share/alsa  /source/rcar/rootfs/usr/share

并且设置环境变量 
export ALSA_CONFIG_PATH=/usr/share/alsa/alsa.conf

 

utils能产生 aplay,amixer,arecord 可执行程序,这些文件可放在 /usr/sbin 中
3、cp  /home/linux/tools/arm_install/alsa/alsa-utils-1.0.23  /source/rcar/rootfs/usr/bin 

 

4、根据自己平台关于声卡设备的设备文件所在的目录进行调整,常见的是"/dev/" 和"/dev/snd"
controlC0, pcmC0D0c, pcmC0D0p, timer等

 
四、运行测试程序

//播放wave文件
 apply test.wav

 

//改变test.wav的频率播放文件
 apply -D rate_44k test.wav 
  
//录音,以20秒的间隔时间(-d 20),立体声(-c 2),频率是8000HZ来录制wave格式音频
 arecord -d 20 -c 2 -t wav -r 8000 -f "Singed 16 bit Little Endian" test.wav
 

//测试混音播放(先是播放test1.wav,然后再同时播放test2.wav)
 aplay -D plug:dmix_44k test1.wav &
 aplay -d plug:dmix_44k test2.wav &

 

//设置放音增益(0 to 3)
 amixer set Master 1

 

//设置录音音量(0-31)
 amixer set Line 10

 

//单声道录音
 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



./configure --host=arm CC=arm-none-linux-gnueabi-gcc --prefix=/home/kerson/alsa/alsa-lib-1.0.25/install --disable-python --with-configdir=/share/alsa --with-alsa-devdir=/dev --with-aload-devdir=/dev 




./configure --host=arm-linux CC=arm-none-linux-gnueabi-gcc --prefix=/home/kerson/alsa/alsa-utils-1.0.25/install --with-alsa-inc-prefix=/home/kerson/alsa/alsa-lib-1.0.25/install/include  --disable-alsamixer --with-alsa-prefix=/home/kerson/alsa/alsa-lib-1.0.25/install/lib --disable-xmlto  --disable-alsamixer CFLAGS="-lrt"

/bin/mkdir /dev/snd

/bin/ln -s /dev/pcmC0D0c /dev/snd/pcmC0D0c

/bin/ln -s /dev/pcmC0D0p /dev/snd/pcmC0D0p

/bin/ln -s /dev/controlC0 /dev/snd/controlC0

/bin/ln -s /dev/pcmC1D0c /dev/snd/pcmC1D0c

/bin/ln -s /dev/pcmC1D0p /dev/snd/pcmC1D0p

/bin/ln -s /dev/controlC1 /dev/snd/controlC1

/bin/ln -s /dev/seq /dev/snd/seq

/bin/ln -s /dev/timer /dev/snd/timer




复制 本机目录 share/alsa 文件到开发板
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值