天天看點

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

一、alsa-lib移植

alsa-utils工具通過調用到alsa-lib庫來對ALSA架構下的聲霸卡進行操作。

1. 下載下傳源碼

下載下傳位址:​​http://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.7.1.tar.bz2​​

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

2. 移植

(1)建立alsa-lib存放的目錄

需要在開發闆和ubunut中建立一個路徑和名字一樣的目錄,為/usr/share/arm-alsa。

在ubuntu中建立:

sudo mkdir      

在開發闆根檔案系統中建立:

mkdir      

(2)解壓alsa-lib源碼

tar      

(3)配置編譯

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)
mkdir alsa-lib-1.2.7.1-build
cd alsa-lib-1.2.7.1
./configure --host=arm-linux-gnueabihf --prefix=/home/mculover666/develop/alsa/alsa-lib-1.2.7.1-build --with-configdir=/usr/share/arm-alsa CC=arm-linux-gnueabihf-gcc      

其中​

​--prefix​

​​用來設定install的路徑,​

​--with-configdir​

​​用于設定alsa-lib編譯出來的配置檔案存放位置,​

​CC​

​用來設定交叉編譯器。

(4)編譯

make      

(5)安裝

sudo su
source      

確定root使用者能找到編譯器,再繼續:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)
make install      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

切換回普通使用者:

su mculover666      

檢視編譯目錄:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

檢視安裝目錄:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

(6)拷貝lib檔案

将編譯目錄下的lib目錄中的所有檔案都拷貝到開發闆根檔案系統的/usr/lib目錄下:

cd ../alsa-lib-1.2.7.1-build 
sudo cp      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

檢視拷貝結果:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

(7)拷貝配置檔案

cd /usr/share/arm-alsa
sudo cp      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

二、alsa-utils移植

alsa-utils是ALSA的一些小工具集合,可以通過這些小工具測試聲霸卡。

1. 下載下傳源碼

axel http://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.7.tar.bz2      

2. 移植

(1)解壓源碼

tar      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

(2)編譯配置

建立編譯檔案夾:

mkdir      

編譯配置:

cd alsa-utils-1.2.7
./configure --host=arm-linux-gnueabihf --prefix=/home/mculover666/develop/alsa/alsa-utils-1.2.7-build --with-alsa-inc-prefix=/home/mculover666/develop/alsa/alsa-lib-1.2.7.1-build/include/ --with-alsa-prefix=/home/mculover666/develop/alsa/alsa-lib-1.2.7.1-build/lib/ --disable-alsamixer --disable-xmlto CC=arm-linux-gnueabihf-gcc      

(3)編譯

make      

遇到問題:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

解決方法:建立兩個空檔案。

touch alsaconf/po/t-ja.gmo
touch      

再次make,可以編譯成功。

(4)安裝

sudo make install      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

安裝完可以看到安裝檔案夾下的檔案:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

看看alsa-utils提供的工具:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

一定要使用file檢查一下可執行檔案的類型,看看是不是交叉編譯的。

(5)複制到開發闆根檔案系統

cd alsa-utils-1.2.7-build
sudo cp -rfa bin/* ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/bin
sudo cp -rfa sbin/* ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/sbin
sudo cp      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

(6)設定配置檔案路徑

進入開發闆根檔案系統,編輯檔案:

vim      

添加以下内容:

export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.conf      

至此,移植完成,看一下根檔案系統大小:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

打包根檔案系統:

tar      

燒錄進去之後測試。

三、聲霸卡設定與測試

1. amixer使用方法

(1)檢視幫助資訊

amixer --help      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

(2)檢視設定項

amixer scontrols      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

(3)檢視設定值

amixer scontents      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

2. 播放音樂

(1)設定聲霸卡

設定耳機雙聲道的音量:

amixer sset Headphone 100,100      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

設定揚聲器雙聲道的音量:

amixer sset Speaker 120,120      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

檢視左右聲道PCM格式混合是否開啟:

i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

開啟:

amixer sset 'Right Output Mixer PCM' on
amixer sset 'Left Output Mixer PCM'      
i.MX6ULL應用移植 | 移植ALSA到Linux開發闆(alsa-lib、alsa-utils 1.2.7版本)

(2)播放音樂

aplay test.wav      

此時開發闆插耳機會從耳機播放,拔出耳機會從揚聲器播放。

參考資料

  • ​​正點原子-I.MX6U 嵌入式 Linux 驅動開發指南​​
  • ​​alsa lib和utils交叉編譯與移植​​

源碼與鏡像

繼續閱讀