zedboard adau1761之音频播放—alsa lib 和alsa utils库移植至zedboard(四)

alsa lib 和alsa utils库

zedboard开发板adau1761的音频播放需要进行alsa lib 和alsa utils库的移植,最新的稳定版(1.1.16)连接:https://download.csdn.net/download/u014470361/10499414

alsa lib 库的安装

下载好alsa lib 和alsa utils库后,下面首先进行alsa lib的安装:
(1)解压alsa-lib-1.1.6.tar.bz2

tar xzf alsa-lib-1.1.6.tar.bz2

(2)进入到解压的目录

cd alsa-lib-1.1.6/

(3)配置./configure

./configure --host=arm-linux  --prefix=/usr/local/arm-alsa  --enable-shared --disable-python --with-configdir=/usr/local/alsa  --with-plugindir=/usr/local/alsa_lib CC=arm-xilinx-linux-gnueabi-gcc CXX=arm-xilinx-linux-gnueabi-g++ LD=arm-xilinx-linux-gnueabi-ld

配置的注释:
–host=arm-linux;为使用的交叉编译工具名,直接使用 arm-linux 也可以,根据 PC上安装的交叉编译工具来决定;
–prefix=/usr/local/arm-alsa; make install 时程序安装的目录,可以根据自己的情况进行修改
–enable-shared ;开启功能 –disable
–disable-python;关闭功能,使用动态库不需要Python。
–with-configdir=/usr/local/alsa;alsa 配置文件所在目录,本目录要定好位置,交叉编译过后,移植到板子上时要和 PC 上路径一致。也即是说 ,如果配置的时候指定的是/usr/local/alsa目录,那么你的配置文件在开发板上的绝对路径也要是/usr/local/alsa。默认 alsa配置文件会在安装目录里。这个很重要,不能PC和开发板两边不匹配。后面移植的时候需要在开发板上新建/usr/local/alsa这个目录,并把pc机上的/usr/local/alsa中所有文件全部复制到开发板上对应的目录。
–with-plugindir=/usr/local/alsa_lib;alsa_lib 所在目录,这里指定的目录会产生必要的库文件。安装完成后/usr/local/目录下面并没有生成alsa_lib这个目录,应该不重要,不用管。
CC=arm-xilinx-linux-gnueabi-gcc;交叉编译工具
CXX=arm-xilinx-linux-gnueabi-g++;交叉编译工具
LD=arm-xilinx-linux-gnueabi-ld;交叉链接工具
(4)make
(5)sudo make install
至此,alsa lib 库安装完成。

alsa utils库的安装

(1)解压alsa-utils-1.1.6.tar.bz2

tar xzf alsa-utils-1.1.6.tar.bz2

(2)进入到解压的目录

cd alsa-utils-1.1.6/

(3)配置./configure

./configure --host=arm-linux --prefix=/usr/local/arm-alsa CFLAGS="-I/usr/local/arm-alsa/include"  LDFLAGS="-L/usr/local/arm-alsa/lib -lasound" --disable-alsamixer --disable-xmlto  --with-alsa-inc-prefix=/usr/local/arm-alsa/include --with-alsa-prefix=/usr/local/arm-alsa/lib  CC=arm-xilinx-linux-gnueabi-gcc CXX=arm-xilinx-linux-gnueabi-g++ LD=arm-xilinx-linux-gnueabi-ld

配置的注释:
–host=arm-linux;为使用的交叉编译工具名,直接使用 arm-linux 也可以,根据 PC上安装的交叉编译工具来决定;
–prefix=/usr/local/arm-alsa; make install 时程序安装的目录;
CFLAGS=”-I/usr/local/arm-alsa/include”;alsa lib库安装后,/usr/local/arm-alsa/下面会有include目录,include里面放的是所需要的一些.h头文件,;
LDFLAGS=”-L/usr/local/arm-alsa/lib -lasound”;lib里面是alsa lib库安装后生成的一些.la和.so链接文件;
–disable-alsamixer –disable-xmlto;关闭alsamixer和xmlto;
–with-alsa-inc-prefix=/usr/local/arm-alsa/include;与CFLAGS的目录必须一致;
–with-alsa-prefix=/usr/local/arm-alsa/lib;与LDFLAGS的目录必须一致;
CC=arm-xilinx-linux-gnueabi-gcc CXX=arm-xilinx-linux-gnueabi-g++ LD=arm-xilinx-linux-gnueabi-ld;交叉编译工具,同上。
(4)make
(5)sudo make install
至此,alsa utils 库安装完成。

alsa lib 和alsa utils库移植

安装完成alsa lib 和alsa utils库后,需要把alsa lib 和alsa utils移植至zedboard开发板中。下面是移植的详细步骤;
(1)将pc机中的alsa和arm-alsa目录下的文件压缩打包,拷贝至开发板中;
(2) 解压文件;

tar xzf alsa.tar
tar xzf arm-alsa.tar

(3)cp 文件中bin、sbin、lib等目录下的文件到板子上更目录对应的目录下;

cp -rfa /arm-alsa/bin/* /bin
cp -rfa /arm-alsa/sbin/* /sbin
cp -rfa /arm-alsa/lib/* /lib

(4)新建/usr/local/目录,与库安装时的目录对应,把alsa,arm-alsa下的文件都cp到板子的/usr/local/目录下;

cd /usr/
mkdir local/
cp -rf /alsa/ /usr/local/
cp -rf /arm-alsa/ /usr/local/

(5)设置环境变量;

export ALSA_CONFIG_PATH=/usr/local/alsa/alsa.conf

(6)在开发板上ls -l /dev/snd看看系统是否已经有了设备节点,如果没有,需要手动创建。

mknod /dev/snd/controlC0 c 116 0 
mknod /dev/snd/pcmC0D0p c 116 16 
mknod /dev/snd/pcmC0D0c c 116 24 
mknod /dev/snd/seq c 116 1 
mknod /dev/snd/hwC0D0 c 116 4 
mknod /dev/snd/timer c 116 33

可以通过cat /proc/asound/devices,正常会看到一些设备来决定创建哪些设备节点。
0: [ 0] : control
16: [ 0- 0]: digital audio playback
24: [ 0- 0]: digital audio capture
33: : timer
至此,alsa lib库和alsa utils库移植完成。
若后面有需要进行pocketsphinx语音识别库移植的,必须先移植alsa lib和alsa utils库,且pocketsphinx语音识别库的配置路径必须与上述/usr/local/arm-alsa/include、/usr/local/arm-alsa/lib路径一致,即交叉编译路径必须一致,否则会出现打不开声音设备的问题(非常关键)

配置adau1761.state文件和播放

注意:在zedboard开发板上移植完后,直接调用aplay进行播放是不会出声音的。当时在这卡了一整天,各种重新配置驱动,重新移植,就是死活不出声音,最后查资料才知道缺少adau1761.state文件。汗!!!!!!
adau1761.state文件我传到:https://download.csdn.net/download/u014470361/10499435
配置adau1761.state文件(这一步非常重要):

alsactl restore -c 0 -f adau1761.state

接下来使用aplay命令播放即可。

cp /arm-alsa/share/sounds/alsa/Front_Center.wav / 
aplay Front_Center.wav

猜你喜欢

转载自blog.csdn.net/u014470361/article/details/80819871