准備工作
內核版本:由menuconfig配置文件TOP6410_3d.config編譯所得內核2.6.28.6(使用老版28內核或使用默認menuconfig配置文件編譯會出現alsa錄音沒有聲音的問題)
文件系統版本:老版光盤中的ubifs即可
alsa-lib版本:1.0.9
alsa-util版本:1.0.9a
其他版本的alsa-lib和alsa-util不能保證正常工作
在上述版本的內核、ubifs已成功燒錄至6410後(調試階段也可采用tftp下載內核、nfs掛載ubifs),開始下面的工作
首先在Ubuntu上交叉、編譯alsa-lib和alsa-util
1.解壓alsa-lib-1.0.9.tar,進入解壓所得目錄
2.使用命令
./configure --host=arm-none-linux-gnueabi --prefix=/usr/share/arm-alsa
Tips:--host參數指定了交叉編譯器為“arm-none-linux-gnueabi-gcc",因此必須確保交叉編譯器已成功配置,www.linuxidc.com且可以在shell裡直接調用;--prefix參數指定了alsa-lib的目標安裝目錄,之後的alsa-util配置也一樣
3.使用命令
make
sudo make install
Tips:make install必須加上sudo,因為在install過程中會創建某些目錄
4.解壓alsa-util-1.0.9a.tar,進入解壓所得目錄
5.使用命令
./configure --host=arm-none-linux-gnueabi --prefix=/usr/share/arm-alsa --with-alsa-inc-prefix=/usr/share/arm-alsa/include --with-alsa-prefix=/usr/share/arm-alsa/lib --disable-alsamixer
Tips:--with-alsa-inc-prefix和--with-alsa-prefix分別指定了交叉編譯util應用所需要的alsa-lib的頭文件和庫文件;--disable-alsamixer表示不編譯生成alsamixer這個應用程序,因為該程序依賴於ncurses這個圖形界面庫,目前我們對於該庫還不能交叉編譯,故放棄
6.使用命令
touch alsaconf/po/t-ja.gmo
避免之後make報錯
7.使用命令
make
sudo make install
至此Ubuntu上的工作全部結束
接著要在6410上部署已交叉編譯好的alsa-lib和alsa-util
為便於理解,設6410的根目錄為$rootfs
1.將Ubuntu中alsa安裝目錄下的所有文件移至6410的對應目錄(絕對路徑必須一致),使用命令
sudo cp -r /usr/share/arm-alsa $rootfs/usr/share/
2.將alsa安裝目錄下已交叉編譯好的alsa庫移至6410的默認庫搜索目錄,使用命令
sudo cp -r $rootfs/usr/share/arm-alsa/lib/* $rootfs/lib/
3.將alsa安裝目錄下已交叉編譯好的alsa-util應用程序移至6410默認應用程序搜索目錄,使用命令
sudo cp -r $rootfs/usr/share/arm-alsa/bin/* $rootfs/usr/sbin/
sudo cp -r $rootfs/usr/share/arm-alsa/sbin/* $rootfs/usr/sbin/
4.編輯$rootfs/etc/init.d/rcS,添加如下幾行
[plain]5.編輯$rootfs/etc/profile,添加如下兩行
[plain]至此alsa-lib、alsa-util移植完畢
測試
1.測試能否正常播放,使用命令
aplay test1.wav
test1.wav為已錄制好的正常音頻文件
2.測試能否正常錄音,使用命令
-d表示錄制時間為10秒,-fdat表示以dat質量進行錄制(決定了采樣率、聲道等參數)arecord -d 10 -fdat test2.wav