RK356x U-Boot研究所(驱动篇)4.2.2 DRM代码结构分析

本文深入探讨了RK356x平台U-Boot中DRM(Direct Rendering Manager)的代码结构,分析了libdrm库在驱动和用户层之间的沟通作用,以及DRM中的crtc、plane和connector概念。文章提到,DRM的legacy API和atomic API在多图层显示、同步和效率方面的不同,并指出原子提交(atomic commit)如何解决帧率限制问题。此外,还介绍了U-Boot对RGB、LVDS、MIPI、EDP和HDMI等显示接口的支持,以及logo图片的加载和配置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谈到 drm 就涉及到 libdrm 库,它是一个跨驱动的中间件,它允许用户空间应用(例如作为Mesa和2D驱动程序)通过DRI与内核通信协议。

如下DRM结构图:

在这里插入图片描述

libdrm 是DRM下沟通驱动和用户层的库。过去APP可能是使用open(framebuff)这样的方式来和图形驱动沟通,但是在现在的硬件演化下,已经不适应新的场景。

原因如下:

  • 有多个图层怎么办?
  • 有多个屏幕怎么办?
  • 怎么处理vsync的问题,怎么同步不撕裂?
  • 怎么利用上dmabuf,做到memory zero-copy?

libdrm 的存在就是用来方便用户层和驱动这些问题,提供API给X11, Wayland这样的display backend使用。

DRM里有crtc,plane,connector这三个概念,可以这么理解:

  • connector就是屏幕,比如一个HDMI一个connector num, 一个DSI一个connector num。
  • crtc表示vop, 一个屏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式逍遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值