配套資料在網盤資料的“迅為iTOP-i.MX6開發板資料匯總(不含光盤資料)\08_迅為iTOP-i.MX6開發板 Linux 系統開發資料\13-Linux 系統移植 tinyplay\iTOP-iMX6-Linux 系統-聲卡移植 tinyplay.zip” tinyalsa 是 Google 在 Android 4.0 之后推的基于 alsa 內核的用戶層音頻接口。tinyalsa 提供的頭文件是"asoundlib.h",提供最基礎的 pcm 和 mixer 操作。 tinyalsa 的實現文件為 pcm.c(實現 pcm api)和 mixer.c(實現 mixer api)。在其中有四個小工具它們分別是: tinypcminfo:tinypcminfo.c,查看 pcm 設備能力; tinyplay:tinyplay.c,使用 pcm 設備播放 wav 格式的音頻文件; tinycap:tinycap.c,使用 pcm 設備采集 pcm 格式的碼流,并保存為 wav 格式的文件; tinymix:tinymix.c,對 pcm 設備的控制,包括音量調節、設備切換。 這四個工具使用時可以先使用 tinypcminfo 查看 pcm 設備的能力,以防我們使用其他三個命令時使用 了不合理的配置會出現 parameter invalid 的錯誤。 本文檔適用于最小 Linux 系統以及 Qt 系統。 64.1 源碼編譯 查看本次提供的壓縮包內容,分別為指導文檔,測試音樂以及源碼文件夾,如下圖所示。 ![]() 將提供的壓縮包中的文件夾 tinyalsa 拷貝到 Ubunut 的工作目錄,如圖。 ![]() 本次編譯環境為“arm-2009q3”,如下圖所示。 ![]() 進入到 ubuntu 上的 tinyalsa 文件夾,在當前目錄下輸入命令“make”,自動生成 4 個 可執行文件“tinycap、tinymix、tinypcminfo、tinyplay”。 ![]() 編譯完成。 64.2 耳機和喇叭測試 本次測試是在 iTOP-iMX6Q 開發板上進行,耳機,麥克風的連接如圖。喇叭左聲道是 J5,右聲道是 J6。 ![]() 64.2.1 測試環境和 tinymix 將上一步生成的 4 個二進制可執行文件和我們提供的測試音樂 1.wav 文件拷貝到 U 盤,插入到運行最小 Linux 系統的 iMX6Q 開發板上,掛載 U 盤使用命令 “mount /dev/sda1 /mnt/disk”,如下圖所示。 ![]() 如果在 qt 系統上,那么先需要使用命令“mknod /dev/sda1 b 8 1”創建節點,再使用命令“mount/dev/sda1 /mnt/disk”掛載 U 盤,如下圖所示。 ![]() 然后使用命令“cp /mnt/disk/tiny* /bin”將 U 盤中的四個可執行文件拷貝到“/bin”目錄下,如下圖所示。 ![]() 接著在控制臺輸入“tinymix”命令,如下圖所示,可以看到全部設置。 ![]() 第一行顯示“Number of controls: 52”表明有 52 條 tinymix 混音命令。 第二行是介紹 0-52 條命令的表格; 第一列 ctl 表示編號。使用對應命令的時候如果想用第 n 條命令,則 tinymix 要加上第一個參數 n; 第二列 type 表示類型。INT 類型可以設置為 0-127 或者 255,BOOL 表示可以設置為 0 和 1; 第三列 num 表示“可控制數目”。例如,有兩個耳機(左耳和右耳)通道,可是只用設置一個參數 4 同時就可以設定兩 個耳機的音量;第四列 name 解釋命令;第五列 value顯示參數當前的值。 測試中需要用到的命令如下表所示。注意,下表中只有最常用的命令,其它命令可以使用 tinymix 命令查看研究,這里不再贅述。 ![]() 編號 5 中的零交叉檢波(Zero Cross detection)設置增益只有在輸入信號零交叉后才會變化,開啟此項以避免增益變化引起的咔咔聲。 應該注意的是,無論在最小 Linux 系統還是 Qt 系統,聲音默認同時從揚聲器以及內置耳機輸出,并沒有切換內外放的開關。而當揚聲器的兩個聲道同時打開時,默認只有右聲道有聲音,要想使用左聲道輸出,則需關閉右聲道。即揚聲器只能作用在一個聲道。如果在耳機和揚聲器同時設置非零音量時播放音樂,聲音從耳機以及揚聲器的右聲道傳出。 64.2.2 耳機播放測試 使用耳機輸出,則在串口控制臺依次執行以下命令:tinymix 4 127、tinymix 5 1、 tinymix 38 1、 tinymix 41 1,如下圖所示。 ![]() 接下來在串口控制臺輸入“tinyplay /mnt/disk/1.wav”,音頻文件的具體路徑應以實際情況為準,操作完成如下圖所示。 ![]() 可以看到正在播放,并且耳機中可以聽到聲音,退出播放使用快捷鍵 Ctrl+c。 64.2.3 揚聲器喇叭播放測試 使用揚聲器,則需在串口依次輸入以下命令:tinymix 6 127、tinymix 7 1、tinymix 38 1、tinymix 41 1,如下圖所示。 ![]() 接下來在串口控制臺輸入“tinyplay /mnt/disk/1.wav”,音頻文件的具體路徑應以實際情況為準,操作完成如下圖所示。 ![]() 可以聽到揚聲器中有聲音播放。 |