AI交互之AXI总线架构与DRM overlay
目录axi总线架构DRM Overlay Plane 原理图overlay总体框图RK3588 VOP2视频与UI控制融合使用各种AI 工具学习或者工作当时与AI聊天明白了然而由于AI给出的答案不像自己一点点学习的易忘。因而后续针对性记录搭建完整只是结构。axi总线架构下面这个网站链接方便编辑mermaid导出图片。BOM Management and PCB | Mermaid Chart上图中有个不对的地方但好像直接用mermaid改不了即方向。1 接收写响应。应该从SLAVE 到master2) 读数据同样的。这个图比较直观的展示了AXI的各个信号及协议交互。下面这章则描述了各个信号的中文名称。BOM Management and PCB | Mermaid ChartDRM Overlay Plane 原理图overlay总体框图DRM (Direct Rendering Manager) 是 Linux 内核中负责 GPU 显示管理的子系统。Overlay Plane 是 DRM 框架中一种硬件层面的独立显示图层与 Primary Plane主图层和 Cursor Plane光标图层并列。简单来说Overlay 就是显示器硬件本身支持的画中画功能——它允许系统同时显示多个独立的图像层由显示控制器硬件直接合成而无需 CPU/GPU 参与逐像素混合。独立处理每个 Overlay Plane 可以独立进行缩放、裁剪、旋转、颜色空间转换如 YUV→RGB。RK3588 VOP2[v4] Add VOP2 support on rk3588 | Patchew\Linux\Common\DISPLAY\Rockchip_VOP2_Plane_Assign.pdf上面AI生成的图还是挺可靠的下面是官方文档里面的图。每个硬件 Window 在 DRM 子系统中注册为一个独立的 Plane硬件 Window (8个) DRM Plane (8个) ├─ Cluster Win0 ───────→ DRM_PLANE_TYPE_OVERLAY (或 PRIMARY) ├─ Cluster Win1 ───────→ DRM_PLANE_TYPE_OVERLAY ├─ Cluster Win2 ───────→ DRM_PLANE_TYPE_OVERLAY ├─ Cluster Win3 ───────→ DRM_PLANE_TYPE_OVERLAY ├─ Esmart Win0 ───────→ DRM_PLANE_TYPE_OVERLAY (或 PRIMARY) ├─ Esmart Win1 ───────→ DRM_PLANE_TYPE_OVERLAY ├─ Esmart Win2 ───────→ DRM_PLANE_TYPE_OVERLAY └─ Esmart Win3 ───────→ DRM_PLANE_TYPE_OVERLAY特性Cluster WindowEsmart Window**DRM Plane 类型**OVERLAY / PRIMARYOVERLAY / PRIMARY**AFBC 压缩**✅ 支持❌ 不支持**RGB 格式**✅ Linear RGB✅ Linear RGB**YUV 格式**✅ 仅 AFBC YUV✅ Linear YUV (NV12/NV20/NV30)**最大分辨率**4K\60Hz4K\60Hz**典型用途**视频播放 (AFBC)、主画面UI 层、摄像头预览、普通视频下表第二列有待验证Video PortDRM CRTC最大输出可连接接口VP0CRTC04096×2160HDMI0 / DP0 / MIPI-DSIVP1CRTC14096×2160HDMI1 / DP1 / MIPI-DSIVP2CRTC24096×2160eDP / MIPI-DSIVP3CRTC32048×1080MIPI-DSI / RGB视频与UI控制融合显⽰通路再次浏览这个图。在代码部分分配的framebuffer实际可以不止一个存在多个每个对应一个plane。在旧有的知识结构中可能以为每个显示接口只能一个framebuffer而通过上面几章的介绍可以明确了解plane的在这方面的应用。DRM 驱动Ä libdrm 的交互过程下图清晰两个事情1 DRM的独占性。2概念与硬件的关联。例如CRTC对应3588的VOP组件plane对应3588 内部的cluster等而encoder和connector则对应具体的显示接口。分辨率支持方案设计与设备选项时关注上限支持情况。RK3588 平台有四路独⽴的 Video Port, 所以在最基础的条件下RK3568 和 RK3588 可以分别实现 3 路和 4 路独⽴的显⽰输出。多屏显⽰Connector-mirror如图所⽰在 RK3588 上通过 connector-mirror 技术把两路 HDMI/eDP 连接在 VP0 上把两路 DP 连接在 VP1 上把两路 MIPI DSI连接在 VP2 上VP3 通过 BT656BT1120 可以同时输出 7 路四组独⽴的显⽰输出其中每⼀组同⼀个 VIdeo Port 上的两个显⽰接口输出的显⽰时序相同且显⽰内容相同Connector-split可以让⼀路 Video Port 输出按照⽔平⽅向平分成左右两路同时驱动两个显⽰接口显⽰时序相同内容独⽴的画⾯。如果在 VP0 上开启 split 模式则 VP0 的输出可以同时驱动两个显⽰接口(HDMI0/1、eDP0/1 或者其他能与 VP0 连接的显⽰接口)两个显⽰接口上显⽰的内容为 VP0 输出的内容⽔平⽅向左右平分⽐如VP0 以 3840x1080 的分辨率输出则两个显⽰接口各显⽰ 1920x1080 的输出。需要注意的是每⼀个 VP 上参与 split 输出的两个显⽰接口输出的时序帧率必须相同。假设用此种显示方法提问AI 1现在有两个4K的显示器如何设置 请给出mermaid图从plane VOP 到显示的图。不用太多文字。2把视频和UI 图层用两个plane画。 图的方向plane在左 HDMI在右侧而非这种上下模式。AI 给出图示BOM Management and PCB | Mermaid ChartBOM Management and PCB | Mermaid Chart这种显⽰特性可以通过 dts 开关dts 只要把参与 split 的两个显⽰接口挂接在同⼀个 VP 上且打开左边显⽰接口的 split-mode 属性。⽐如 按照如下配置打开 hdmi0 和 hdmi1 在 VP0 上的 split 功能hdmi0 { status okay; }; hdmi1 { status okay; split-mode //左右咋区分的 }; hdmi0_in_vp0 { status okay; }; hdmi1_in_vp0 { status okay; }; hdmi0_in_vp1 { status disabled; }; hdmi0_in_vp2 { status disabled; }; hdmi1_in_vp1 { status disabled; }; hdmi1_in_vp2 { status disabled; };每个Video Port 上进⾏ split 的两个显⽰接口只会向 drm 系统注册⼀个 encoder 和 connector所以在⽤⼾空间每⼀ CRTC(Video Port) 上只会看到⼀个 connector 设备这个信息可以通过 modetest 的输出确认