X1000 音频驱动架构笔记

使用开发板X1000_HALLEY2_V2.0,源码为北京君正官方源码V7.0版本,与V6.0无太多差异

项目中遇到的问题

这是内核源码中设置所导致的,可能官方认为X1000这样设置会最好,可是我们需要小于30MS 的周期设置,所以需要修改内核源码。需要修改文件 asoc-dms-v13.c 中 PAGE_SIZE / 4 —> PAGE_SIZE / 8:

源码分析

查看编译内核目录,编译进可执行程序中的关于音频的文件为:

./sound_core.o
./core/snd-page-alloc.o
./core/misc.o
./core/jack.o
./core/memalloc.o
./core/pcm_lib.o
./core/pcm_memory.o
./core/sound.o
./core/init.o
./core/device.o
./core/snd-compress.o
./core/snd-pcm.o
./core/pcm_native.o
./core/built-in.o
./core/snd-timer.o
./core/memory.o
./core/control.o
./core/info.o
./core/pcm_misc.o
./core/compress_offload.o
./core/pcm.o
./core/pcm_timer.o
./core/snd.o
./core/timer.o
./soundcore.o
./soc/soc-dapm.o
./soc/soc-compress.o
./soc/soc-jack.o
./soc/snd-soc-core.o
./soc/soc-io.o
./soc/soc-utils.o
./soc/soc-pcm.o
./soc/soc-cache.o
./soc/soc-core.o
./soc/ingenic/snd-asoc-pcm-dump.o
./soc/ingenic/snd-asoc-dmic-dump.o
./soc/ingenic/snd-asoc-aic-v12.o
./soc/ingenic/snd-asoc-icdc-d3.o
./soc/ingenic/snd-soc-phoenix-icdc.o
./soc/ingenic/asoc-board/phoenix_icdc.o
./soc/ingenic/icodec/icdc_d3.o
./soc/ingenic/icodec/dmic_dump.o
./soc/ingenic/icodec/pcm_dump.o
./soc/ingenic/snd-asoc-dmic-v13.o
./soc/ingenic/asoc-v13/asoc-i2s-v13.o
./soc/ingenic/asoc-v13/asoc-dma-v13.o
./soc/ingenic/asoc-v13/asoc-pcm-v13.o
./soc/ingenic/asoc-v13/asoc-dmic-v13.o
./soc/ingenic/snd-asoc-dma-v13.o
./soc/ingenic/snd-asoc-pcm-v13.o
./soc/ingenic/asoc-v12/asoc-aic-v12.o
./soc/ingenic/snd-asoc-i2s-v13.o
./last.o

根据ASOC音频架构,LINUX 内核中分为 machine, platform, codec 三部分,采用分隔的思想,这三部分之间的关系,下面的大神分析的很透彻,我就不重复了。
https://blog.csdn.net/DroidPhone/article/details/6271122

machine

搜索编译的文件,寻找出 machine 部分的代码为 phoenix_icdc.c

以上为 machine 驱动文件的 Platfoem driver 结构体,当 platform 设备与驱动都注册挂接到 platform 总线上的时候,会调用驱动的 probe 所指向的函数,即 snd_phoenix_probe;

其中 pdev->dev->platform_data 在Platform设备文件中为

其中的宏定义为:

音频驱动中最重要的结构体 snd_soc_dai_linkphoenix_dais :

其中,第一个是常使用的音频结构,采用内部I2S 接口,内部codec icdc-d3,搜索相关的名字即可找到对应的设备驱动;
第二个数据为蓝牙使用的驱动,采用 PCM 接口通信;

platform

platform 部分驱动文件名为 asoc-dma-v13.c ,搜索 jz_asoc-dmic-dma 即可:

platform 部分的主要作用在上面标注的博客中描述的很详细;

还有一些深入的研究,没有写出来,需要过段时间, 暂时写这些,以后慢慢补。

