当前位置: 首页 > news >正文

*RK809 Codec 音频驱动调试笔记操作总结

设备树配置

节点作用

这个节点描述了系统中音频子系统的配置信息,用于内核驱动初始化音频设备。

关键属性说明

  • compatible:用于驱动匹配,内核会根据这个字符串找到对应的驱动程序。

  • name:节点名称,一般为rk809-sound

  • rockchip,card-name:声卡的名称,在系统中显示的音频设备名。

  • rockchip,codec:指定音频 codec(这里是 RK809)。

  • rockchip,cpu:指定 CPU 端的音频接口(如 I2S/PCM 控制器)。

  • rockchip,format:音频数据格式(如 I2S、左对齐等)。

  • rockchip,mclk-fs:主时钟与采样率的倍数关系,用于配置 codec 时钟。

  • pinctrl-0pinctrl-names:引脚复用配置,定义音频相关引脚的功能。

  • hp-det-gpio:耳机检测 GPIO,用于检测耳机插入。

  • status:节点状态,okay表示启用,disabled表示禁用。

查看设备树

// Simple Audio Card:绑定I2S1和RK809,定义音频路由 rk809_sound: rk809-sound { status = "okay"; compatible = "simple-audio-card"; simple-audio-card,format = "i2s"; // 音频格式为I2S,固定 simple-audio-card,name = "rockchip,rk809-codec"; // 声卡名称(开发板可见) simple-audio-card,mclk-fs = <256>; // MCLK=采样率×256,固定256 // 声明音频硬件组件(与LubanCat 2N-V2硬件匹配) simple-audio-card,widgets = "Microphone", "Mic Jack", "Headphone", "Headphone Jack", "Speaker", "Speaker"; // 音频通路路由(必须与硬件原理图一致,关键!) simple-audio-card,routing = "Mic Jack", "MICBIAS1", // 麦克风偏置电压供电 "IN1P", "Mic Jack", // 麦克风输入到Codec的IN1P通道 "Headphone Jack", "HPOL", // 左耳机输出 "Headphone Jack", "HPOR", // 右耳机输出 "Speaker", "SPKOL", // 左扬声器输出 "Speaker", "SPKOR"; // 右扬声器输出 // 绑定CPU侧:I2S1控制器 simple-audio-card,cpu { sound-dai = <&i2s1_8ch>; }; // 绑定Codec侧:RK809 Codec simple-audio-card,codec { sound-dai = <&rk809_codec>; }; };

/LubanCat_SDK/kernel/Documentation$

vim devicetree/bindings/mfd/rk809.txt

查看声卡列表

cat /proc/asound/cards

这里列出了两个声卡:

  • card1叫rockchiphdmi,用于hdmi声音输出。

  • card0叫rockchiprk809co,也就是rk809 codec。

查看声卡的设备接口

ls /dev/snd

controlC0、controlC1、pcmC0D0p、pcmC1D0c、pcmC1D0p这些可以看作是声卡的设备接口。

  • controlC0、controlC1,这些文件是声卡的音频控制设备的接口。

  • C0、C1代表不同的声卡。通过这些控制文件,你可以调整音量、选择音频源、设置静音等音频硬件的操作。

  • pcmC0D0p、pcmC1D0c、pcmC1D0p,这些文件是声卡的 PCM(脉冲编码调制)设备的接口,主要用于音频数据的播放和录制。pcmC1D0c 和 pcmC1D0p 分别是音频设备 1 上的输入和输出 PCM 接口。pcmC0D0p 是音频设备 0 的播放接口。

  • c 代表 capture(录音输入),p 代表 playback(播放输出)。

查看可录音的设备

arecord -l

列出系统中所有可用的音频播放硬件设备

aplay -l

Card 0: rockchiprk809

  • 这是板载的音频 codec(由 RK809/RK817 PMIC 提供),对应你之前查看的rk809-sound设备树节点。

  • 设备名:dailink-multicodecs rk817-hifi-0

  • 用途:用于驱动板载的耳机、扬声器等模拟音频输出。

