1. 程式人生 > 其它 >迅為IMX6Q開發板QT系統移植tinyplay

迅為IMX6Q開發板QT系統移植tinyplay

配套資料在網盤資料的“迅為iTOP-i.MX6開發板資料彙總(不含光碟資料)\08_迅為iTOP-i.MX6開發板Linux系統開發資料\13-Linux 系統移植 tinyplay\iTOP-iMX6-Linux 系統-音效卡移植 tinyplay.zip”
tinyalsa 是 Google 在Android4.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”,音訊檔案的具體路徑應以實際情況為準,操作完成如下圖所示。

可以聽到揚聲器中有聲音播放。