rk3566 配置HDMI的屏的流程
一、确认硬件与固件
- 硬件:RK3566 板载 Micro HDMI → 接 HDMI 显示器(用转接头 / 线)。
- 固件:优先用官方带 HDMI 配置的镜像(如 hdmi 专用 img),避免默认关闭 HDMI 的版本。
二、设备树(DTS)配置(必做)
路径(Linux 内核):
plaintext
arch/arm64/boot/dts/rockchip/rk356x/xxx.dts1)打开 HDMI 节点
dts
&hdmi { status = "okay"; // 启用 HDMI ddc-i2c-bus = <&i2c5>; pinctrl-names = "default"; pinctrl-0 = <&hdmitx_scl &hdmitx_sda>; };2)包含 HDMI 时序 dtsi(推荐)
dts
#include "rk3566-hdmi.dtsi" // 或厂商自带:tspi-rk3566-hdmi-v10.dtsi注释掉则关闭 HDMI。
3)自定义分辨率时序(如 1080p@60)
dts
&hdmi { display-timings { timing0 { clock-frequency = <148500000>; hactive = <1920>; vactive = <1080>; hsync-len = <44>; hback-porch = <148>; hfront-porch = <88>; vsync-len = <5>; vback-porch = <36>; vfront-porch = <4>; }; }; };时序参数务必与屏幕 EDID 一致。
三、内核配置(确保驱动开启)
内核 menuconfig:
plaintext
Device Drivers → Graphics support → DRM Support → Rockchip DRM driver → Enable HDMI driver确认:
CONFIG_DRM_ROCKCHIP_HDMI=yCONFIG_DRM=y
四、启动参数设置(可选,优先级高)
修改extlinux/extlinux.conf或boot.ini:
plaintext
append ... video=HDMI-A-1:1920x1080M@60HDMI-A-1:HDMI 接口名(可在/sys/class/drm查看)。- 保存 → 重启。
五、Android 额外配置(如果是 Android)
- 设备树同 Linux,确保
&hdmistatus = okay。 - 关闭其他显示(如 MIPI LCD)避免冲突:
dts
&lcd { status = "disabled"; }; - 设置分辨率属性:
bash
运行
adb shell setprop persist.sys.resolution.aux 1920x1080p60 - 重启或重启 surfaceflinger。
六、调试与验证(关键)
- 查看 HDMI 节点:
bash
运行
ls /sys/class/drm/ cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode - 查看当前分辨率:
bash
运行
xrandr - 查看内核日志:
bash
运行
dmesg | grep hdmi - 常见问题:
- 无信号:设备树 status 未设为 okay、内核驱动未选、HDMI 线坏。
- 分辨率不对:时序参数错误、未读 EDID、启动参数覆盖。
- Android 双屏异常:关闭 MIPI/EDP 屏。
七、一键总结(照着做即可)
- 硬件接好 HDMI 线与显示器。
- 设备树:
&hdmistatus = okay,包含 hdmi dtsi。 - 内核:开启 DRM 与 HDMI 驱动。
- (可选)启动参数设
video=HDMI-A-1:1920x1080M@60。 - Android:关闭其他屏,setprop 分辨率。
- 编译烧写 → 重启 → 用 dmesg/edid/xrandr 验证
一、HDMI 热插拔配置
DTS 追加热插拔检测
dts
&hdmi { hp-det-gpio = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>; interrupt-parent = <&gpio0>; interrupts = <RK_PA3 IRQ_TYPE_LEVEL_HIGH>; };内核开启热插拔开关:CONFIG_DRM_HDMI_HOTPLUG=y
二、画面旋转 & 缩放
- 启动参数旋转 90 度
plaintext
append ... video=HDMI-A-1:1920x1080M@60,rotate=90- 系统内动态缩放
bash
运行
xrandr --output HDMI-A-1 --scale 0.8x0.8三、HDMI 音频同步输出
- DTS 绑定音频路由
dts
&hdmi { sound-dai = <&hdmi_sound>; };- 内核勾选
plaintext
CONFIG_SND_ROCKCHIP_HDMI=y- 命令切换出声设备
bash
运行
amixer cset numid=3 2四、双显示切换(HDMI + 本地屏)
- 仅 HDMI 输出
bash
运行
xrandr --output LCD --off --output HDMI-A-1 --auto- 复制画面
bash
运行
xrandr --output HDMI-A-1 --same-as LCD五、自定义 EDID 强制适配
- 提取显示器 EDID
bash
运行
edid-decode /sys/class/drm/card0-HDMI-A-1/edid > edid.bin- DTS 加载自定义 EDID
dts
&hdmi { edid-fw-name = "rk3566-hdmi.edid"; };把 edid.bin 放入固件设备树目录
六、编译烧录实操命令
- 编译设备树
bash
运行
make dtbs- 替换 boot 分区 dtb 文件
- 单独更新启动参数
bash
运行
fw_setenv bootargs '原有参数 video=HDMI-A-1:1920x1080@60' saveenv reboot七、高频故障速修
- 黑屏无识别
dmesg | grep hp查看插拔中断,核对 GPIO 引脚定义 - 花屏闪屏降低刷新率为 50Hz,修正时序参数
- 有声无图关闭 DRM 硬件加速测试:
drm_kms_helper.dumb_alloc=0 - AndroidHDMI 无画面修改 framework 显示配置,默认显示设备指定 HDMI
