如果你已经在 RK3568 上点亮过屏幕、跑通过串口,却一碰到声卡就卡壳——播放没声音、录音全是噪声、耳机和喇叭切不过来、log 里 AUDIO 相关的报错看不太懂,那这门课的定位就很明确:补的就是音频子系统这一块。它不讲 Android 应用层怎么调 MediaPlayer,也不从零教你写 C 语言,而是直接扎进 RK3568 + Android 15 + kernel 6.1 这条具体链路上,把声音从应用到硬件之间到底经过了什么,一段一段拆开看。
先确认你缺的是哪一层
音频子系统最容易让人迷路的地方在于「层数多」。同样是没声音,问题可能出在应用配置的音频属性,也可能出在 HAL 的音频策略选择、内核 ASoC 的 DAI 链路、Codec 寄存器,甚至是设备树里某个引脚复用没配对。很多人调音频靠猜,是因为不掌握每层该看什么。
这门课先从 RK35XX 系列(RK3568/RK3588/RK3588S/RK3576 等思路相通)的音频框架讲起,把各层职责和接口边界理清楚,再重点落到 HAL 层音频策略与路由切换的关键接口上。你学完之后应该能回答:一次播放请求发出后,是哪个环节决定了走扬声器还是耳机?路由切换到底改的是什么?
内核侧:声卡是怎么被「造」出来的
Android 上层再怎么调,最终都要落到内核里的声卡。这部分会围绕 ASoC 的机器驱动、Platform、Codec、DAI 几条线展开,讲清楚一张声卡在 RK3568 上是怎么注册出来的,I2S/PDM 这类接口在设备树里怎么描述,时钟和格式又在哪里对齐。
学完这块,你应该能自己判断:为什么声卡没枚举成功?为什么采样率一改就报错?而不是只会照着别人的 dts 抄一段。
调试手段:别只盯着 log 发呆
- 用内核提供的声卡与 PCM 节点确认链路是否真的建立;
- 通过寄存器读写验证 Codec 是否被正确配置;
- 借助 tinyplay/tinycap 这类工具做最小回环,把问题从上层剥离;
- 结合 Android 侧音频服务日志,判断卡在策略层还是驱动层。
这些手段的价值在于:把「没声音」这种模糊现象,收敛成一个能定位的具体环节。
看完应能回答的问题
- RK3568 上一张声卡从设备树到注册完成,关键节点有哪些?
- Android 15 的音频 HAL 里,策略配置和路由切换分别由什么驱动?
- 耳机插拔、扬声器切换这类场景,代码路径怎么走?
- 录音通路和播放通路在配置上有什么区别,常见坑在哪?
如果你手上正好有 RK3568 一类的板子,建议边看边在板上验证,音频这东西光看不动手,很难真的搞懂。
基于RK3568_Android15搞懂Audio音频子系统开发
课程详情
课程标题
基于RK3568_Android15搞懂Audio音频子系统开发适合人群
- Android驱动开发人员
- Linux驱动初级进阶者
- BSP开发工程师
- 想学习RK平台AUDIO音频子系统开发,想熟悉声卡开发和调试的开发人员
你将会学到
- 熟悉RK平台Audio音频子系统的开发
- 熟悉Android的音频子系统框架
- 熟悉声卡的开发
课程简介
本课程是基于正点原子的开发板(型号是ATK-DLRK3568),借助开发板实现实操。课程内容基于RK3568平台,Android15系统,内核版本为kernel-6.1。课程主要浅析RK35XX(包括RK3588/RK3588S/RK3568/RK3576等平台)平台的AUDIO音频子系统框架和主要音频子系统API接口。重点讲解HAL层音频策略和路由切换的实现关键接口,以及KERNEL驱动的调试开发。同时,课程也会涉及framework层和apk调用的部分接口。此外,课程还将指导Android/Linux驱动开发人员在Android系统上进行声卡设备的开发和调试,实现声卡功能,确保学员能够将所学知识应用到实际项目开发中。课程目录
01 RK3568平台Android15音频子系统框架浅析.mp4 02 AUDIO硬件原理和软件适配.mp4 03 调试和验证声卡功能.mp4 04 重温RK平台Android15音频子系统框架.mp4 05 RK平台音频子系统HAL层关键接口分析.mp4 06 RK平台音频子系统内核ASOC架构分析和开发调试.mp4





