RK3506 外设收官:音频点亮
RK3506 外设收官:音频点亮
rk-forge 已经开源!带你从零把一颗几乎没人理的 RK3506,用主线 Linux(7.1)+ 主线 U-Boot 一路跑到
rk3506 login:——可按序打上去的补丁库、诚实的差距报告、完整 bringup 教程都在这。欢迎观摩,喜欢点个⭐!
仓库地址:https://github.com/Awesome-Embedded-Learning-Studio/rk-forge
静态网页:https://awesome-embedded-learning-studio.github.io/rk-forge/
有朋友反馈说希望有PDF渲染的版本,您可以戳戳:
https://github.com/Awesome-Embedded-Learning-Studio/rk-forge/releases/tag/pdf%2F2026-06-23-1120,或者有其他更新的版本。
因为我怕放百度网盘会被发文平台一脚踹飞,所以如果不方便上Github的朋友,可以私信我要一下百度网盘链接!
外设系列最后一章。RK3506 这块板的音频是 ES8388 codec + SAI1 数字接口 + PL330 DMA 三件套。三样主线驱动都在,但两样缺 RK3506 的接线:SAI 缺 of_match、PL330 的 DMA 请求要过一个 GRF crossbar(主线那个单 cell 的 xlate 不认)。这章把数字链路点亮——aplay/mpg123 能干净播完、声卡注册。真出声还得等耳机线(板上的耳机接口得接线),但数字链路这一关,板上过了。
三个件,两处缺接线
音频链路是ES8388(codec) ↔ SAI1(数字接口) ↔ PL330(DMA)。ES8328 这个 codec 主线驱动在(SND_SOC_ES8328_I2C);SAI 主线rockchip_sai.c也在,但of_match 里没有 rk3506;DMA 这边,RK3506 的 DMA 请求要过一个 GRF 的 crossbar,而主线of_dma_pl330_xlate是单 cell 的,不认 RK3506 那个 5-cell 的编码(dmas = <dmac chan mux_reg val …>)。所以这一章是 0009(驱动:SAI of_match + PL330 5-cell dmamux)加 0010(DT:sai1 + dmac0/dmac1 + es8388 + simple-card)。
几个 gotcha
跑通这条链踩了几个坑,记一下。一是 ES8328 的 I2C 驱动SND_SOC_ES8328_I2C是个隐藏 tristate,得它依赖的SOUND/SND_SOC都开了才会出现在 menuconfig,别满世界找它找不到。二是 codec 的set_sysclk要喂12288000(不是随便一个频率),时钟不对 HAL 起不来。三是 SAI1 的 pinctrl 跟 i2c0 在 PB5/PB6 上冲突,所以 sai1 只用 sdo0(stereo),避开 i2c0。四是板子默认 mute,aplay 不出声先别慌,alsamixer把通路 unmute。还有 config:SOUND=y+SND_SOC_ES8328_I2C=y+SND_SIMPLE_CARD=y,而且kernel-trim.config不能再砍SOUND(之前一度误判为省体积砍过,其实是误诊)。
成功长这样
数字链路点亮,声卡注册。这些行从全链 boot-sdl-2026-06211109 里截的:
es8328 0-0011: supply DVDD not found, using dummy regulator ← codec 上线 rockchip-sai ff310000.sai: ... ← 数字接口 ALSA device list: #0: rockchip-es8388 ← 声卡注册ES8388 codec 上线、SAI1 数字接口 probe、ALSA 注册了rockchip-es8388这张声卡。aplay和mpg123 -r 48000在板上能把一首曲子干净播完(数字链路这一关过了);模拟输出要等耳机线接上才能验证真出声。
外设系列走完
到这里,Ethernet(双口通网)、SPI、MMC/SD、USB(双 host)、WiFi(RTL8733BU 联网)、I2C/UART(RMIO)、Audio(数字链路)全部点亮。一块"能开机的砖",现在是一块能联网、能插 U 盘、能连 WiFi、能出声的板子了。Display(屏幕)等 LCD 到位再补。给板子拍张照,外设系列完结撒花。
