rk3566 配置HDMI的屏的流程
2026/5/24 1:22:04 网站建设 项目流程

一、确认硬件与固件

  1. 硬件:RK3566 板载 Micro HDMI → 接 HDMI 显示器(用转接头 / 线)。
  2. 固件:优先用官方带 HDMI 配置的镜像(如 hdmi 专用 img),避免默认关闭 HDMI 的版本。

二、设备树(DTS)配置(必做)

路径(Linux 内核):

plaintext

arch/arm64/boot/dts/rockchip/rk356x/xxx.dts

1)打开 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=y
  • CONFIG_DRM=y

四、启动参数设置(可选,优先级高)

修改extlinux/extlinux.confboot.ini

plaintext

append ... video=HDMI-A-1:1920x1080M@60
  • HDMI-A-1:HDMI 接口名(可在/sys/class/drm查看)。
  • 保存 → 重启。

五、Android 额外配置(如果是 Android)

  1. 设备树同 Linux,确保&hdmistatus = okay。
  2. 关闭其他显示(如 MIPI LCD)避免冲突:

    dts

    &lcd { status = "disabled"; };
  3. 设置分辨率属性:

    bash

    运行

    adb shell setprop persist.sys.resolution.aux 1920x1080p60
  4. 重启或重启 surfaceflinger。

六、调试与验证(关键)

  1. 查看 HDMI 节点:

    bash

    运行

    ls /sys/class/drm/ cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode
  2. 查看当前分辨率:

    bash

    运行

    xrandr
  3. 查看内核日志:

    bash

    运行

    dmesg | grep hdmi
  4. 常见问题:
    • 无信号:设备树 status 未设为 okay、内核驱动未选、HDMI 线坏。
    • 分辨率不对:时序参数错误、未读 EDID、启动参数覆盖。
    • Android 双屏异常:关闭 MIPI/EDP 屏。

七、一键总结(照着做即可)

  1. 硬件接好 HDMI 线与显示器。
  2. 设备树:&hdmistatus = okay,包含 hdmi dtsi。
  3. 内核:开启 DRM 与 HDMI 驱动。
  4. (可选)启动参数设video=HDMI-A-1:1920x1080M@60
  5. Android:关闭其他屏,setprop 分辨率。
  6. 编译烧写 → 重启 → 用 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

二、画面旋转 & 缩放

  1. 启动参数旋转 90 度

plaintext

append ... video=HDMI-A-1:1920x1080M@60,rotate=90
  1. 系统内动态缩放

bash

运行

xrandr --output HDMI-A-1 --scale 0.8x0.8

三、HDMI 音频同步输出

  1. DTS 绑定音频路由

dts

&hdmi { sound-dai = <&hdmi_sound>; };
  1. 内核勾选

plaintext

CONFIG_SND_ROCKCHIP_HDMI=y
  1. 命令切换出声设备

bash

运行

amixer cset numid=3 2

四、双显示切换(HDMI + 本地屏)

  1. 仅 HDMI 输出

bash

运行

xrandr --output LCD --off --output HDMI-A-1 --auto
  1. 复制画面

bash

运行

xrandr --output HDMI-A-1 --same-as LCD

五、自定义 EDID 强制适配

  1. 提取显示器 EDID

bash

运行

edid-decode /sys/class/drm/card0-HDMI-A-1/edid > edid.bin
  1. DTS 加载自定义 EDID

dts

&hdmi { edid-fw-name = "rk3566-hdmi.edid"; };

把 edid.bin 放入固件设备树目录

六、编译烧录实操命令

  1. 编译设备树

bash

运行

make dtbs
  1. 替换 boot 分区 dtb 文件
  2. 单独更新启动参数

bash

运行

fw_setenv bootargs '原有参数 video=HDMI-A-1:1920x1080@60' saveenv reboot

七、高频故障速修

  1. 黑屏无识别dmesg | grep hp查看插拔中断,核对 GPIO 引脚定义
  2. 花屏闪屏降低刷新率为 50Hz,修正时序参数
  3. 有声无图关闭 DRM 硬件加速测试:drm_kms_helper.dumb_alloc=0
  4. AndroidHDMI 无画面修改 framework 显示配置,默认显示设备指定 HDMI

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询