[Audio]ALSA音頻框架-簡介

參考:
1. 奇小葩 https://blog.csdn.net/u012489236/article/details/98068122
2. 技術(shù)芯 https://blog.csdn.net/sinat_37817094/article/details/80490830
3. 哈迪斯_石頭 https://blog.csdn.net/zqh6516336520/article/details/38226333
4. linux kernel:4.4

簡介

? Alsa是Advanced Linux Sound Architecture的縮寫,即高級Linux聲音架構(gòu),在Linux操作系統(tǒng)上提供了對音頻和MIDI的支持。在Linux 2.6的內(nèi)核版本后,Alsa目前已經(jīng)成為了linux的主流音頻體系結(jié)構(gòu)。除了 alsa-driver,ALSA 包含在用戶空間的 alsa-lib 函數(shù)庫,具有更加友好的編程接口,并且完全兼容于 OSS,開發(fā)者可以通過這些高級 API 使用驅(qū)動,不必直接與內(nèi)核驅(qū)動 API 進(jìn)行交互。

? ALSA 主要有如下特點(diǎn):

  • 支持多種聲卡設(shè)備、
  • 模塊化的內(nèi)核驅(qū)動程序 、
  • 支持 SMP(對稱多處理)和多線程、
  • 提供應(yīng)用開發(fā)函數(shù)庫
  • 兼容OSS應(yīng)用程序

系統(tǒng)框架

在這里插入圖片描述

? User空間:主要由Alsa Libray API對應(yīng)用程序提供統(tǒng)一的API接口,各個APP應(yīng)用程序只要調(diào)用 alsa-lib 提供的 API接口來實(shí)現(xiàn)放音、錄音、控制?,F(xiàn)在提供了兩套基本的庫,tinyalsa是一個簡化的alsa-lib庫,現(xiàn)在Android的系統(tǒng)中主要使用它。
? ALSA CORE:alsa 核心層,向上提供邏輯設(shè)備(PCM/CTL/MIDI/TIMER/…)系統(tǒng)調(diào)用,向下驅(qū)動硬件設(shè)備(Machine/I2S/DMA/CODEC)
? ASOC Core:是 ALSA 的標(biāo)準(zhǔn)框架,是 ALSA-driver 的核心部分,提供了各種音頻設(shè)備驅(qū)動的通用方法和數(shù)據(jù)結(jié)構(gòu),為 Audio driver提供 ALSA Driver API
? Hardware Driver:音頻硬件設(shè)備驅(qū)動,由三大部分組成,分別是 Machine、Platform、Codec,提供的 ALSA Driver API 和相應(yīng)音頻設(shè)備的初始化及工作流程,實(shí)現(xiàn)具體的功能組件,這也是驅(qū)動開發(fā)人員需要具體實(shí)現(xiàn)的部分。

目錄結(jié)構(gòu)

.
├── ac97_bus.c
├── aoa
├── arm
├── atmel
├── core
├── drivers
├── firewire
├── hda
├── i2c
├── isa
├── last.c
├── mips
├── oss
├── parisc
├── pci
├── pcmcia
├── ppc
├── sh
├── soc
├── sound_core.c
├── sound_firmware.c
├── sparc
├── spi
├── synth
└── usb

  • ac97_bus.c -->實(shí)現(xiàn)AC97標(biāo)準(zhǔn)總線。

