ALSA移植到OK6410


环境:

主机:Fedora12

目标板:OK6410-A

OK6410-A上有ALSA的驱动,不过没有ALSA的编程接口,所以我需要移植ALSA上去.


参考链接:

1.

移植步骤:

1.首先下载必要的文件

下载页面:http://www.alsa-project.org/main/index.php/Download

alsa-lib-1.0.24.1.tar.bz2

alsa-utils-1.0.24.2.tar.bz2

我在/home/work2/alsa_arm目录下存放它们


2.编译安装alsa-lib

解压alsa-lib,然后进入解压后的目录

在终端下输入配置命令:

./configure --host=arm-linux --target=arm-linux --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/arm-alsa --enable-static --enable-shared --disable-python --with-configdir=/usr/share --with-plugindir=/usr/lib/alsa_lib

配置完成后编译:

make

编译完成后安装;

make install


3.编译安装alsa-utils

解压alsa-utils,然后进入解压后的目录

在终端下输入配置命令:

PKG_CONFIG_PATH="/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/arm-alsa/lib/pkgconfig" \
LDFLAGS="-L/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib -lpthread -lc -lgcc" \
CFLAGS="-I/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include" \
./configure \
--host=arm-linux \
--target=arm-linux \
--prefix=/home/work2/alsa_arm/alsa_u \
--disable-alsamixer \
--disable-xmlto \
--with-alsa-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/arm-alsa/lib/ \
--with-alsa-inc-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/arm-alsa/include/

配置完成后编译:

make

编译完成后安装:

make install

到此alsa编程接口库编译完毕,接下来移植到6410.

4.在fedora下新建一个目录/forlinux/root,将此目录配置为nfs的共享目录

设置方法参考:

5.将编译alsa-lib,alsa-utils所产生的4个目录复制到/forlinux/root

四个目录:

/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/arm-alsa

/usr/share/alsa

/usr/lib/alsa_lib

/home/work2/alsa_arm/alsa_u


6.重新编译OK6410-A提供的linux内核linux2.6.36,在编译的时候添加浮点数支持

进入2.6.36的目录,输入命令:make menuconfig

然后配置内核:

Floating point emulation-->

将此目录下的浮点数支持选项全部选上,然后编译内核make zImage

这一步的必要性说明:

我的fedora下的交叉编译器的版本是4.5.1,飞凌公司提供的zImage是用4.3.2.我用飞凌提供的zImage配套他们公司提供的文件系统,移植alsa后发现启动aplay会出现错误illegal instruction。此错误应该是编译器版本不一致导致的(虽然运行其他用4.5.1编译的程序不报错)。不过另有人说是浮点数支持没开启导致的,所以我在用4.5.1重新编译内核的时候添加了浮点数支持。


7.目标板中挂载fedora的共享目录/forlinux/root到/tmp目录

在超级终端下输入命令:mount -o nolock 192.168.0.238:/forlinux/root /tmp

说明:192.168.0.238是fedora的IP


8.将目标板挂载目录下的文件复制到正确的位置

在超级终端下进入/tmp目录

首先移植alsa_u中的文件:

cd /tmp/alsa_u

cp -r bin/* /bin

然后移植arm-alsa中的文件

cd /tmp/arm-alsa

cp -r lib/* /lib

然后移植alsa中的文件

cd /tmp

cp -r alsa/* /usr/share

到此alsa移植完成,alsa_lib中的文件不移植也可以


测试:

输入aplay ring.wav,可以听到铃声.

相关内容