android下調試聲卡驅動之概述


      在Android中音頻系統使用的是ALSA系統架構。ASoC--ALSA System on Chip 。是建立在標准ALSA驅動層上,為了更好地支持

嵌入式處理器和移動設備中的音頻Codec的一套軟件體系。在音頻設備驅動中ASoC被分為Machine、Platform和Codec三大部分。

      Codec部分:負責音頻解碼,這部分代碼全然無平台無關(設備原廠提供),它包括了一些音頻的控件(Controls),音頻接

                           口,DAMP(動態音頻電源管理)的定義和Codec IO功能。為了保證硬件無關性,不論什么特定於平台的代碼都要移

                           到Platform和Machine驅動中。

      Platform部分:包括了平台的音頻DMA和音頻接口的配置和控制(I2S,PCM。AC97等);與處理器芯片相關的代碼。

      Machine部分:是耦合Platform和Codec驅動,同一時候與上層交互的代碼。因為上層是標准的alsa架構。所下面層接口肯定要做了

                           統一,這部分由Machine本身的Platform驅動和Platform設備組成(請跟上面的Platform驅動差別開)。Platform驅動

                           內核已經完畢了,所以無須過多的關心怎么跟上層ALSA怎么衍接的問題。我們僅僅須要注冊一個Machine的Platform

                           設備以及完畢Platform和Codec耦合。

1、ALSA設備文件結構

      controlC0     用於聲卡的控制,比如通道選擇,混音,麥克風的控制等;

      pcmC0D0c   用於錄音的pcm設備;

      pcmC0D0p   用於播放的pcm設備;

      timer       定時器。

            當中,C0D0代表的是聲卡0中的設備0。pcmC0D0c最后一個c代表capture,pcmC0D0p最后一個p代表playback。這些都是

      alsa-driver中的命名規則。

2、ALSA文件文件夾結構概述

      sound/core:該文件夾包括了中間層。ALSA的核心驅動。那些本地ALSA模塊保持在這個文件夾里。一些子文件夾包括那些與內核配置

                           相關的不同的模塊。

      sound/core/oss :關於PCM和mixer的OSS模擬的模塊保存在這個文件夾里面。

      sound/core/seq :有關音序器相關的代碼。

      kernel /include/sound :ALSA驅動的公共頭文件文件夾,該文件夾的頭文件須要導出給用戶空間的應用程序使用。通常驅動模塊私

                          有的頭文件不應放置在這里。

      sound/drivers :該文件夾包括了在不同架構的系統中的不同驅動共享的文件部分。與CPU、BUS架構無關的公用代碼。

      sound/i2c :該文件夾包括了ALSA自己的I2C控制代碼。

盡管Linux有個i2c的標准協議層。ALSA還是擁有它關於一些card的專用

                         i2c代碼。由於一些聲卡只須要一些簡單的操作,而標准的i2c的API函數對此顯得太過復雜了。

      sound/pci :該文件夾文件負責PCI聲卡和一些PCI BUS的上層card模塊。在pci文件夾以下保存着一些簡單的驅動文件,而一些比較

                        復雜的,同一時候包括多個程序文件的驅動會被放置在pci文件夾以下一個單獨的子文件夾里面(如:emu10k1,ice1712)。

      sound/isa  該文件夾文件是處理ISA聲卡的上層card模塊。

      sound/arm。sound/ppc。和sound/sparc  這里文件夾放置一些和芯片架構相關的一些上層的card模塊。

      sound/usb  該文件夾包括一些USB-AUDIO驅動。

      sound/pcmcia    PCCard驅動會放到這里。

CardBus驅動將會放到pci文件夾里面,由於API函數和標准PCI卡上統一的。

      sound/soc 針對system-on-chip體系的中間層代碼。

      sound/soc/codecs 針對soc體系的各種codec的代碼,與平台無關。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM