0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深入解析 RK 平台显示驱动:格式支持、处理流程与实现原理

jf_44130326 来源:Linux1024 作者:Linux1024 2025-12-02 07:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式领域,显示驱动是连接硬件与视觉体验的核心桥梁。瑞芯微Rockchip)平台的显示驱动以其兼容性强、适配场景广著称,广泛应用于智能终端、物联网设备等领域。本文将从支持的显示格式、驱动处理流程、核心实现原理三个维度,带您深入了解RK平台显示驱动的工作机制。

wKgZPGkuIXWAeuzcAACl0RBSuDk715.png

一、RK显示驱动支持的显示格式

RK平台显示驱动对多种像素格式和总线格式提供了完善支持,覆盖从低带宽到高画质的各类场景,主要包括以下两类:

1.像素格式(BPP

像素格式决定了每个像素的颜色深度,RK驱动支持的主流格式如下:

16bppRGB565(每个像素占2字节,红5位、绿6位、蓝5位),适用于低功耗场景。

24bppRGB888(每个像素占3字节,红、绿、蓝各8位),提供基础高清色彩。

32bppARGB8888(每个像素占4字节,包含8位透明度通道),支持半透明叠加,常用于UI图层显示。

代码中通过display_logo函数明确区分了这三种格式的处理逻辑,例如:

switch (logo->bpp) {case16:  crtc_state->format= ROCKCHIP_FMT_RGB565; break;case24:  crtc_state->format= ROCKCHIP_FMT_RGB888; break;case32:  crtc_state->format= ROCKCHIP_FMT_ARGB8888; break;}

2.媒体总线格式

总线格式定义了像素数据在硬件接口上的传输方式,RK驱动通过rockchip_drm_get_cycles_per_pixel函数支持多种总线格式,核心包括:

单通道并行:如RGB565_1X1616位单通道)、RGB888_1X2424位单通道)。

多通道并行:如RGB888_3X83通道各8位)、RGB888_DUMMY_4X84通道含无效位)。

差分信号:支持MIPI-DSILVDS等高速接口的总线格式(通过rockchip_get_output_if_name函数可见对MIPI0/1LVDS0/1的支持)。

这些格式的适配确保了驱动能与LCDHDMIeDP等不同类型的显示设备通信

二、显示驱动的核心处理流程

RK显示驱动的工作流程可分为初始化显示输出两大阶段,每个阶段包含多个关键步骤,以下是详细解析:

阶段1:驱动初始化(从设备启动到准备显示)

初始化阶段的目标是完成硬件资源配置、时序参数获取和显示链路准备,流程如下:

1.设备树(DTS)解析

驱动通过display_get_timing_from_dts函数从设备树中读取显示时序参数(如分辨率、刷新率、同步信号极性),例如:

水平参数:hactive(有效宽度)、hfront_porch(前廊)、hsync_len(同步长度)。

垂直参数:vactive(有效高度)、vback_porch(后廊)、vsync_len(同步长度)。

若设备树未定义,则使用默认时序(如720p60)。

1.PHY连接器初始化

对于HDMITVE等接口,通过check_public_use_phy识别公共PHY类型(如INNO_HDMI_PHY),并调用get_public_phy完成PHY初始化。

连接器(connector)通过rockchip_connector_pre_initrockchip_connector_init完成硬件引脚、信号极性配置。

1.显示模式验证与修正

display_mode_valid检查当前模式是否符合CRTC(显示控制器)和连接器的硬件能力(如最大分辨率、帧率)。

display_mode_fixup对模式进行微调(如调整时序以匹配硬件限制)。

1.内存缓冲区分配

通过init_display_bufferget_display_buffer分配显示缓存(如帧缓冲区、LUT查找表),确保内存地址对齐(align_size = PAGE_SIZE)。

阶段2:显示输出(从图像加载到屏幕显示)

当初始化完成后,驱动进入显示输出阶段,核心流程如下:

1.图像加载与处理

加载BMP图像:通过load_bmp_logo读取图像文件,支持从资源分区加载,并缓存到logo_cache_list避免重复加载。

格式转换:若图像格式不直接支持(如低于16bpp),则通过bmpdecoder转换为16/32bpp

旋转处理:rockchip_logo_rotate支持90°/180°/270°旋转,通过内存拷贝重排像素数据。

1.平面(Plane)配置

display_set_plane配置CRTC的显示平面,包括:

源区域(src_rect):图像的显示范围(如部分缩放)。

目标区域(crtc_rect):屏幕上的显示位置(如居中、全屏)。