Card 1: rockchiphdmi

  • 这是 HDMI 接口的音频输出设备,通过 I2S 总线连接。

  • 设备名:fe400000.i2s-i2s-hifi i2s-hifi-0

  • 用途:用于将音频通过 HDMI 接口输出到显示器或电视。

rk809调试

1.1、支持simple-audio-card驱动

simple-card.c实现了一个通用音频设备驱动,它允许开发者通过设备树(DeviceTree, DT)描述音频硬件连接关系,而无需编写额外的内核驱动代码。

要想将sound/soc/generic/simple-card.c文件对应的驱动编译到内核,我们需要配置CONFIG_SND_SIMPLE_CARD,我们定位到sound/soc/generic/Makefile文件;

cd kernel .config

1.2、支持I2S驱动

定位到kernel/sound/soc/rockchip/Makefile

/home/lubancat/LubanCat_SDK/kernel/sound/soc/rockchip

在.config 查看功能宏:CONFIG_SND_SOC_ROCKCHIP_I2S 是否打开

已经打开

板级设备树

grep -r "&i2s1_8ch" .

./rk3568-lubancat-2n.dts: sound-dai = <&i2s1_8ch>;

./rk3568-lubancat-2n.dts:&i2s1_8ch {

lubancat@lubancat-vm:~/LubanCat_SDK/kernel/arch/arm64/boot/dts/rockchip$

lubancat@lubancat-vm:~/LubanCat_SDK/kernel/arch/arm64/boot/dts/rockchip$ vim rk3568-lubancat-2n.dts

1.3、支持rk809驱动

功能宏

找驱动

~/LubanCat_SDK/kernel/sound/soc/codecs$ find . -name "*.o"

搜匹配字段

设备树

硬件相关信息

compatible = "rockchip,rk809-codec", "rockchip,rk817-codec";

RK809 Codec音频驱动调试笔记操作总结

本文围绕RK3568平台下RK809 Codec音频驱动调试展开,核心是通过设备树配置内核驱动宏开启硬件接口绑定实现音频功能,同时包含调试过程中的设备查看、节点定位、配置验证等实操步骤,最终实现RK809板载音频(耳机/麦/扬声器)和HDMI音频的正常工作,以下是核心操作总结:

一、设备树相关操作

  1. 查看系统生效的设备树节点:通过/proc/device-tree/rk809-sound查看板载音频节点配置,验证compatible/status/rockchip,cpu/codec等关键属性是否生效(status=okay为启用)。

  2. 编写/修改rk809-sound节点:配置simple-audio-card绑定,指定音频格式为I2S、主时钟倍数256,定义音频widgets(麦克风/耳机/扬声器)和硬件路由,同时绑定CPU侧i2s1_8ch和Codec侧rk809_codec

  3. 配置rk809_codec节点:指定兼容属性rockchip,rk809-codec/rockchip,rk817-codec,配置时钟(MCLK=12288000)、引脚、音量参数,设置status=okay

  4. 配置I2S1_8CH控制器:从SoC级dtsi找到i2s1_8ch基础定义,在板级dts(rk3568-Lubancat-2n.dts)中覆盖配置——启用节点、删除仅播放属性、精简2通道引脚配置。

  5. 设备树节点搜索定位:用grep -r "&i2s1_8ch" .查找板级dts对I2S1的引用,用grep -r "i2s1_8ch:" .查找SoC级原始定义;用ag rk809搜索RK809相关设备树绑定文档。

二、内核驱动配置验证

  1. 开启Simple Audio Card驱动:确认内核配置CONFIG_SND_SIMPLE_CARD开启,对应驱动文件sound/soc/generic/simple-card.c

  2. 开启RK3568 I2S驱动:检查.configCONFIG_SND_SOC_ROCKCHIP_I2S=yCONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y已开启,对应驱动rockchip_i2s.o/rockchip_i2s_tdm.o

  3. 验证RK809/817 Codec驱动:在sound/soc/codecs目录下确认rk817_codec.o编译生成,验证驱动兼容字段rockchip,rk817-codec与设备树匹配。

三、音频设备调试与验证

  1. 查看声卡列表cat /proc/asound/cards,验证Card0(rk809 Codec,板载音频)、Card1(HDMI音频)是否识别。

  2. 查看音频设备接口ls /dev/snd,确认控制接口(controlC0/C1)、PCM播放/录音接口(pcmC0D0p等,p=播放、c=录音)存在。

  3. 查看播放/录音设备aplay -l列出所有播放硬件(验证Card0/Card1),arecord -l验证RK809的录音接口是否识别。

四、核心硬件绑定逻辑验证

确认设备树中CPU侧I2S1_8CHCodec侧RK809通用音频框架Simple Audio Card三者完成绑定,时钟、引脚、音频路由与硬件原理图一致,是音频驱动正常工作的关键。

RK809 Codec音频驱动调试思维导图

http://www.jsqmd.com/news/431230/

相关文章:

  • 给你一张清单 9个一键生成论文工具:本科生毕业论文+开题报告写作全测评
  • 【运维】运维转行网安|从0到1落地指南,2026最稳转型路径
  • 基于微信小程序的健康管理微信小程序设计与实现
  • 2026年产后康复机构推荐:西安金月子科学坐月子,专业护母婴! - 深度智识库
  • 彻底颠覆!Google 108页Agent Quality白皮书指南(附中英双版PDF),翻遍全网,这绝对是最全教材
  • Java Web应用开发入门
  • 中间件知识快速复习:Redis、MySQL、消息队列核心要点
  • 再论勾股定理-楼梯悖论
  • 2026最有效的防脱生发精华液怎么选?实测成分与效果解析 - 品牌排行榜
  • 互联网大厂Java面试实战:核心技术、微服务架构与AI应用全解析
  • 2026年知名的铝板/5182铝板品牌厂家哪家靠谱 - 品牌宣传支持者
  • 2026年知名的同心异径管,碳钢异径管,对焊异径管厂家行业热门推荐 - 品牌鉴赏师
  • 月子餐哪家好?2026年最新推荐:西安金月子用科学守护母婴未来! - 深度智识库
  • 2026年3月汽车窗膜厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • 2026年质量好的挖机改装钻裂一体机/挖改钻裂一体机实力工厂推荐 - 品牌宣传支持者
  • 轨道交通电力电缆生产厂家推荐(2026年):涵中低压、低压、中压、变频电缆等厂家 - 品牌2026
  • 2026年3月防爆汽车窗膜厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • LangChain Chain链
  • 2026年高端月子会所权威观察报告:科学坐月子时代,谁在定义行业标准? - 深度智识库
  • 2026年热门的埋弧高频焊管,大口径高频焊管厂家专业评测推荐榜 - 品牌鉴赏师
  • 2026 物联网开发实力榜单:落地稳、扩展强、成本优 - 速递信息
  • 2026 年西安高端月子中心推荐指南:金月子科学坐月子优选! - 深度智识库
  • 2026年正规的DN200直缝钢管,厚壁直缝钢管,高频焊直缝钢管厂家采购优选指南 - 品牌鉴赏师
  • 香港盛世設計费用贵不贵,它在香港的口碑究竟好不好? - mypinpai
  • 2026平价护发精油排行榜:高性价比修护单品推荐 - 品牌排行榜
  • 2026年诚信的枕式包装机,饮料包装机,水果包装机厂家选型推荐榜单 - 品牌鉴赏师
  • 永生化细胞品牌排行榜:基于质量、价格、服务的综合评估 - 品牌推荐大师
  • 精度与成本难平衡?一文看懂Roche行星减速怎么选 - 深度智识库
  • 聊聊储油罐生产厂哪家售后好,江西贵安实业靠谱吗? - myqiye
  • 2026新托福机构选择指南|权威推荐榜+避坑指南 - 速递信息