最近在解决一个音频的问题,所以正好借这个机会来把音频的东西重新梳理一下,总结是一个很好的习惯,能方便自以后遇到问题快速排查问题。

  • 平台「MT8167」

  • 内核版本「kernel 4.4」

音频读数据函数流程

tinyalsa调用读取函数

IOCTL调用流程

读取数据到应用层

内核注册声卡流程

注册

注册PCM

创建pcm设备

创建pcm设备

内核驱动里面的platform、machine和codec

如果看alsa驱动,不能清楚这三个「怪兽」的联系,会很容易陷入迷宫里面之中不能自拔。

  • machine 「可以理解成一个主板、一套代码是可以适配很多很多主板的」

  • platform 「这个代表的是CPU型号,平台相关的东西」

  • codec「也就是音频芯片,有编解码的AD或者DA」

三者联系

machine、platform、codec 关键结构体

machine用来指定使用哪个platform和codec。

machine

platform

codec

总结

比较简单,主要是画了几张图片,这些图片对初学者或者是排查问题理清楚框架是有作用的,音频下还有一些ring_buff和路由相关的,自己如何计算没一帧数据的大小,下一次再总结下。

  

 

  推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

嵌入式Linux

微信扫描二维码,关注我的公众号 

Linux ALSA 图解相关推荐

  1. Linux下图解minicom安装

    Linux下图解minicom安装 minicom是一个串口通信工具,就像Windows下的HyperTerminal.可用来与串口设备通信,如调试交换机和Modem等.它的Ubuntu软件包的名称就 ...

  2. Linux ALSA声卡驱动之八:ASoC架构中的Platform

    1.  Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过C ...

  3. 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(三)

    作品已经完成,先上源码: https://files.cnblogs.com/files/qzrzq1/WIFISpeaker.zip 全文包含三篇,这是第三篇,主要讲述接收端程序的原理和过程. 第一 ...

  4. linux音频时钟bclk,linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系

    转:https://blog.csdn.net/lugandong/article/details/72468831 一. 拿512fs说话: 看图知道采样的位深是32bit(位),左右声道各占了8* ...

  5. Linux ALSA 音频系统:物理链路篇

    原址 1. Overview 硬件平台及软件版本: Kernel - 3.4.5 SoC - Samsung exynos CODEC - WM8994 Machine - goni_wm8994 U ...

  6. 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(二)

    作品已经完成,先上源码: https://files.cnblogs.com/files/qzrzq1/WIFISpeaker.zip 全文包含三篇,这是第二篇,主要讲述发送端程序的原理和过程. 第一 ...

  7. Linux ALSA声卡驱动之四:Codec 以及Codec_dai

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  8. (二)Linux ALSA 音频系统:逻辑设备篇

    逻辑设备篇 转自:https://me.csdn.net/zyuanyun Linux ALSA 音频系统:逻辑设备篇 Linux ALSA 音频系统:逻辑设备篇 原创 zyuanyun 最后发布于2 ...

  9. Linux ALSA声卡驱动之二:Platform

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

最新文章

  1. 微软2011 Build大会:Windows 8盛大出场(转)
  2. 桌面便签软件PNotes
  3. 初步学习pg_control文件之六
  4. 苹果 AirPods 只能是 iPhone 的配件吗?
  5. jquery监听html状态,jquery监听页面刷新
  6. Hierarchical Features Driven Residual Learning for Depth Map Super-Resolution 2019TIP 论文阅读
  7. 商业计划书模板(高质量)
  8. coreseek mysql安装_coreseek安装和使用(一)
  9. 物业缴费管理系统 微小区 物业社区公众号开发 物业APP小程序源码
  10. 74HC/LS/HCT/F系列芯片的区别
  11. 前端装逼必备--Canvas
  12. 电脑与手机竟然还能这样传文件!
  13. 金庸小说中的农业漏洞[ZT]
  14. java ebcdic_java EBCDIC | 学步园
  15. YOLOV5的FPS计算问题
  16. Clojure CLR 入门
  17. 本周总结-付金田-2018年3月18日
  18. 架构-系统架构设计模块-2
  19. 【Delphi入门】运算符与表达式
  20. iOS7.11-7.12和iOS8.0-3.3通用隐藏ID的方法

热门文章

  1. 跟我学Shiro目录贴
  2. unix-ln 命令
  3. 电脑上面玩Android 游戏(.apk文件)
  4. C#中跨窗体操作(1)--事件
  5. php 逗号 分割字符串
  6. fasttext 文本分类_4种常见的NLP实践思路【特征提取+分类模型】
  7. MySQL 之 explain
  8. mac eclipse tomcat mysql_mac下使用eclipse+tomcat+mysql开发 j2ee(一)
  9. 五个温度带的分界线_女神建筑师在拿破仑故乡打造的海景别墅,超美!超有温度!【环球设计2225期】...
  10. JSON(JavaScript Object Notation) 格式