Linux ALSA 系統架構及音效卡註冊檔案操作
ALSA 是Linux音效卡驅動的架構,下面基於linux-2.6.32描述下ALSA系統架構。ALSA系統可以分為alsa-lib、alsa- driver,而alsa-driver又分為core層和底層硬體層。作為開發者,我們只需移植底層硬體層,根據自己硬體特性,實現底層的移植。而 core層基本屬於ALSA標準框架,不需要自己實現。介紹ALSA框架,下面是大體框架圖。
如上圖所示,alsa驅動最終會被上層應用呼叫,這是通過alsa-lib實現的,alsa-lib為alsa-driver封裝了許多API,通過這 些API,上層應用可以呼叫到驅動層。而alsa-lib中的這些API,我們可暫時把他們當做一個黑盒子,裡面具體實現不需要去關注,下面以 linux-2.6.32中ALSA呼叫函式關係說明其架構。先分析ALSA驅動的註冊過程。
一、ALSA驅動的註冊
註冊流程檢視上圖,具體的註冊過程不在此贅述。
二、開啟流程
在ALSA驅動註冊完畢以後,當應用程式開始呼叫時,會有一個過程:開啟裝置、對映、設定硬體引數、準備工作、觸發資料流。下圖為整個流程。
帶sep0611的是需要自己實現的底層驅動。
三、寫資料流程
圖中應用程式通過ALSA-lib的API函式寫入資料,ALSA-lib呼叫等待函式等待底層可寫。ALSA-lib通過poll系統呼叫進入底層驅動 並將poll訊號加入sleep佇列阻塞程式。硬體的中斷訊號觸發底層驅動註冊的中斷處理函式,中斷處理函式進而呼叫ALSA-driver中的函式判讀 是否該寫。ALSA-driver中的函式再呼叫底層晶片硬體驅動獲取硬體當前資料大小。ALSA-driver再判斷空閒資料區的大小,如果滿足條件就 喚醒sleep佇列,poll訊號從而被喚醒,進而返回給ALSA-lib,ALSA-lib收到訊號後再執行往buffer裡寫資料。
ALSA- lib通過mmap機制將硬體申請的記憶體對映到使用者空間,從而應用程式只需呼叫ALSA-lib往相應位置寫資料,硬體就可以直接讀取了。如果對映記憶體裡 已有資料,通過DMA傳輸給codec,codec便開始讀取資料並進行解碼播放聲音了。經過測試,基於sep6200的ALSA音效卡驅動工作正常,既可 以播放聲音也可以錄製。、
我對ALSA錄音和播音的理解,當我們通過麥克風講話的聲音蒐集到音效卡里之後,記憶體從音效卡里讀取聲音資料的過程就是錄音過程,即snd_pcm_readi()函式的執行,把記憶體中的聲音資料寫入到音效卡的過程就是播音過程,即snd_pcm_writei()函式的執行。
轉自:http://www.360doc.com/content/12/0731/17/10388890_227508444.shtml
最早見於:http://www.360doc.com/content/12/0731/17/10388890_227508444.shtml (2012-07-31 )
相關文章
- Win10系統如何註冊ocx檔案?Win10系統註冊ocx檔案的方法Win10
- ROS架構(三)——檔案系統ROS架構
- Linux ALSA音效卡驅動之五:移動裝置中的ALSA(ASoC)Linux
- Linux系統檔案系統及檔案基礎篇Linux
- HDFS架構指南(分散式系統Hadoop的檔案系統架構)架構分散式Hadoop
- Linux 目錄結構及檔案基本操作Linux
- Linux/proc檔案系統操作指南Linux
- 細說GNU/Linux系統的檔案及檔案系統(轉)Linux
- 教你在Linux中安裝ALSA音效卡驅動(轉)Linux
- 批處理檔案(bat檔案)註冊dll批量註冊dllBAT
- 二、Linux檔案系統結構Linux
- SAP HANA 系統檔案結構及命令
- Linux檔案系統iNode及stat命令Linux
- linux系統配置及相關檔案Linux
- Linux 建立檔案系統及掛載檔案系統詳解一薦Linux
- 如何註冊ocx檔案
- Linux檔案系統目錄結構Linux
- Linux下的檔案系統結構Linux
- Linux系統(一)檔案系統、壓縮、打包操作總結Linux
- Linux系統檔案型別及檔案的副檔名(轉)Linux型別
- Linux 磁碟分割槽及檔案系統管理Linux
- Linux系統的目錄及重要檔案Linux
- 微服務架構之「 服務註冊 」微服務架構
- Linux系統程式設計(2)——檔案與IO之系統呼叫與檔案IO操作Linux程式設計
- Linux系統篇-檔案系統&虛擬檔案系統Linux
- Linux 檔案系統的目錄結構Linux
- HBase 系統架構及資料結構架構資料結構
- win10如何註冊dll檔案_win10系統dll檔案怎樣安裝Win10
- linux檔案系統及目錄結構詳解_轉摘chinaunixLinux
- UNIX 檔案系統基本操作
- Linux 學習筆記--目錄結構及檔案基本操作Linux筆記
- Linux系統——架構淺析Linux架構
- 基於AWS的檔案同步服務系統架構架構
- Linux日誌檔案系統及效能分析(轉)Linux
- Linux檔案系統Linux
- linux 檔案系統Linux
- Linux 檔案屬性及詳細操作Linux
- linux 檔案屬性及基礎操作Linux