[Linux Alsa]1, Arm Linux音頻子系統環境搭建

最近接到任務,要接手一些音頻的一些東西,搞過的都知道這玩意在裸機環境下搞起來極其難受,畢竟有寫有讀,不上操作系統估計用中斷來搞最後累死人。於是開始接觸Alsa的一些東西,包括基本知識,Linux內核Alsa子系統部分,最後我們的目標當然是把開發環境打好,把Alsa用起來,下面開搞。


1.基礎知識

基礎知識可以在另一個大神的博客裏瞭解一下,講的很透徹,雖然是基於2.6.x版本來串聯的,但是我看了一下,和現在的4.x內核改動不是很大,基本能找到影子。地址貼在下面:

DroidPhone的專欄 – Linux音頻子系統

2.Alsa下載

瞭解了Alsa的基礎知識以後我們知道,alsa主要分成兩部分,一部分是Alsa-driver,也就是Linux系統驅動,這部分我覺得是大頭,要從源頭上來搞定;另一部分是Alsa-lib,也就是用戶用Alsa的時候需要調用的API,都要基於這個lib來。其實還有一些Alsa-utils之類音頻設備控制的工具。下載地址如下:
https://www.alsa-project.org/main/index.php/Download
要注意的是,最好不要選ftp://xxxx的鏈接來下載,反正我搞了半天都沒下載下來,可能要用FTP工具,我也懶得搞了,往下拉,有個FTP via HTTP (web) access,就可以看到了,要下alsa-lib,就到lib目錄下,要下alsa-utils就到utils目錄下
在這裏插入圖片描述

3.交叉編譯alsa-lib

因爲我們這個lib和utils都是要在arm-linux環境下用的,所以必然要進行交叉編譯,由於alsa-lib是alsa-utils依賴的庫,所以要先交叉編譯alsa-lib編譯,現在主流的應該是Linaro的交叉編譯工具鏈,不外乎以下幾種,
在這裏插入圖片描述
這個根據自己的交叉編譯工具鏈的實際情況來,由於我用的是aarch64-linux-gnu,所以交叉編譯按以下步驟來
1, cd 到alsa-lib目錄裏

./configure --host=aarch64-linux-gnu --disable-python --prefix=/usr/share/arm-alsa/

2, make

make

3, make install

sudo make install

make install完了就可以在上面指定的prefix目錄裏看到生成的文件夾
在這裏插入圖片描述
然後接下來就直接扔到板子裏的文件系統,配一下環境變量,就可以調用了。

4. 交叉編譯alsa-utils

不多說了,都是常規操作

./configure --host=aarch64-linux-gnu --prefix=/usr/share/arm-alsa --with-alsa-inc-prefix=/usr/share/arm-alsa/include --with-alsa-prefix=/usr/share/arm-alsa/lib --disable-alsamixer --disable-xmlto --disable-nls

–with-alsa-inc-prefix和–with-alsa-prefix分別指定了交叉編譯util應用所需要的alsa-lib的頭文件和庫文件;
–disable-alsamixer表示不編譯生成alsamixer這個應用程序,因爲該程序依賴於ncurses這個圖形界面庫,這個庫非常魔性,ubuntu 18.04 LTS表示已經放棄

make
sudo make install

我們可以壓縮一下prefix這個目錄,然後再在開發板上解壓,把文件放到合適的位置。


到現在爲止,我們已經完成了alsa庫文件的基礎知識準備和開發環境搭建。

To Be Continue…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章