歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> TOP6410上移植alsa-lib和alsa-util

TOP6410上移植alsa-lib和alsa-util

日期:2017/3/1 10:38:50   编辑:Linux編程

准備工作

內核版本:由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]
  1. #alsa_init
  2. mkdir /dev/snd
  3. ln /dev/controlC0 /dev/snd/controlC0
  4. ln /dev/pcmC0D0c /dev/snd/pcmC0D0c
  5. ln /dev/pcmC0D0p /dev/snd/pcmC0D0p
  6. ln /dev/timer /dev/snd/timer
  7. amixer cset numid=86 2
  8. amixer cset numid=87 2
Tips:amixer的兩句命令,是將amixer的默認設置'Left Capture Source'和'Right Capture Source'的值改為'Line‘,否則會出現alsa錄音沒有聲音的問題

5.編輯$rootfs/etc/profile,添加如下兩行

[plain]
  1. #alsa_init
  2. export ALSA_CONFIG_PATH=/usr/share/arm-alsa/share/alsa/alsa.conf
Tips:該環境變量的值必須與alsa安裝目錄保持一致,否則使用aplay和arecord時會報錯

至此alsa-lib、alsa-util移植完畢


測試

1.測試能否正常播放,使用命令

aplay test1.wav

test1.wav為已錄制好的正常音頻文件

2.測試能否正常錄音,使用命令

arecord -d 10 -fdat test2.wav

-d表示錄制時間為10秒,-fdat表示以dat質量進行錄制(決定了采樣率、聲道等參數)
Copyright © Linux教程網 All Rights Reserved