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

RK809调试

一、内核配置(让内核支持 RK809 音频)

1. 启用 simple-audio-card 通用音频驱动

  • 文件位置kernel/arch/arm64/configs/lubancat2_defconfig(或你的板级 defconfig)
  • 修改内容
    CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y
  • 作用:启用simple-audio-card框架,允许通过设备树描述音频链路,无需自己写驱动。

2. 启用 RK3568 I2S 驱动

  • 文件位置kernel/sound/soc/rockchip/Makefile
  • 关键依赖rockchip_i2s.c对应CONFIG_SND_SOC_ROCKCHIP_I2S
  • kernel/arch/arm64/configs/lubancat2_defconfig中添加
    CONFIG_SND_SOC_ROCKCHIP=y CONFIG_SND_SOC_ROCKCHIP_I2S=y CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y
  • 作用:让内核支持 RK3568 的 I2S 控制器,用于和 RK809 Codec 通信。

3. 启用 RK809 Codec 驱动

  • 文件位置kernel/sound/soc/codecs/下有rk817_codec.c
  • kernel/sound/soc/codecs/没有单独的rk809_codec.c,但能看到rk817_codec.c/h—— 核心原因是:RK809 Codec 驱动和 RK817 做了兼容,复用rk817_codec.c驱动文件,瑞芯微原厂将 RK809/RK817 等同系列 PMIC 的 Codec 驱动做了整合,无需单独的 rk809 驱动文件,这是嵌入式开发中很常见的同系列硬件兼容设计
  • kernel/arch/arm64/configs/lubancat2_defconfig中添加
    CONFIG_SND_SOC_RK817=y
  • 作用:让内核识别 RK809 PMU 内部的 Codec 模块。


二、设备树配置(告诉内核硬件怎么连)

