RK3399与MIPI DSI之间在DRM架构下的联结关系

本文详细介绍了在DRM架构中,如何在软件层面建立RK3399开发板上的MIPI DSI显示屏与硬件的联结关系。通过设备树静态定义CRTC和ENCODER的拓扑,然后在驱动代码中解析设备树以实现它们的实际关联。CRTC在注册时与ENCODER建立联系,而ENCODER在初始化时查找对应的CRTC,形成完整的显示链路。

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

开启图显旅途的第一步,就是将MIPI显示屏连接到RK3399开发板,像下面这样:

二者在硬件上实实在在的通过排线连接到了一起,那么在软件世界中是什么样子呢?通过本文的介绍,便可以揭开它神秘的面纱

首先,在DRM架构下,将图显控制器VOP的时序控制部分抽象为CRTC,将MIPI DSI的控制器部分抽象为ENCODER
如下图所示:

其次,在DRM框架下,CRTCENCODER独立注册、统一绑定,二者也同样存在着某种连接关系。

关于CRTC与ENCODER相关的知识,已经在前文进行了介绍,请查看如下链接:

### RK3399 Linux MIPI DSI配置和驱动 #### 设备树节点配置 对于RK3399平台,MIPI DSI接口通过设备树中的特定节点来描述。具体来说,存在两个DSI控制器实例: - `dsi@ff960000` 和 `dsi1: dsi@ff968000` 分别对应着两路不同的MIPI DSI通道[^1]。 这些节点包含了必要的属性用于识别兼容性和寄存器基地址等信息。例如,第一个DSI控制器的定义如下所示: ```dts dsi: dsi@ff960000 { compatible = "rockchip,rk3399-mipi-dsi"; reg = <0x0 0xff960000 0x0 0x8000>; } ``` 第二个DSI控制器则有类似的设置,只是基地址不同而已。 #### DRM框架集成 为了使能显示功能并支持多种类型的显示器连接(如LCD面板),Rockchip SoC采用了Direct Rendering Manager (DRM) 架构作为图形子系统的管理方式之一。在此上下文中,`dw_mipi_dsi_register()` 函数扮演重要角色,它负责注册MIPI DSI设备到DRM核心中去。此过程涉及传递给该函数的对象包括但不限于`struct drm_device *dev` 和 `struct dw_mipi_dsi *dsi` 参数[^3]。 #### 初始化时序控制 当涉及到实际硬件操作时,特别是针对某些外部显示屏模块而言,可能还需要遵循一定的电源管理和信号线状态切换顺序来进行初始化工作。比如,在U-Boot阶段就可能会执行一段代码用来确保复位引脚按照规定的时序被触发——先置高电平一段时间后再拉低超过10微秒,之后再次回到高电平不超过120毫秒的时间窗口内完成整个流程[^4]。 #### 驱动程序开发要点 编写适用于RK3399平台上运行的操作系统级别的MIPI DSI驱动通常意味着要处理好以下几个方面的工作: - **解析DTB**: 解析来自设备树的数据结构以获取关于物理资源分配的信息; - **配置PHY层参数**: 设置传输速率、数据格式以及其他通信特性; - **建立上层软件栈之间的桥梁**: 如前所述利用DRM API实现图像渲染路径上的衔接; - **适配具体的屏库需求**: 如果目标应用中有特殊的帧缓冲区更新机制或者其他定制化的要求,则需相应调整底层逻辑加以满足。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Linux与SoC

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

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

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

打赏作者

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

抵扣说明:

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

余额充值