在做zx2000 FPGA验证的时候,因为是用busybox编译的小的rootfs,里面没有alsa-lib与aplay,所以需要自己将alsa-lib与aplay移植到rootfs中。
首先需要到alsa的网站上去下载alsa-lib与alsa-utils:
ftp://ftp.alsa-project.org/pub/lib/
ftp://ftp.alsa-project.org/pub/utils/
在ubuntu下解压,编译:
alsa-lib:
./configure --host=arm-none-linux-gnueabi --prefix=/home/gelei/alsa-lib-1.0.25/ /*if python errors , --disable-python*/
make
make install
解释:
--host=arm-none-linux-gnueabi//指定交叉编译器
--prefix=/home/gelei/alsa-lib-1.0.25///指定编译好之后文件的安装目录
将编译成的安装目录整个拷贝到板子上面的usr/share/目录下
将lib里面的libasound.XX 文件拷贝到板子上面的lib/目录下
alsa-utils:
./configure --host=arm-none-linux-gnueabi --prefix=/home/gelei/alsa-utils-1.0.25/ --with-alsa-inc-prefix=/home/gelei/alsa-lib-1.0.25/include/ --with-alsa-prefix=/home/gelei/alsa-lib-1.0.25/lib/ --disable-xmlto --disable-alsamixer
make
touch alsaconf/po/t-ja.gmo
touch alsaconf/po/t-ru.gmo
sudo make install
解释:
--with-alsa-inc-prefix //include alsa-lib头文件
--with-alsa-prefix //调用alsa-lib库
将编译成的安装目录整个拷贝到板子上面的usr/share/目录下
将bin下面的文件拷贝到板子的usr/bin/目录下,
将sbin下面的文件拷贝到板子的usr/sbin/目录下,
在/etc/asound.conf中加入dmix相关plug:
pcm.dmix_48000{
type dmix
ipc_key 5678293
ipc_key_add_uid yes
slave{
pcm "hw:0,0"
period_time 40000
buffer_time 320000
format S16_LE
rate 48000
}
}
注意,我在开始使用dmix功能的时候, 发现报:
snd_pcm_dmix_open unable to create ipc semaphore
错误,原因是在kernel config中要将General setup -> System V IPC 选项选上。