环境:
主机:UBUNTU10.04
目标板:OK6410-A
OK6410-A上有ALSA的驱动,不过没有ALSA的编程接口,所以我需要移植ALSA上去.
记得安装交叉编译器4.5.1
而更改ubuntu交叉编译器路径仅需更改/etc/profile 把以前的PATH换成4.5.1的PATH然后重启就好了。
参考链接:
1.http://www.linuxidc.com/Linux/2012-01/51831.htm
移植步骤:
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的共享目录
设置方法参考:http://www.linuxidc.com/Linux/2012-01/51826.htm
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,可以听到铃声.