java drm_Linux DRM那些事-RockPI DRM

一、DRM基本组件

Linux内核DRM框架包括:GEM和KMS。引用网络图片,展示DRM大体框架:

876ef0924fbb8680539d72562debcdcc.png

1、GEM

GEM(Graphic Execution Manager):图形执行管理器,主要是对 FrameBuffer 的管理,如内存的申请、释放、共享和同步(GPU和CPU之间内存)机制等。

GEM常用的Buffer包括:

1)Dumb Buffer:基于cma api实现,只支持连续物理内存,用于小分辨率简单场景。

2)Prime Buffer:基于dma-buf实现的buffer共享机制,支持连续、非连续物理内存,用于大内存复杂场景。

2、KMS

KMS(Kernel Mode Setting):内核显示模式设置,主要元素:Framebuffer、Plane、CRTC、Encoder、Connector。见下图:

f1e12211be9f633dfa6fb5650e7be727.png

1)Framebuffer:单个图层的显示内容,应用层和内核都可访问。

2)Plane:硬件图层,可实现多层合成显示,连接FB和CRTC。包括:Primary、Overlay和Cursor,驱动中至少实现1个Plane。

3)CRTC:对内存Buffer进行扫描,并转换成LCDC Timing信号。

4)Encoder:将CRTC输出的LCDC Timing时序转换成显示屏所需要的接口时序。

5)Connector:对应显示屏接口(HDMI、MIPI DSI、LVDS等)驱动和输出设备的相关状态信息(EDID、热插拔等)。

RockPI 4 DRM驱动其实就是学习上面各个元素的实现及用法。

二、RockPI 4 DRM驱动文件

RockPI 4单板使用RK3399芯片。

Debian系统内核代码下载地址:https://wiki.radxa.com/Rockpi4/dev/Debian。

RK3399 DRM关注文件:

1、内核文档

路径:Documentation/devicetree/bindings/display/rockchip。

2、驱动代码

路径:drivers/gpu/drm/rockchip,涉及到的文件和实现功能如下:

1)驱动文件

root@ubuntu:/home/run/code/rockchip-bsp/kernel/drivers/gpu/drm/rockchip# ls

analogix_dp-rockchip.c cdn-dp-reg.c       inno_hdmi.c rk3066_hdmi.c             rockchip_drm_backlight.h rockchip_drm_fbdev.c rockchip_drm_gem.h rockchip_drm_vop.h rockchip_vop_reg.c

cdn-dp-core.c           cdn-dp-reg.h       inno_hdmi.h rk3066_hdmi.h             rockchip_drm_drv.c       rockchip_drm_fbdev.h rockchip_drm_tve.c rockchip_lvds.c     rockchip_vop_reg.h

cdn-dp-core.h           dw_hdmi-rockchip.c Kconfig     rk618                     rockchip_drm_drv.h       rockchip_drm_fb.h     rockchip_drm_tve.h rockchip_lvds.h

cdn-dp-link-training.c dw-mipi-dsi.c       Makefile     rockchip_drm_backlight.c rockchip_drm_fb.c         rockchip_drm_gem.c   rockchip_drm_vop.c rockchip_rgb.c

2)实现功能

实现功能

文件名称

Core Driver

rockchip_drm_drv.c

GEM Driver

rockchip_drm_gem.c

Framebuffer Driver

rockchip_drm_fb.c、rockchip_drm_fbdev.c

VOP Driver

rockchip_drm_vop.c、rockchip_vop_reg.c

HDMI Driver

dw_hdmi-rockchip.c

inno HDMI Driver

inno_hdmi.c

LVDS Driver

rockchip_lvds.c

MIPI Driver

dw-mipi-dsi.c

TVE Driver

rockchip_drm_tve.c

eDP Driver

analogix_dp-rockchip.c

DP Driver

cdn-dp-reg.c、cdn-dp-core.c、cdn-dp-link-training.c

RGB Driver

rockchip_rgb.c

Backlight Driver

rockchip_drm_backlight.c

rk618 bridge Driver

rk618/

RK3066 HDMI Driver

rk3066_hdmi.c

注:Core、GEM、FB和VOP驱动是必须的,根据单板连接屏的接口类型选择对应的接口驱动或背光驱动。

目前只有HDMI线和HDMI接口的显示屏,后续只介绍HDMI显示驱动。

参考:

1.rockchip_drm_integration_helper-zh.pdf

2.brezillon-drm-kms.pdf

3.graphics-slides.pd

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值