
清空记录
历史记录
取消
清空记录
历史记录

上篇我们讲完了硬件原理、MIPI DSI基础和设备树配置——相当于把"地基"打好了。但点屏,还要靠驱动代码和系统配置。本篇(下)开始上手实操:Panel与DSI Host控制器驱动怎么工作、Android14如何指定主屏、不同面板如何快速移植,以及一份拿来即用的调试排错清单。建议搭配上篇一起看,效果更佳,上篇点此跳转。
6.Panel驱动分析
本开发板默认使用通用DSI面板驱动,无需新增内核驱动文件,全部参数从设备树读取。
1.驱动匹配compatible字符串:simple-panel-dsi
2.加载流程:probe→解析DTS时序、复位、背光、初始化序列→绑定DSI主机
3.上电时序流程:
当面板存在以下需求时,需独立编写panel-xxx.c驱动:
1.大量厂商私有初始化指令、Gamma电压、VCOM调节
2.特殊上电/掉电时序、TE信号控制
3.动态调节屏幕参数、硬件特殊功能
示例:ST7703屏幕驱动,内置解锁厂商寄存器、MIPI通道配置、Gamma曲线自定义代码。
7.DSIHost控制器驱动
RK3576搭载DSI2 IP核,驱动匹配字符串rockchip,rk3576-mipi-dsi2,核心工作流程:
1.Probe获取时钟、复位、PHY、电源域资源
2.初始化DRM Encoder、Connector、注册MIPI DSI主机
3.原子校验模式:计算lane速率、校验时序合法性
4.使能流程:软复位IP→配置PHY通道→设置视频Burst模式→初始化D-PHY→下发时序参数→调用panel驱动prepare/enable
RK3576 CSI摄像头与DSI共用一组D-PHY,DTS必须同步启用mipidcphy0,DSI节点通过phys字段绑定PHY。
DSI单通道速率=像素时钟×每像素位数÷(2×通道数)
本项目:150MHz×24÷(2×4)=450Mbps/lane
RK3576 D-PHY单通道最高支持2.5Gbps,带宽余量充足。
8、Android14显示配置
产品变体 | DTS文件 | 主屏 | 扩展屏 |
rk3576(默认) | ido-evb7609-v1a-hdmi | HDMI | 无 |
rk3576_u | ido-evb7609-v1a-mipi | DSI | HDMI-A、eDP |
rk3576_u核心配置:
BoardConfig.mk:指定MIPI内核DTS
PRODUCT_KERNEL_DTS := ido-evb7609-v1a-mipi
产品属性配置:指定DSI为主显示设备
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSIPRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.extend=HDMI-A,eDP
drmhwc2读取系统属性区分主屏/副屏,DRM连接器类型匹配规则:
•DSI:DRM_MODE_CONNECTOR_DSI
•HDMI:DRM_MODE_CONNECTOR_HDMIA
应用层→SurfaceFlinger→ HWC HAL →DRM内核驱动→DSI主机→D-PHY→ LCD屏
图形缓冲区通过DMA-BUF实现跨进程共享。
9、不同面板移植方法
分辨率、像素时钟、DSI通道数、RGB格式、视频模式、全套时序、物理尺寸、DCS初始化序列、复位/背光参数、供电电压。
1.硬件核对:DSI通道、复位/背光GPIO、触摸I2C
2.获取厂商初始化DCS指令与时序参数
3.方案选择:标准屏用simple-panel-dsi;复杂屏写专用驱动
4.修改DTS,替换时序、指令、GPIO、背光配置
5.配置内核开机logo、Android开机动画、HWC主屏属性
6.内核日志、modetest调试验证显示、背光、触摸
仅修改DTS,无需修改内核代码,适合标准DCS屏幕,替换时序、初始化序列、GPIO即可。
新建panel-xxx.c驱动文件,实现prepare/enable/disable/unprepare回调,自定义上电时序、厂商私有指令,同步修改Kconfig开启驱动编译。
1.速率异常:添加rockchip,lane-rate=
2.屏幕不支持非连续时钟:移除MIPI_DSI_CLOCK_NON_CONTINUOUS
3.初始化延时严格遵循规格书,过短会黑屏/花屏
4.区分屏幕VCC 3.3V与IOVCC 1.8V两路电源
5.老款屏幕不兼容Burst模式,切换为Sync Pulse模式
10、调试与问题排查
# DSI/MIPI/面板日志dmesg | grep -i dsidmesg | grep -i mipidmesg | grep -i panel# DRM/PHY初始化日志dmesg | grep -i drmdmesg | grep -i dcphy
正常启动日志关键词:DSI host probed、panel ready、DSI connected to VP1
# 查看DRM设备ls /dev/dri/# 查看连接器与分辨率modetest -c# 输出测试画面到DSI屏幕modetest -M rockchip -D 0 -s 409:1200x1920 -v
故障1:屏幕完全无反应
排查链路:DTS编译校验→测量面板供电电压→示波器抓取复位波形→背光PWM输出检测→MIPI差分信号阻抗与波形检测。
故障2:画面闪烁、错位、花屏
1.核对面板规格书时序参数(HBP/HFP/VBP/VFP、同步极性)
2.调整lane速率,强制指定rockchip,lane-rate
3.切换Burst/Sync Pulse视频模式
4.增加/移除EOT包标志位MIPI_DSI_MODE_NO_EOT_PACKET
故障3:触摸屏无响应
1.i2cdetect扫描I2C总线,确认GT911设备挂载
2.查看中断注册日志,确认中断引脚电平匹配原理图
3.检查触摸复位时序,必须在屏幕初始化完成后释放触摸复位
故障4:Android系统黑屏,内核logo正常
1.dmesg确认DRM驱动完整初始化
2.getprop核对vendor.hwc.device.primary=DSI
3.dumpsys SurfaceFlinger查看图层合成状态
4.modetest手动输出画面,区分内核/安卓上层问题
# DRM基础CONFIG_DRM=yCONFIG_DRM_ROCKCHIP=y# VOP显示处理器CONFIG_ROCKCHIP_VOP2=y# DSI主机驱动CONFIG_ROCKCHIP_DW_MIPI_DSI=y# MIPI D-PHYCONFIG_PHY_ROCKCHIP_SAMSUNG_DCPHY=y# 通用面板驱动CONFIG_DRM_PANEL_SIMPLE=y# PWM背光CONFIG_PWM_ROCKCHIP=yCONFIG_BACKLIGHT_PWM=yCONFIG_BACKLIGHT_CLASS_DEVICE=y
11、附录
文件类型 | 完整路径 |
MIPI DTS入口 | kernel-6.1/arch/arm64/boot/dts/rockchip/ido-evb7609-v1a-mipi.dts |
面板配置DTSI | kernel-6.1/arch/arm64/boot/dts/rockchip/ido-evb7609-v1a-mipi.dtsi |
RK3576底层DTSI | kernel-6.1/arch/arm64/boot/dts/rockchip/rk3576.dtsi |
DSI2控制器驱动 | kernel-6.1/drivers/gpu/drm/rockchip/dw-mipi-dsi2-rockchip.c |
通用面板驱动 | kernel-6.1/drivers/gpu/drm/panel/panel-simple.c |
VOP2驱动 | kernel-6.1/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c |
Android BoardConfig | device/rockchip/rk3576/BoardConfig.mk |
MIPI绑定头文件 | kernel-6.1/include/dt-bindings/display/drm_mipi_dsi.h |
指令码 | 功能 |
0x11 | Sleep Out 退出睡眠 |
0x10 | Sleep In 进入睡眠 |
0x28 | Display Off 关闭画面输出 |
0x29 | Display On 点亮屏幕 |
0x36 | Set Address Mode 横竖屏翻转 |
0x3A | Set Pixel Format 设置像素格式 |
#define MIPI_DSI_MODE_VIDEO (1 << 0) // 视频模式#define MIPI_DSI_MODE_VIDEO_BURST (1 << 1) // 突发传输#define MIPI_DSI_MODE_VIDEO_SYNC_PULSE (1 << 2) // 同步脉冲模式#define MIPI_DSI_MODE_NO_EOT_PACKET (1 << 9) // 关闭EOT结束包#define MIPI_DSI_CLOCK_NON_CONTINUOUS (1 << 10) // 非连续时钟#define MIPI_DSI_MODE_LPM (1 << 11) // 低功耗下发指令// 像素格式#define MIPI_DSI_FMT_RGB888 0#define MIPI_DSI_FMT_RGB666 1#define MIPI_DSI_FMT_RGB666_PACKED 2#define MIPI_DSI_FMT_RGB565 3
全部存放于源码RKDocs/common/display/目录,如需资料可关注触觉智能公众号,回复“联系客服”获取:
1.Rockchip_Developer_Guide_MIPI_DSI2_CN.pdf(DSI2开发必读)
2.Rockchip_Developer_Guide_DRM_Panel_Porting_CN.pdf(面板移植指南)
3.Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf(DRM总架构)
4.Rockchip_RK3588_Developer_Guide_MIPI_DSI2_CN.pdf(架构与RK3576通用)
5.Rockchip_Trouble_Shooting_Graphics/ 图形系统故障排查手册
产品简介
