环境:主机:Fedora12目标板:OK6410-AOK6410-A上有ALSA的驱动,不过没有ALSA的编程接口,所以我需要移植ALSA上去.
参考链接:1.http://www.linuxidc.com/Linux/2012-01/51831.htm移植步骤:1.首先下载必要的文件下载页面:http://www.alsa-project.org/main/index.php/Downloadalsa-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.htm5.将编译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_ucp -r bin/* /bin然后移植arm-alsa中的文件cd /tmp/arm-alsacp -r lib/* /lib然后移植alsa中的文件cd /tmpcp -r alsa/* /usr/share到此alsa移植完成,alsa_lib中的文件不移植也可以
测试:输入aplay ring.wav,可以听到铃声.