数据地址:帧缓冲区的物理地址(dma_addr)。

1.显示使能

display_enable触发CRTC和连接器的使能:

CRTC:通过crtc_funcs->enable启动时序发生器,输出同步信号。

连接器/面板:通过rockchip_connector_enable打开背光、初始化面板。

最终图像通过MIPI/LVDS/HDMI等接口传输到显示设备,完成显示。

三、显示驱动的实现原理:核心模块与交互

RK显示驱动基于DRMDirect Rendering Manager)框架设计,通过多个核心模块协同工作,关键模块如下:

1.核心数据结构

display_state:全局状态结构体,包含CRTC状态(crtc_state)、连接器状态(conn_state)、图像信息(logo)等,是驱动流程的核心载体。

rockchip_crtcCRTC(显示控制器)结构体,封装了硬件寄存器操作函数(crtc_funcs),负责时序生成和数据传输。

rockchip_connector:连接器结构体,管理物理接口(如HDMIMIPI),包含EDID读取、热插拔检测等功能。

rockchip_panel:面板驱动结构体,适配具体的LCD/OLED面板,提供初始化、时序配置接口。

2.模块交互逻辑

CRTC与连接器CRTC生成的像素数据通过连接器传输到显示设备,display_state作为中间载体传递时序和格式信息。

PHY与接口PHY(如HDMI PHY)负责信号电平转换,连接器通过connector_phy_init绑定PHY驱动,确保高速信号传输质量。

内存管理:显示缓存通过get_display_buffer从预分配的内存池(MEMORY_POOL_SIZE)中分配,避免动态内存碎片。

3.流程图:RK显示驱动工作流程

wKgZPGkuIXWAdprgAAJG38797c0976.png

四、总结

RK平台显示驱动通过灵活的格式支持、模块化的流程设计和完善的硬件适配,实现了对多类型显示设备的高效驱动。其核心优势在于:

1.兼容性:支持RGBMIPIHDMI等多接口,覆盖从低功耗到高清场景。

2.可扩展性:通过设备树和模块化设计,便于适配新面板和硬件平台。

3.性能优化:通过缓存管理、时序优化确保图像显示流畅。

