高級Linux 聲音體系(Advanced Linux Sound Architecture,縮寫為 ALSA)是 Linux內核中,為聲卡提供的驅動組件,以替代原先的 OSS(開放聲音系統)。一部分的目的是支持聲卡的自動配置,以及完美的處理系統中的多個聲音設備。本文介紹如何移植 ALSA到 iTOP-4418 開發板,適用于最小 Linux 系統和 qt 系統。 查看本次提供的壓縮包內容,分別為指導文檔,測試音樂以及源碼,在 binary 文件夾中有編譯好的二進制文件,供用戶直接使用,如下圖所示。
將提供的兩個壓縮包拷貝到 Ubunut 的工作目錄“/root/ALSA”中,如果沒有該目錄的話需要創建,拷貝完成后如下圖所示。
首先編譯 alsa-lib-1.1.5.tar.bz2 ,在當前目錄輸入命令“tar -xvf alsa-lib-1.1.5.tar.bz2”解壓,然后用命令“cd alsa-lib-1.1.5 ”,進入剛才解壓的文件夾中,如下圖所示。
在此目錄,輸入以下命令對源碼進行交叉編譯。 CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/root/ALSA/install/ 完成后如下圖所示。
然后依次輸入命令“make”,“make install”生成庫文件到目錄“/root/ALSA/install/”中。這兩條命令執行成功,則可以在上級目錄看到 install 文件夾已經生成。如下圖紅框所示。
接下來編譯 alsa-utils-1.1.5.tar.bz2,在當前目錄輸入命令“tar -xvf alsa-utils-1.1.5.tar.bz2 ”解壓,然后用命令“cd a alsa-utils-1.1.5 ”,進入剛才解壓的文件夾中,如下圖所示。
在此目錄,輸入以下命令對源碼進行交叉編譯。 CC=arm-none-linux-gnueabi-gcc ./configure --prefix=/root/ALSA/install/ --host=arm-linux --withalsa-inc-prefix=/root/ALSA/install/include --with-alsa-prefix=/root/ALSA/install/lib --disable-alsamixer --disable-xmlto --disable-nls 完成后如下圖所示。
然后依次輸入命令“make”生成二進制文件到當前目錄中的對應文件夾中,這些文件分別在下圖中被紅框選中的文件夾中,這些文件夾中沒有擴展名并與文件夾相同名稱的文件便是生成的 ELF 文件。
這里以 aplay 文件夾為例,使用“cd aplay”進入文件夾,用 ls 命令可以看到生成的aplay 可執行文件,如下圖所示。
用戶需要將以上所有被選中文件夾中的可執行文件拷貝到 U 盤,傳入到開發板,編譯到此完成。 如果用戶不想編譯的話,binary 文件夾中有編譯好的可執行文件,直接拷貝到 U 盤上進行下一步即可。 接下來的命令行操作在串口控制臺進行。將 U 盤插到運行 qt 系統的開發板上,使用命令“mount /dev/sda1 /mnt/disk”掛載 U 盤。使用命令“cp /mnt/disk/ALSA/* /bin”將 ALSA 所有可執行文件拷貝到“/bin”目錄下。 插上耳機,使用命令“speaker-test -c 2 &”檢測耳機,耳機中輸出粉紅噪音。執行結果如下圖所示。 ![]() 使用命令 ps,查看 speaker-test 的 pid,如下圖所示。 ![]() 本例中 speaker-test 的 pid 是 553,使用命令 kill 553 終止它。完成后耳機停止輸出粉紅噪音。 此時的 ALSA 并不完全,如果通過 apaly 直接播放音頻的話會發現不能控制音量,接下來創建配置文件來完善它。在串口控制臺輸入命令“cd /etc”進入/etc 目錄,在該目錄下輸入命令“vi asound.conf”創建配置文件,將下面的代碼敲入該文件中。 pcm.!default "plug:primary" pcm.primary { type softvol slave.pcm "plughw:0" control.name "master" control.card 0 } 完成后如下圖所示 ![]() 該配置文件創建了一個名為‘pcm’的從設備,隸屬于音量控制插件primary,通過!default 選項將該插件設置成默認 PCM 輸出設備,然后重啟開發板。接下來便可以用 aplay 進行音頻播放,筆者的音頻文件放在/root 目錄中 如下圖所示。 ![]() 該配置文件創建了一個名為‘pcm’的從設備,隸屬于音量控制插件primary,通過!default 選項將該插件設置成默認 PCM 輸出設備,然后重啟開發板。接下來便可以用 aplay 進行音頻播放,筆者的音頻文件放在/root 目錄中 如下圖所示。 ![]() 使用命令“amixer set 'master' 100”將音量設置為 100,音量值可取 0-255,操作如下圖所示。 ![]() 可以聽到耳機的聲音變小。錄音測試通過命令“arecord filename &”來執行,filename 用戶自己指定,&不可省略。錄音過程如下圖所示。 ![]() 結束錄音的方法與結束播放的方法相同,即通過 ps 查看進程pid,用 kill 命令終止它,這里不再重復。錄音結束后可以在當前目錄看到 test.wav 文件,該文件可以用 aplay 播放測試。 ![]() ![]() |