news 2026/9/15 9:03:34

RK3568

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RK3568

rk3568相关设备树

显示屏

rk3568的crtc

VOP是RK 系列的显示硬件IP也就是lcd控制器,对应的软件抽象叫crtc;
stm32mp1对应的是ltdc;
VOP有两个版本,VOP1和VOP2不同版本对应其对多显的支持方式不同;

VOP1:

VOP2:

RK3568数据手册说明使用的是VOP2

显示子系统

由于drm的独立驱动较多,并不是同时probe但彼此又存在依赖关系,而由-EPROBE_DEFER管理比较麻烦;于是使用component将其统一管理:等到需要的component的驱动都已经probe就会调用component提供的bind;

设备树display_subsystem对应的驱动为rockchip_drm_drv.c,probe使用component_master_add_with_match创建component_master

rockchip_drm_platform_of_probe会解析ports节点然后找到port对应的节点解析iommus,记录是否支持mmu
rockchip_drm_match_add就是将需要的子驱动加入match

记录drm框架需要哪些子驱动

当记录的这些驱动已经probe+component_add后便会执行component_master提供的rockchip_drm_ops.bind():创建drm_device并初始化drm_mode_config(用来记录drm下有关的子设备),其中mode_config.funcs.atomic_commit是用来设置子设备的参数;然后调用各个驱动的component.bind;之后根据设备树中的route判断当前板子要使用哪条显示输出路径,然后根据这条 route 找到对应的 VOP/VP、Encoder、Connector 等 DRM 资源,并把它们组织成一条可以工作的 DRM 显示链路

选择显示链路

设备树中初始使用的是LCD_TYPE_HDMI_VP0,使用MIPI的话要用LCD_TYPE_MIPI

VOP设备树对应驱动rockchip_vop2_reg.c,probe会根据compatible获取plane/window相关属性(plane表示图片如何显示,window表示使用哪个硬件去读取),

rockchip_drm_vop2.c其中的component.bind会负责根据win获取创建plane的资源描述,

并给每个vp都创建一个crtc和与其绑定独有的primary plane,其余覆盖的win也创建plane并连接所有crtc

dsi的bind会创建encoder,类型为dsi,并通过remote-point查找encoder可以连接的crtc,之后将panel直接和connector连接,connector和encoder连接

屏幕使用的是panel-simple.c

摄像头

IMX415

创建I2C_driver框架

struct v4l2_subdev_ops提供对不同设备的操作方式
v4l2_subdev_ops.v4l2_subdev_video_ops提供对子设备操作的接口

Probe 函数中,首先对 dts 进行解析,获取 regulator, gpio, clk 等信息用以对 sensor 上下电。其次注册 media entity, v4l2 subdev, 及 v4l2 controller 信息。注意到 v4l2 subdev 的注册是异步。如下几个关键的函数调用。

  • v4l2_i2c_subdev_init (), 注册为一个 v4l2 subdev,参数中提供回调函数
  • imx415_initialize_controls (),初始化 v4l2 controls
  • media_entity_init (),注册成为一个 media entity,imx415 仅有一个输出,即 Source Pad

Pad

  • v4l2_async_register_subdev (),声明 sensor 需要异步注册。因为 RKISP1 及 CIF 都采用异步注册 sub device,所以这个调用是必须的

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 9:02:34

Linux poll内核实现与驱动开发:从select到epoll的演进

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/15 8:53:48

【Shell 知识速查表】

Shell 知识速查表一、引号与空格二、符号与括号三、重定向操作符四、特殊变量速查五、变量展开(Parameter Expansion)六、sed / grep 正则表达式元字符七、POSIX 字符组八、输出命令:echo 与 printfecho 常用printf 常用九、Linux 常用进程信…

作者头像 李华
网站建设 2026/9/15 8:48:41

什么时候不需要MCP

问题 经常看到招聘 JD 上写着 MCP,似乎每个人都要会 MCP 才能做 agent 开发又有人说 MCP 太重了,没什么人用 MCP我们又会看到很多教程说,使用 MCP 统一接口很好用 我们平时看到的教程都是介绍 MCP 是什么,为什么要用 MCP。说了很多…

作者头像 李华