对于开发者而言,理解驱动的格式支持和流程设计,有助于快速定位显示问题(如分辨率异常、花屏),并根据需求定制显示功能(如多图层叠加、动态分辨率切换)。


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示驱动
    +关注

    关注

    1

    文章

    80

    浏览量

    15606
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度解析 RK 平台 U-Boot 环境变量(env):原理、配置与实战

    定制化设计。本文将从通用概念、RK 平台特殊处理、工作流程、调试方法等维度,全面拆解 RK 平台
    的头像 发表于 04-27 07:11 635次阅读
    深度<b class='flag-5'>解析</b> <b class='flag-5'>RK</b> <b class='flag-5'>平台</b> U-Boot 环境变量(env):原理、配置与实战

    深入解析U-Boot image.c:RK平台镜像处理核心逻辑

    在瑞芯微(RK平台的嵌入式开发中,U-Boot作为核心的启动加载程序,负责完成镜像解析、校验、加载等关键流程。而image.c正是U-Boot中
    的头像 发表于 02-24 16:46 1932次阅读
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b>U-Boot image.c:<b class='flag-5'>RK</b><b class='flag-5'>平台</b>镜像<b class='flag-5'>处理</b>核心逻辑

    RK平台新声卡添加与驱动调试指南

    在瑞芯微(RK平台的嵌入式系统开发中,音频功能的实现核心依赖于 Sound Card(声卡)的正确配置与驱动调试。
    的头像 发表于 02-09 16:42 1137次阅读
    <b class='flag-5'>RK</b><b class='flag-5'>平台</b>新声卡添加与<b class='flag-5'>驱动</b>调试指南

    RK817/RK809音频Codec停止播放杂音问题:内核驱动修复与技术解析

    在嵌入式音频开发领域,Codec(编解码器) 是实现音频输入输出的核心组件。近期,基于 Rockchip 平台的开发者反馈了一个典型问题:RK817/RK809 Codec 在停止播放
    的头像 发表于 02-09 16:32 459次阅读
    <b class='flag-5'>RK</b>817/<b class='flag-5'>RK</b>809音频Codec停止播放杂音问题:内核<b class='flag-5'>驱动</b>修复与技术<b class='flag-5'>解析</b>

    RK806中断处理流程深度解析:从架构到调试实战

    RK806 作为瑞芯微主流 PMIC(电源管理芯片),其中断机制是实现“电源键响应、电压异常保护、休眠唤醒、 watchdog 超时处理” 等核心功能的基础。Linux 驱动基于reg
    的头像 发表于 02-05 13:46 2878次阅读
    <b class='flag-5'>RK</b>806中断<b class='flag-5'>处理</b><b class='flag-5'>流程</b>深度<b class='flag-5'>解析</b>:从架构到调试实战

    RK平台UART开发!从驱动配置到测试全流程

    完善的 UART 开发支持,本文将结合官方开发指南,从功能特点、驱动配置、测试验证三个维度,带大家快速掌握 RK 平台 UART 开发技巧,文末还附上知识脑图方便梳理思路~
    的头像 发表于 02-04 17:44 2260次阅读
    <b class='flag-5'>RK</b><b class='flag-5'>平台</b>UART开发!从<b class='flag-5'>驱动</b>配置到测试全<b class='flag-5'>流程</b>

    RK平台Linux IOMMU开发:从原理到实战

    显示(VOP)、编解码(VPU/HEVC)等场景。今天就从原理、驱动、实战、问题排查、Linux 内存管理支撑五个维度,带大家快速上手 RK 平台 IOMMU 开发。
    的头像 发表于 02-04 16:24 3373次阅读
    <b class='flag-5'>RK</b><b class='flag-5'>平台</b>Linux IOMMU开发:从原理到实战

    深入解析RK平台GPIO驱动:从原理到调试,开发者必看指南

    平台上,GPIO 驱动实现直接影响着硬件交互的稳定性与效率。本文将带你深入剖析 RK 平台
    的头像 发表于 02-03 15:53 1398次阅读
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b><b class='flag-5'>RK</b><b class='flag-5'>平台</b>GPIO<b class='flag-5'>驱动</b>:从原理到调试,开发者必看指南

    RK 平台 SPI 开发完全指南(驱动 + 配置 + 测试 + 优化)

    ,全方位拆解 RK 平台 SPI 开发流程。 一、 RK 平台 SPI 核心特性速览     1.  基础
    的头像 发表于 01-30 22:35 1417次阅读
    <b class='flag-5'>RK</b> <b class='flag-5'>平台</b> SPI 开发完全指南(<b class='flag-5'>驱动</b> + 配置 + 测试 + 优化)

    YOLO5目标检测方案-基于米尔RK3576开发板

    ,VPU) 摄像头:500万像素USB摄像头(支持MJPEG/YUYV格式显示器:4K HDMI显示屏(通过Weston桌面环境显示
    发表于 01-22 19:21

    RK3506 MIPI转HDMI显示开发实战:从硬件到驱动解析

    接芯片,可完美实现信号转换。 本文将从硬件选型、驱动流程、核心机制三个维度,详细拆解RK3506平台MIPI转HDMI的开发全过程,尤其聚焦
    的头像 发表于 01-06 07:09 1338次阅读
    <b class='flag-5'>RK</b>3506 MIPI转HDMI<b class='flag-5'>显示</b>开发实战:从硬件到<b class='flag-5'>驱动</b>全<b class='flag-5'>解析</b>

    RK3588 平台 MPP 编译 + VPU 格式测试

    、视频处理接口,支持  H.264/H.265/VP9  等主流格式,是  RK  平台音视频开发的核心依赖库。     二、 MPP  编
    的头像 发表于 12-25 11:33 2587次阅读
    <b class='flag-5'>RK</b>3588 <b class='flag-5'>平台</b> MPP 编译 + VPU <b class='flag-5'>格式</b>测试

    基于米尔RK3576的环视实时性方案解析

    、Mali-G52 GPU及高达6TOPS算力的NPU。本文旨在通过实际测试数据,从功能实现、实时性能与AI拓展潜力三大核心维度,为客户提供一份关于该平台在360环视应用中能力的真实参考。 二、系统流程
    发表于 11-28 16:57

    RK3576驱动高端显控系统升级:多屏拼控与AI视觉融合解决方案

    。 八路高清视频输入:支持 8 路 1080P 摄像头信号采集,轻松实现多画面拼接、AI 识别、视频分析等复合任务。 AI 与视频并行处理:NPU 与 GPU 协同工作,即便在多画面播放与 AI 推理
    发表于 11-21 17:51

    RK3128 Android 7.1 进入深度休眠流程分析

    RK3128 Android 7.1 进入深度休眠流程分析RK3128是瑞芯微电子推出的一款低功耗四核Cortex-A7处理器,运行Android 7.1系统时进入深度休眠(Deep
    发表于 07-22 10:45