君正 X1000 音频驱动架构相关推荐

  1. linux 音频架构绕过,linux音频驱动架构

    1.linux音频驱动架构分为3部分组成:硬件无关层(核心层ALSA).板级音频数字接口层驱动(McASP.McBSP等).外部codes驱动 sound/soc/davinci/ti81xx-etv ...

  2. LINUX音频驱动架构

    https://www.jianshu.com/p/0f5fe8f51b66 简介 LINUX下音频驱动开发,要遵循标准的ALSA架构, 下面分别从硬件架构.软件架构.驱动程序,3个方面分析. 硬件架 ...

  3. Java核心编程总结(二、抽象类与接口),linux音频驱动架构

    抽象类不能创建对象,如果创建,编译无法通过而报错 理解:假设创建了抽象类的对象,调用抽象方法,抽象方法没有方法体,无法执行 抽象类一定有而且是必须有构造器,是提供给子类创建对象时,初始化父类成员使用的 ...

  4. opensll zbar交叉编译(君正平台)

    一.OpenSSL 交叉编译: 执行 ./config --prefix=$(pwd)/output no-asm shared 修改Makefile 1.PLATFORM=linux-x86_64 ...

  5. Android 音频(Audio)架构

    一.概述 Android 的音频硬件抽象层 (HAL) 可将 android.media 中特定于音频的较高级别的框架 API 连接到底层音频驱动程序和硬件.本部分介绍了有关提升性能的实现说明和提示. ...

  6. QT5.15.2源码编译后在君正MIPS架构运行播放实时视频流

    问题背景: 公司新项目需要使用君正T40 soc,平台是 MIPS 架构,但是君正在此平台未开发出图形界面工具,项目需要人机交互,于是需要使用QT实现相关需求. 问题描述: 下载QT5.15.2源码( ...

  7. 君正主控CPU芯片,X2000多场景应用案例

    针对智能设备市场,雷龙发展近期推出基于多核异构跨界处理器X2000芯片的多场景应用案例.如智能门锁.激光打印机.扫译笔及显控板方案. [案例一]智能门锁:低功耗.响应速度快.防伪性能高 芯片:君正X2 ...

  8. 君正X1830芯片性能和处理器介绍

    简介: 君正X1830是一款针对物联网市场的处理器,面向诸如智能音箱,智能网关,语音面板等智能家居领域,以及人脸识别,专业安防,视频会议等行业领域.使用了创新的XBurst架构,可以满足高性能运算以及 ...

  9. Win10 更新又爆 BUG:删除音频驱动;苹果拒绝法院送达禁令裁定

    (给技术最前线加星标,每天看技术热点) 转自:开源中国.solidot.cnBeta.腾讯科技.快科技等 [技术资讯] 0.Windows 10 十月更新又爆新 BUG:删除音频驱动 就在我们认为Wi ...

  10. 君正X2000多核理器数据手册

    X2000是君正面向商业市场推出的新一代多核异构跨界处理器产品.其CPU内核采用独特的双XBurst®2+ XBurst®0的三核结构.产品兼有应用处理器的出色算力和微控制器的实时控制.低功耗的特点. ...

最新文章

  1. 【Java基础】面向对象特性
  2. 基于python的FFT频率和振幅处理
  3. 微软Office 365正式上架Mac App Store
  4. 前端开发掌握nginx常用功能之serverlocation匹配规则
  5. java 打开gc日志_在运行时打开GC日志记录
  6. 产品经理必知的三个数据分析框架
  7. Python+pandas使用重采样技术按时间段查看员工业绩
  8. 12306分流抢票软件 v1.13.21官方版 -抢票神器
  9. 5个必考的大厂SQL面试题
  10. cl.moqy.pw index.php_index2.php
  11. 【github】上有意思的深度学习项目——照片漫画风
  12. Proximal和ADMM
  13. SQL Server Group by
  14. Quick BI功能大图之可视分析概述
  15. maven jpa mysql_Maven 版 JPA 最佳实践
  16. rust石头高墙要维护吗_那些害死Haskell的,也会害死Rust
  17. PHP程序测试表模板,PHPUnit 手册
  18. 原码、补码以及定点数运算
  19. Markdown编辑论文中常见公式符号(持续更新)
  20. 趣图:程序员的假期 趣图:让程序员吐血的无穷提问

热门文章

  1. 颈椎前路caspar撑开器_Caspar撑开器和颈椎带锁钢板治疗下颈椎骨折脱位
  2. 天使投资喜欢什么样的商业计划书
  3. 比较不错的MaciOS软件论坛
  4. tx2 安装 Anaconda
  5. Github上传代码到main分支
  6. 维基百科(Wikipedia)网址
  7. 计算机中1kb等于多少字节,在计算机中1kb等于多少字节
  8. 微信聊天记录导出和年度报告制作小软件
  9. FTP下载工具的使用
  10. 笔记本拔插电源黑屏问题