天天看點

第三階段應用層——2.11 視訊監控—ASOC驅動架構的簡單分析 視訊監控—ASOC驅動架構的簡單分析

視訊監控—ASOC驅動架構的簡單分析

  • 硬體平台:韋東山嵌入式Linxu開發闆(S3C2440.v3)
  • 軟體平台:運作于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系統
  • 開發環境:arm-linux-gcc-4.3.2工具鍊、linux-3.4.2核心(開發版根檔案系統)
  • 源碼倉庫:https://gitee.com/d_1254436976/Embedded-Linux-Phase-3

目錄

  • 視訊監控—ASOC驅動架構的簡單分析
    • 一、ASOC架構分析

一、ASOC架構分析

以核心中自帶的s3c24xx_uda134x.c的驅動檔案為開頭,去分析ASOC架構,得到如下架構圖

第三階段應用層——2.11 視訊監控—ASOC驅動架構的簡單分析 視訊監控—ASOC驅動架構的簡單分析

如圖可見,其大緻結構分為三部分:

  • Machine(闆載硬體):指某一款機器,如:某款裝置、某款開發闆…,由此可以看出Machine幾乎是不可重用的,每個Machine上的硬體實作可能都不一樣, CPU不一樣, Codec不一樣,音頻更多的輸入、輸出裝置也不一樣,

    Machine為CPU、 Codec、輸入輸出裝置提供了一個載體

    在這個部分,指定了platform與codec部分的裝置為哪一個,其主要關鍵作用的是

    snd_soc_card

    以及

    snd_soc_dai_link

  • Soc( Platform):一般是指某一個SoC平台,比如pxaxxx,s3cxxxx,omapxxx等等,與音頻相關的通常包含該SoC中的時鐘、 DMA、 I2S、 PCM等等,隻要指定了SoC,那麼我們可以認為它會有一個對應的Platform,它隻與SoC相關。

    在這個部分,可以指定晶片的dai與dma,并且設定它們,其中起關鍵作用的是

    snd_soc_dai_driver

    snd_soc_codec_driver

    結構體
  • Codec:指具體的編解碼器, Codec裡面包含了I2S接口、 D/A、 A/D、 Mixer、 PA(功放),通常包含多種輸入( Mic、 Line-in、 I2S、 PCM)和多個輸出(耳機、喇叭、聽筒, Line-out), Codec和Platform一樣,是可重用的部件,同一個Codec可以被不同的Machine使用。嵌入式Codec通常通過I2C對内部的寄存器進行控制。

    在這個部分,主要是設定編解碼晶片的dai與控制接口,其關鍵作用的結構體為

    snd_soc_dai_driver

    snd_soc_codec_driver

注意:

對于machine部分指定了platform與codec部分的結構體的名字,是以在編寫驅動時,需要注意三者的對應關系。

繼續閱讀