AC97 標(biāo)準(zhǔn)把音頻設(shè)備中的數(shù)字部分和模擬部分分開, 并規(guī)定數(shù)字信號處理由CPU 來負(fù)責(zé),或者采用專門的DSP 芯片; 而模擬部分, 即A/D、D/A 轉(zhuǎn)換與Mix 混音操作, 則由CODEC 芯片(Coder2Decoder: 編碼/解碼器) 完成。
音頻處理的流程如下:
①CODEC 采樣音頻數(shù)據(jù), 把模擬信號轉(zhuǎn)換成數(shù)字信號通過AC2link 和AC 控制單元傳送給CPU 或DSP 處理。
②CPU 對數(shù)字信號處理后交由AC 控制單元通過AC2link 傳輸給CODEC 進(jìn)行混音處理,再轉(zhuǎn)換成模擬信號輸出。其中AC 控制單元是AC97 CODEC 的控制器。AC2link 是AC97 標(biāo)準(zhǔn)定義的全雙工的串行接口, 負(fù)責(zé)傳輸音頻數(shù)據(jù)、寄存器控制命令和狀態(tài)信息。
AC2link 由4 根串行總線和一個nRESET 信號線組成。串行總線分別是: 位時鐘信號線(B IT_CL K ) , 幀同步信號線(SYNC ) , 數(shù)據(jù)輸出(SDA TA _OU T ) 和數(shù)據(jù)輸入(SDA TA _IN ) 信號線。它按照AC97 rev211 標(biāo)準(zhǔn)規(guī)定的AC2link數(shù)字串口接口協(xié)議[ 1 ]進(jìn)行數(shù)據(jù)的傳輸。AC2link在B IT _CL K 的上升沿發(fā)送數(shù)據(jù), 在下降沿接收數(shù)據(jù), 實(shí)現(xiàn)全雙工的數(shù)據(jù)傳輸。

  • last.c -->所有音頻設(shè)備注冊完成后打印ALSA devices List

下面是一個log示例:

[    1.814400] ALSA device list:
[    1.814432]   #0: rockchip,rt5640-codec
[    1.814440]   #1: RK-FPGA-I2S
  • sound_core.c -->注冊音頻核心層子系統(tǒng)
subsys_initcall(init_soundcore);
module_exit(cleanup_soundcore);
  • sound_firmware.c --> 加載音頻驅(qū)動固件
EXPORT_SYMBOL(mod_firmware_load);

下面是目錄及其說明

目錄 說明
aoa 蘋果板載音頻驅(qū)動
arm arm音頻設(shè)備支持
atmel Atmel ABDAC(音頻字節(jié)流數(shù)模轉(zhuǎn)換器)及AC97C(AC97控制器)支持
core 該目錄包含了ALSA驅(qū)動的中間層,它是整個ALSA驅(qū)動的核心部分
driver 放置一些與CPU、BUS架構(gòu)無關(guān)的公用代碼
firewire 火線(IEEE-1394/FireWire/iLink)音頻設(shè)備支持
hda HD Audio(高保真音頻)支持
i2c ALSA自己的I2C控制代碼
isa isa聲卡的頂層目錄,子目錄包含各種isa聲卡的代碼
mips mips音頻設(shè)備支持
oss 對oss的兼容支持
parisc 鴻蒙(harmony)音頻設(shè)備支持(注:支持PA-RISC架構(gòu)上的GSC音頻設(shè)備)
pci pci音頻設(shè)備支持
pcmcia pcmcia音頻設(shè)備支持
ppc PowerPC 音頻設(shè)備支持
sh SUPERH架構(gòu)音頻設(shè)備支持
soc 針對system-on-chip體系的中間層代碼
sparc SPARC架構(gòu)音頻設(shè)備支持
spi SPI音頻設(shè)備支持
synth 一些工具
usb USB音頻設(shè)備支持

個人博客:https://www.letcos.top/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 今天跟王總聊天,他狠狠地(形容詞)叼了我,他說你為什么不寫一些比較牛逼的文章,為什么總是寫一些教別人如何安裝...
    da4ac7fb9bd5閱讀 5,236評論 0 49
  • 在移動設(shè)備中,Codec的作用可以歸結(jié)為4種,分別是: 1.對PCM等信號進(jìn)行D/A轉(zhuǎn)換,把數(shù)字的音頻信號轉(zhuǎn)換為模...
    gbmaotai閱讀 18,379評論 4 3
  • 一.聲音參數(shù)基本概念: 聲音是連續(xù)模擬量,計(jì)算機(jī)將它離散化之后用數(shù)字表示,就有了以下幾個名詞術(shù)語。 樣本長度(sa...
    cs1001閱讀 2,902評論 0 2
  • 一.聲音參數(shù)基本概念: 聲音是連續(xù)模擬量,計(jì)算機(jī)將它離散化之后用數(shù)字表示,就有了以下幾個名詞術(shù)語。 樣本長度(sa...
    cs1001閱讀 5,624評論 0 3
  • 修行自己 ——讀《你是我今生最美的修行》有感 育才中學(xué)初一(15)班 曹燕 剛開始讀的時候,似乎從來沒想過題目。...
    簡約語文閱讀 681評論 0 1

友情鏈接更多精彩內(nèi)容