RK3568 buildroot文件系统下的三屏显示

news/2025/1/17 6:16:59/

启扬智能IAC-RK3568-Kit开发板基于瑞芯微RK3568四核Cortex-A55处理器,支持HDMI、LVDS、MIPI、EDP四种显示接口,能够实现三屏同显,三屏异显,满足智能广告机、智能终端、游戏设备、多屏互动、多媒体设备等多样化的显示需求。

启扬RK3568

三屏显示内核

显⽰⼦系统是 Rockchip 平台显⽰输出相关软硬件系统的统称,它包括 VOP 和 RGB、BT1120、BT656、I8080(MCU 显⽰接口),LVDS、MIPI DSI、EDP、DP、HDMI 等显⽰信号输出模块以及与之对应的软件驱动。

整个显⽰系统的硬件框架如下图所⽰:

RK3568 拥有三个VOP的输出通道,所以支持三屏显示。

下图描述了VOP的硬件资源。它描述了RK3568的显示通路连接关系。

 本次笔者准备的三个屏幕分别为LVDS、EDP和HDMI,通过上面的VOP硬件资源描述,给三个屏幕分别分配一个VOP通道。其中EDP屏幕分配为 vp0 通道,HDMI屏幕分配为 vp1 通道,LVDS屏幕分配为 vp2 通道。

设备树部分配置如下所示:

&vop {status = "okay";
};&edp_phy {status = "okay";
};&edp_in_vp0 {status = "okay";
};&route_edp{status = "okay";connect = <&vp0_out_edp>;
};&hdmi {status = "okay";
};&hdmi_in_vp0 {status = "disabled";
};&hdmi_in_vp1 {status = "okay";
};&lvds {status = "okay";ports {port@1 {reg = <1>;lvds_out_panel: endpoint {remote-endpoint = <&panel_in_lvds>;};};};
};&lvds_in_vp2 {status = "okay";
};

在这里我们给三个屏幕分配了VOP通道,这样就能够在三个屏幕上同时显示。

weston配置

Weston是Wayland开源显⽰协议的官⽅参考实现,Rockchip Buildroot SDK的显⽰服务默认使⽤Weston 10.0.0 drm后端。

Buildroot SDK的Weston⽀持多屏镜像同显、多屏异显、屏幕位置配置及热拔插等功能。

镜像模式缩放时,如果硬件VOP显⽰模块不⽀持缩放,则需要依赖RGA处理。

相关配置通过环境变量设置,如:

# /etc/profile.d/weston.sh
export WESTON_DRM_PRIMARY=HDMI-A-1 # 指定主显为HDMI-A-1
export WESTON_DRM_SINGLE_HEAD=1 # 强制单显
export WESTON_DRM_MIRROR=1 # 使⽤镜像模式(多屏同显),不设置此环境变量即为异显
export WESTON_DRM_KEEP_RATIO=1 # 镜像模式下缩放保持纵横⽐,不设置此变量即为强制全屏
export WESTON_DRM_HEAD_MODE=primary # 只使能主显
export WESTON_DRM_HEAD_MODE=internal # 只使能内置显⽰器
export WESTON_DRM_HEAD_MODE=external # 只使能外置显⽰器
export WESTON_DRM_HEAD_MODE=external-dual # 使能所有显⽰器,优先外置显⽰器
export WESTON_DRM_HEAD_FALLBACK=1 # 未匹配到显⽰器时,使能任意⼀个有效显⽰器
export WESTON_OUTPUT_FLOW=horizontal # 默认⽔平排列
export WESTON_OUTPUT_FLOW=vertical # 默认垂直排列
export WESTON_OUTPUT_FLOW=same-as # 所有显⽰器默认位置(0,0)

也⽀持在weston.ini的output段单独禁⽤指定屏幕:

 # /etc/xdg/weston/weston.ini
[output]
name=LVDS-1
mode=off
# off|current|preferred|<WIDTHxHEIGHT@RATE>

多屏同显

在weston的默认配置中,即为多屏同显。此时的weston.sh的WESTON_DRM_MIRROR属性等于1。多屏同显的效果如下图所示:

多屏异显

修改/etc/profile.d/weston.sh,注释 export WESTON_DRM_MIRROR=1 字段,如下图所示:

 

此时重启后就是多屏异显,屏幕以扩展的方式显示。多屏异显的效果入下图所示:


http://www.ppmy.cn/news/37822.html

相关文章

MyBatis 03 -MyBatis映射

MyBatis映射1 ORM映射1.1 MyBatis自动ORM失效1.2 方案一&#xff1a;列的别名1.3 方案二&#xff1a;直接使用Map集合映射结果1.4 方案三&#xff1a;自定义结果映射&#xff08;ResultMap&#xff09;2 MyBatis高级映射2.1 数据库中表的关系2.2 OneToOne2.2.1 方案一&#xff…

QT常用控件——菜单栏和对话框

目录 引言 一,菜单栏 二,工具栏 三,对话框 QDialog 引言 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基…

C++ - 继承

之前我们学习了C中的STL库等知识点&#xff0c;在本文中我们将继续的学习C中继承部分的知识点。 继承的概念及定义 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保 持原有类特性的基础上进行扩展&#xff0c…

Vue3学习笔记(9.1)

Vue.js style&#xff08;内联样式&#xff09; 我们可以在v-bind:style直接设置样式&#xff0c;可以简写:style <!--* Author: RealRoad1083425287qq.com* Date: 2023-04-02 19:41:53* LastEditors: Mei* LastEditTime: 2023-04-03 15:41:44* FilePath: \vscode\Vue3_li…

React中setState/useState的使用

一、React如何使用setState/useState的最新的值 一般是可以正常的把最新的值&#xff0c;传递给所需要的函数中的&#xff0c;但是有些情况&#xff0c;需要使用最新数据的函数&#xff0c;不可改动&#xff0c;甚至所需要使用的地方并不是一个函数&#xff0c;那我们如何获取s…

《Effective Objective-C 2.0 》 阅读笔记 item8

第8条&#xff1a;理解“对象等同性”这一概念 1. 对象等同性 “”操作比较的是两个指针本身&#xff0c;而不是其所指的对象。 应该使用NSObject协议中声明的“isEqual:”方法来判断两个对象的等同性。其中&#xff0c;某些对象提供了特殊的“等同性判定方法”&#xff0c;如…

网易二面:MongoDB索引底层使用的是什么数据结构?

文章目录 mongoDB存储引擎对B-tree 的误解开始B 树的单条记录查询性能真的好于 B+ 树吗?B+ 树的优势为mongoDB存储引擎 mongoDB使用的存储引擎有: 1、WiredTiger存储引擎是mongodb3.2的默认存储引擎; 2、MMAPv1是mongodb基于内存映射最初的存储引擎; 3、In-Memory是一种…

【分布式】java实现分布式事务的五种方案

文章目录背景什么是分布式事务什么是分布式系统&#xff1a;什么是事务&#xff1a;什么是本地事务&#xff1a;什么是分布式事务&#xff1a;分布式事务有哪些应用场景&#xff1a;如何进行分布式事务控制CAP理论分布式系统如何兼顾CAP&#xff1f;CAP有哪些组合方式&#xff…