環境:
主機: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,可以聽到鈴聲.