君正 X1000 音频驱动架构

article/2025/10/6 14:39:39

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 部分源码
以上为 machine 驱动文件的 Platfoem driver 结构体,当 platform 设备与驱动都注册挂接到 platform 总线上的时候,会调用驱动的 probe 所指向的函数,即 snd_phoenix_probe;
函数snd_phoenix_probe

其中 pdev->dev->platform_data 在Platform设备文件中为
设备数据
其中的宏定义为:
设备数据
设备数据

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

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

platform

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

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

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


http://chatgpt.dhexx.cn/article/UfIFMfxY.shtml

相关文章

华为metro1000描述,optix metro1000参数-华讯佳科技

OptiX Metro1000传输设备(简称Metro1000)是华为技术有限公司研发的STM-1/STM-4/STM-16级别的盒式设备。华为Metro1000光端机主要应用于城域网、本地传输网接入层,具备结构简洁、集成度高等许多特点。 Metro1000光端机是华为技术有限公司开发的STM-1/STM-…

扔掉老破V100、A100,英伟达新一代计算卡H100来了

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&#xf…

君正X1000开发板/方案开发介绍

君正X1000芯片开发板/方案开发,或者需要相关开发资料,如规格书,硬件设计,原理图等,可到一牛网论坛 X1000主要技术指标及特点 处理器 Ingenic X1000, 1.0GHz, 集成32Mbytes LPDDR 存储 16MBytes,4线SPI …

君正X1000平台内核SPI接口使用