1. 配置 I2S1 控制器(CPU 侧)

  • 文件位置kernel/arch/arm64/boot/dts/rockchip/rk3568-lubancat-dsi.dtsi(或你的板级 dtsi)
  • 节点名i2s1_8ch: i2s@fe410000
  • 关键配置

    dts

    i2s1_8ch: i2s@fe410000 { compatible = "rockchip,rk3568-i2s-tdm"; reg = <0x0 0xfe410000 0x0 0x10000>; interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru MCLK_I2S1_8CH_TX>, <&cru MCLK_I2S1_8CH_RX>, <&cru HCLK_I2S1_8CH>; clock-names = "mclk_tx", "mclk_rx", "hclk"; dmas = <&dmac1 2>, <&dmac1 3>; dma-names = "tx", "rx"; resets = <&cru SRST_M_I2S1_8CH_TX>, <&cru SRST_M_I2S1_8CH_RX>; reset-names = "tx-m", "rx-m"; rockchip,cru = <&cru>; rockchip,grf = <&grf>; #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&i2s1m0_sclktx &i2s1m0_sclkrx &i2s1m0_lrcktx &i2s1m0_lrckrx &i2s1m0_sdi0 &i2s1m0_sdi1 &i2s1m0_sdi2 &i2s1m0_sdi3 &i2s1m0_sdo0 &i2s1m0_sdo1 &i2s1m0_sdo2 &i2s1m0_sdo3>; status = "okay"; // 从 disabled 改为 okay };
  • pinctrl 配置(同一文件中):

    dts

    i2s1m0_sclktx: i2s1m0-sclktx { rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; }; // ... 其他引脚复用配置类似,确保I2S的 MCLK/SCLK/LRCK/SDI/SDO 引脚正确复用

2. 配置 RK809 Codec(Codec 侧)

  • 文件位置:同一设备树文件
  • 节点名rk809_codec: codec@1a(I2C 地址 0x1a)
  • 关键配置

    dts

    rk809_codec: codec@1a { compatible = "rockchip,rk809-codec", "rockchip,rk817-codec"; clocks = <&cru I2S1_MCLKOUT_TX>; clock-names = "mclk"; assigned-clocks = <&cru I2S1_MCLKOUT_TX>; assigned-clock-rates = <12288000>; // 主时钟频率,常见 11.2896 / 12.288 / 24.576 MHz #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&i2s1m0_mclk>; hp-volume = <20>; spk-volume = <3>; mic-in-differential; status = "okay"; };

3. 配置 simple-audio-card(把 CPU 和 Codec 连起来)

  • 文件位置:同一设备树文件
  • 节点名rk809_sound: rk809-sound
  • 关键配置

    dts

    rk809_sound: rk809-sound { status = "okay"; compatible = "simple-audio-card"; simple-audio-card,format = "i2s"; simple-audio-card,name = "rockchip,rk809-codec"; simple-audio-card,mclk-fs = <256>; // MCLK = 采样率 * 256 simple-audio-card,widgets = "Microphone", "Mic Jack", "Headphone", "Headphone Jack"; simple-audio-card,routing = "Mic Jack", "MICBIAS1", "IN1P", "Mic Jack", "Headphone Jack", "HPOL", "Headphone Jack", "HPOR"; simple-audio-card,cpu { sound-dai = <&i2s1_8ch>; }; simple-audio-card,codec { sound-dai = <&rk809_codec>; }; };
  • 含义
    • format = "i2s":指定音频格式为 I2S。
    • widgets:定义音频组件(麦克风、耳机)。
    • routing:定义音频通路(麦克风→IN1P,HPOL/HPOR→耳机)。
    • cpu/codec:把 CPU 侧 I2S 和 Codec 侧 DAI 绑定。

三、编译与部署

  1. 编译内核
    make lubancat2_defconfig make -j$(nproc)
  2. 更新内核镜像:将生成的Imagedtb文件烧录到开发板。

四、验证与调试

1. 查看声卡注册

cat /proc/asound/cards
  • 正常输出:

    plaintext

    0 [rockchiprk809co]: rockchip_rk809 - rockchip,rk809-codec 1 [rockchiphdmi ]: rockchip_hdmi - rockchip-hdmi
  • 说明:card0是 RK809 Codec,card1是 HDMI 音频。

2. 查看音频设备节点

ls /dev/snd
  • 正常输出:controlC0pcmC0D0cpcmC0D0p等。
    • controlC0:音频控制接口(音量、静音等)。
    • pcmC0D0c:录音设备(c=Capture)。
    • pcmC0D0p:播放设备(p=Playback)。

3. 查看可录音设备

arecord -l
  • 正常输出:

    plaintext

    card 0: rockchiprk809co [rockchip,rk809-codec], device 0: fe410000.i2s-rk817-hifi rk817-hifi-0 []

4. 测试播放与录音

  • 播放测试:
    aplay test.wav -D hw:0,0
  • 录音测试:
    arecord -D hw:0,0 -f cd test.wav

五、常见问题排查

  1. 声卡未注册:检查设备树中status是否为okay,内核配置是否启用CONFIG_SND_SIMPLE_CARD
  2. 无声音:检查widgetsrouting配置是否正确,耳机 / 扬声器通路是否映射。
  3. 杂音:调整mclk-fsassigned-clock-rates,确保时钟稳定;检查硬件电路是否有干扰。
http://www.jsqmd.com/news/430154/

相关文章:

  • 为什么有这么多设备树文件
  • 程序员脱单实录:那个在车里跟我表白的代码仔,成了我男朋友
  • Linux的学习之路——进程(二)
  • 【毕业设计】SpringBoot+Vue+MySQL web铁路订票管理系统平台源码+数据库+论文+部署文档
  • SpringBoot+Vue .js高校学生选课系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 2026年口碑好的养殖专用石墨烯地暖/家用石墨烯地暖制造厂家哪家靠谱 - 品牌宣传支持者
  • 2026年评价高的防水石墨烯地暖制造厂家哪家靠谱 - 品牌宣传支持者
  • 2026年质量好的铝合金压铸电池包壳体/铝合金压铸齿轮箱制造厂家哪家靠谱 - 品牌宣传支持者
  • 2026年口碑好的洁净室起重机实力工厂推荐 - 品牌宣传支持者
  • 2026年热门的起重机高口碑品牌推荐 - 品牌宣传支持者
  • 2026年质量好的龙门机床焊接件/五轴机床焊接件实力工厂推荐 - 品牌宣传支持者
  • 2026年衡水日语培训中心深度评测与权威推荐 - 2026年企业推荐榜
  • 2026年比较好的蓄电池电焊机/固态电池电焊机高口碑品牌推荐 - 品牌宣传支持者
  • 2026年评价高的固态电池焊接逆变两用机可靠供应商推荐 - 品牌宣传支持者
  • 《全球算力主权宪章》(The Universal Computational Sovereignty Charter)
  • 《全球算力主权宪章》Global Charter of Computational Sovereignty (GCCS)
  • 基于Java+SSM+Django网上花店系统(源码+LW+调试文档+讲解等)/在线花店系统/网络花店平台/网上订花服务/网上花店软件/网上购买花卉系统/网上鲜花预定系统/网上花店管理系统
  • 基于Java+SSM+Flask网上奶茶店系统(源码+LW+调试文档+讲解等)/在线奶茶店系统/网络奶茶店解决方案/奶茶店在线管理平台/奶茶店系统软件开发/网上饮品店系统/网络奶茶销售系统
  • 基于Java+SSM+Flask物流信息管理系统(源码+LW+调试文档+讲解等)/物流软件/信息管理/物流追踪/物流平台/物流系统/运输管理/仓储管理/配送管理/物流解决方案/物流技术/供应链管理
  • 中等规模公司是最有可能跑通AI workflow的
  • 2026年热门的矿用交流380V/660V等离子切割电焊两用机/矿用等离子切割电焊两用机生产商哪家强 - 品牌宣传支持者
  • Java SpringBoot+Vue3+MyBatis web铁路订票管理系统系统源码|前后端分离+MySQL数据库
  • 2026年质量好的固定推拉棚实力品牌厂家推荐 - 品牌宣传支持者
  • 2026年知名的折叠天幕精选厂家推荐 - 品牌宣传支持者
  • 2026年蚌埠五河县家装公司盘点:这五家值得您关注 - 2026年企业推荐榜
  • 2026年质量好的铝合金折叠天幕品牌厂家哪家靠谱 - 品牌宣传支持者
  • IL 层(程序集改写)全景解析:在 DLL 的“字里行间”动手术——构建前/构建后改写 IL 的最常见注入方式
  • 运行时托管层(反射/代理/Hook)注入全解析:不改 DLL 的“现场加装机关”——运行时挂钩、代理与事件订阅
  • 云中心化与“云—边—端”的区别,全方位对比了解
  • 2026年比较好的东莞不锈钢铸造定制厂家推荐哪家好 - 品牌宣传支持者