AI交互之AXI总线架构与DRM overlay

目录

axi总线架构

[DRM Overlay Plane 原理图](#DRM Overlay Plane 原理图)

overlay总体框图

[RK3588 VOP2](#RK3588 VOP2)

视频与UI控制融合


使用各种AI 工具学习或者工作,当时与AI聊天,明白了,然而由于AI给出的答案,不像自己一点点学习的,易忘。因而后续针对性记录搭建完整只是结构。

axi总线架构

下面这个网站链接方便编辑mermaid,导出图片。

BOM Management and PCB | Mermaid Chart

上图中有个不对的地方,但好像直接用mermaid改不了,即方向。

1) 接收写响应。应该从SLAVE 到master

  1. 读数据同样的。

这个图比较直观的展示了AXI的各个信号及协议交互。

下面这章则描述了各个信号的中文名称。

BOM Management and PCB | Mermaid Chart

DRM Overlay Plane 原理图

overlay总体框图

DRM (Direct Rendering Manager) 是 Linux 内核中负责 GPU 显示管理的子系统。Overlay Plane 是 DRM 框架中一种硬件层面的独立显示图层 ,与 Primary Plane(主图层)和 Cursor Plane(光标图层)并列。

简单来说,Overlay 就是显示器硬件本身支持的"画中画"功能------它允许系统同时显示多个独立的图像层,由显示控制器硬件直接合成,而无需 CPU/GPU 参与逐像素混合。

  1. 独立处理:每个 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 Window | Esmart Window |
| **DRM Plane 类型** | `OVERLAY` / `PRIMARY` | `OVERLAY` / `PRIMARY` |
| **AFBC 压缩** | ✅ 支持 | ❌ 不支持 |
| **RGB 格式** | ✅ Linear RGB | ✅ Linear RGB |
| **YUV 格式** | ✅ 仅 AFBC YUV | ✅ Linear YUV (NV12/NV20/NV30) |
| **最大分辨率** | 4K\@60Hz | 4K\@60Hz |
| **典型用途** | 视频播放 (AFBC)、主画面 | UI 层、摄像头预览、普通视频 |

下表第二列有待验证

|------------|----------|-----------|------------------------|
| Video Port | DRM CRTC | 最大输出 | 可连接接口 |
| VP0 | CRTC0 | 4096×2160 | HDMI0 / DP0 / MIPI-DSI |
| VP1 | CRTC1 | 4096×2160 | HDMI1 / DP1 / MIPI-DSI |
| VP2 | CRTC2 | 4096×2160 | eDP / MIPI-DSI |
| VP3 | CRTC3 | 2048×1080 | MIPI-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 通过 BT656,BT1120 可以同时输出 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 Chart

BOM 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 的输出确认

相关推荐
千歌叹尽执夏7 个月前
FPGA:自定义AXI-FIFO主机接口(含versal读写工程)
fpga开发·ddr4·axi总线·versal·自定义fifo
静谧之心1 年前
从“叠加”到“重叠”:Overlay 与 Overlap 双引擎驱动技术性能优化
linux·网络·设计模式·性能优化·golang·overlay·overlap
爱尚你19931 年前
Docker Swarm overlay 和 docker_gwbridge
docker·容器·overlay·docker_gwbridge
ansondroider2 年前
Android GLSurfaceView 覆盖其它控件问题 (RK平台)
android·overlay·glsurfaceview·surfaceview
RedWolf19992 年前
树莓派刷入OpenWrt后扩容overlay的方法
树莓派·overlay·openwrt
骅青2 年前
培训第三十六天(docker应用,mysql容器应用,容器核对时间,容器之间的依赖 域名,文件联合系统,制作基础镜像,commit制作镜像)
mysql·docker·容器·overlay·commit
张一西2 年前
ARM学习(31)编译器对overlay方式的支持
arm开发·编译器·overlay·动态加载·bank·armcc·armclang
-风中叮铃-2 年前
华为DCN网络之:EVPN
网络·华为·overlay·vxlan·evpn·大二层
神仙约架2 年前
【FPGA】arm数据总线和axi数据总线有什么异同点?
arm开发·fpga开发·axi总线·arm总线