一. 平台环境 开发板 X1000_HALLEY2_BASEBOARD_V4.1源码版本 ingenic-linux-kernel3.10.14-x1000-v8.2-20181116 二. 源码编译: 参照《v1000_v8.2版本编译_20181116》,可整体进行编译(即同时编译生成x.bin,kernel镜像文件,文件…

算法工程师的职业发展前景思考和总结

本篇文章结合职友集数据对数据工程师【dba】通过个人理解和对职业行情现状进行个人主观总结。 声明:仅供参考,不是绝对,因人而异。 日期:2022年6月1日 作者:任聪聪 了解什么是算法工程师 首先算法工程师就是&#xff…

Python实现xls、xlsx文件内容替换的自定义函数

本篇文章主要讲解通过python批量替换xls、xlsx文件中的字符串的函数代码实例教程 日期:2023年5月9日 作者:任聪聪 版本:python3.9 前提准备 安装:xlrd,xlwt,openpyxl pip install 包名引入: import xlrd,xlwt,openpyxl实际效果: 可批量替换xls、xlsx两种文件类型,效…

Python实现doc、docx批量文本内容替换的代码实例

本篇文章主要讲解通过python及三方库实现doc、docx的批量文本内容替换的方法教程 日期:2023年5月10日 作者:任聪聪 python3.9版本 前提准备 安装: docx、win32 pip install 包名引入: import win32com.client as win32 import docx实际效果 可以修改doc、docx中包含图片…

程序员该怎么创业才比较靠谱?

本篇文章:主要讲解粉丝后台提问,创业相关问题。 作者:任聪聪 日期:2021年10月19日 宇宙的尽头绝对不是打工,打工是不可能的,程序员打一生的工时赚不到做企业能赚到的钱的。如果你月薪15k,到手11…

thinkphp5 线上部署后view-source:可以看到源码,但是http显示空白页面的原因及解决方法汇总

本篇文章主要讲解:thinkphp5 项目线上部署后view-source:可以看到源码,但是http显示空白页面的原因及解决方法教程 作者:任聪聪 日期:2023年4月17日 thinkphp版本5.1 现象说明: 线下测试环境,显示可以看到界面 部署到线上配置完毕后发现页面空白 在php中写入echo 1232…

AI数据标注工程师这个职业怎么样?

本篇文章主要讲解ai数据标注工程师这个职业的具体情况和相关的职业前景 作者:任聪聪 日期:2023年4月18日 数据是ai的灵魂,自然界中相对应的数据都活多少存在不准确、杂乱、无效等属性,需要人为进行收集、整理、分类和处理。其中ai…

js利用正则提取文本中所有符合的自定义文本内容方法教程

本篇文章主要讲解,使用js提取文本中所有出现的特定字符,保存在数组中并返回的实现方法。 日期:2022年12月9日 作者:任聪聪 一、使用的场景说明 一个超长文本中出现了n个固定规则的字符,但是需要将其进行提取并存在数组…

如何主动增加自己的开源项目star数的方法汇总

本篇文章主要讲解,通过自媒体、短视频、网络平台等渠道形式增加自己的开源项目的曝光度以增加star数的方法。 作者:任聪聪 日期:2023年4月20日 开源项目的star数在某些找工作的情况下是有一定的加分的,故此价值是一定的。但是自己…

【Cocos新手入门】 cocos creator 制作 select下拉框且可以选择获取选中参数数值的方法

本篇文章主要讲解使用cocos creator 制作 select下拉框且可以选择获取选中参数数值的方法。 作者:任聪聪 日期:2023年2月7日 cocos 引擎版本:2.4.3 在我们实现select框的时候,我们可以通过按钮显示隐藏某个元素来达成这个目标&…

Python给一个exe执行文件注册持续性的快捷键(热键)的代码实例

本篇文章主要讲解通过python给一个exe文件绑定一个快捷键、并取消快捷键(热键)的实操方法。 日期:2023年6月11日 作者:任聪聪 实现按下快捷键即可启动软件的效果说明 启动软件注册热键呼出其他软件或本体的效果说明: 演示材料说明:在download文件目录下存放一个可执行的…

AI模型训练、实施工程师的职业前景怎么样?

本篇文章主要讲解ai模型训练、模型实施工程师的职业前景和趋势分析 作者:任聪聪 日期:2023年4月18日 ai训练师、模型实施工程师,一般是指opencv、pytorh、python、java、机械学习、深度学习、图像识别、视频检测等领域的模型数据训练工作。 …

批量提交网站url到百度进行提升索引量的方法

本篇文章主要讲解通过百度的推送接口,向百度批量提交网站url并让百度加快收录网站页面的方法 作者:任聪聪 日期:2023年4月7日 前置条件 1.需要去百度站长平台,绑定自己的域名。前往用户中心,添加网站。 注&#xff1…

抖音开发者工具配置抖音小游戏为横屏显示的方法

本篇文章主要讲解,使用抖音开发者工具配置抖音小游戏为横屏显示的方法 作者:任聪聪 日期:2023年2月3日 问题现象 横屏的游戏发布到抖音开发者工具中发现是竖屏显示 实际原因 game.json的配置为竖屏导致。改为横屏即可横屏显示游戏。 {&q…

python动态加载tkinter图形化元素的方法

本篇文章主要讲解,python动态加载tkinter元素的方法 日期:2022年6月2日 作者:任聪聪 利用tkinter做动态的表单界面实际上是很简单的,只需要对界面进行update即可实现,每一个元素实际上都可动态加载。 动态加载表单元素…

微信小程序流量主提升ecpm的一些方法

本篇文章主要讲解:微信小程序流量主提升ecpm的一些方法 日期:2023年1月19日 作者:任聪聪 一、对ecpm的疑问和科普 什么是ecpm ecpm就是千次广告曝光收入,是一个预估的价格,而不是额定的,他是随着曝光度,用户点击度,页面访问数来决定的。 ecpm为什么会低? 微信官方…

微信小程序、小游戏的流量主一般可以赚多少钱?

本篇文章主要科普小程序、小游戏流量主一般赚钱的实际情况,通过在下长期运营的经验汇总而成。 日期:2023年2月26日 作者:任聪聪 小程序、小程序满1000用户后即可开通流量主,但实际上很多人并没有传说中的那种日赚几千的流量收入的…