歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

ALSA移植到OK6410

環境:

主機:Fedora12

目標板:OK6410-A

OK6410-A上有ALSA的驅動,不過沒有ALSA的編程接口,所以我需要移植ALSA上去.


參考鏈接:

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,可以聽到鈴聲.

Copyright © Linux教程網 All Rights Reserved