Android 车载虚拟化底层技术-Kernel 5.10 -Android12(multi-cards)技术实现
详细代码实现见
Android Display Graphics系列文章-汇总Android Display Graphics系列文章-汇总
Android Display Graphics系列文章-汇总
Android Display Graphics系列文章-汇总
本文主要包括部分:
一、Android12的Kernel 5.10版本
1.1 Kernel 5.10 情况说明
1.2 前置条件
二、QCM 8**5 plane配置
2.1 multi-card配置
2.2 移植msm-lease
2.3 配置信息确认
三、Kernel 5.10 mutil-cards方案实现
3.1 移植详细代码实现
一、Android12的Kernel 5.10版本
1.1 Kernel 5.10 情况说明
高通提供Android 12基线代码,有的是基于Kernel 5.10,在上篇文章中Kernel 5.4中就已经不存在msm-lease了。所以在Kernel 5.10版本上,也是一样的。
在Kernel 5.10中,msm的驱动已经移至 target_ap/vendor/qcom/opensource/display-drivers路径下;需要将msm-lease移植适配到此路径下,msm-lease同样需要移植到此路径下;

1.2 前置条件
移植multi-card的前置条件是,DSI屏和DP屏的驱动已经调试正常,单card(android默认)下是显示相同内容的。
此时再按照以下patch实现multi-card。
二、QCM 8**5 plane配置
2.1 multi-card配置
以QCM84*5为例,说明配置card信息;
下面配置:sde_card1的接口是DSI,并且分配了12个plane;sde_card2的接口是DP1,也分配了4个plane。实际使用场景可以根据对现实的需求分配。
+ sde_card1: qcom,sde-kms-lease@0 {
+ compatible = "qcom,sde-kms-lease";
+ qcom,dev-name = "msm_drm";
+ //qcom,lease-connectors = "DSI-1";
+ //qcom,lease-planes = "plane-0","plane-1","plane-4","plane-5";
+ qcom,lease-connectors = "DSI-1";
+ qcom,lease-planes = "plane-0","plane-1","plane-2","plane-3","plane-5","plane-7","plane-8","plane-9","plane-10","plane-11","plane-13","plane-15";
+ };
+
+ sde_card2: qcom,sde-kms-lease@1 {
+ compatible = "qcom,sde-kms-lease";
+ qcom,dev-name = "msm_drm1";
+ qcom,lease-connectors = "DP-1";
+ //qcom,lease-planes = "plane-2","plane-3","plane-6","plane-7";
+ qcom,lease-planes = "plane-4","plane-6","plane-12","plane-14";
+ };
+
2.2 移植msm-lease
将适合该平台的msm-lease文件放到target_ap/vendor/qcom/opensource/display-drivers/路径下,并在内核中增加配置。
--- a/target_ap/vendor/qcom/opensource/display-drivers/msm/Kbuild
+++ b/target_ap/vendor/qcom/opensource/display-drivers/msm/Kbuild
@@ -82,6 +82,7 @@ obj-m += msm_drm.o
msm_drm-$(CONFIG_DSI_PARSER) += dsi/dsi_parser.o
+msm_drm-$(CONFIG_DRM_MSM_LEASE) += ../msm-lease/msm_lease_drv.o
target_ap/kernel_platform/common/include/drm
--- a/target_ap/vendor/qcom/opensource/display-drivers/config/gki_waipiodisptuiconf.h
+++ b/target_ap/vendor/qcom/opensource/display-drivers/config/gki_waipiodisptuiconf.h
@@ -14,3 +14,4 @@
#define CONFIG_GKI_DISPLAY 1
#define CONFIG_DRM_SDE_VM 1
#define CONFIG_DRM_MSM_LOW_MEM_FOOTPRINT 1
+#define CONFIG_DRM_MSM_LEASE 1
在内核中要增加头文件:
kernel_platform/common/include/drm/drmP.h
kernel_platform/common/include/drm/drm_os_linux.h
kernel_platform/common/include/drm/drm_pci.h
kernel_platform/msm-kernel/include/drm/drmP.h
kernel_platform/msm-kernel/include/drm/drm_os_linux.h
kernel_platform/msm-kernel/include/drm/drm_pci.h
修改vendor/qcom/opensource/display-drivers/msm/msm_drv.h
vendor/qcom/opensource/display-drivers/msm/msm_drv.c ,使其调用msm_drm_register()注册drm时,调用msm_lease_drm_unregister()注册lease_drm。
移植完成,同样可以看到两个card节点,
![]()
2.3 配置信息确认
可以查看上篇文章 中此章节内容
三、Kernel 5.10 mutil-card方案实现
3.1 移植详细代码实现
diff --git a/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts b/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts
index 3866017..2e4a53d 100644
--- a/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts
+++ b/target_ap/device/qcom/sepolicy_vndr/generic/vendor/common/file_contexts
@@ -443,6 +443,8 @@# graphics device/dev/mdss_rotator u:object_r:graphics_device:s0/dev/dri/card0 u:object_r:graphics_device:s0
+/dev/dri/card1 u:object_r:graphics_device:s0
+/dev/dri/card2 u:object_r:graphics_device:s0/dev/dri/controlD64 u:object_r:graphics_device:s0/dev/dri/renderD128 u:object_r:graphics_device:s0/dev/spec_sync u:object_r:graphics_device:s0
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************详见如下系列文章**************************Android Display Graphics系列文章-汇总
Android Display Graphics系列文章-汇总
****************************************************************************************************************************************************************************************************************************
相关文章:
Android 车载虚拟化底层技术-Kernel 5.10 -Android12(multi-cards)技术实现
详细代码实现见 Android Display Graphics系列文章-汇总Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 本文主要包括部分: 一、Android12的Kernel 5.10版本 1.1 Kernel 5…...
Qt之点击鼠标右键创建菜单栏使用(六)
Qt开发 系列文章 - menu(六) 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、一个状态栏(status…...
开发一套SDK 第一弹
自动安装依赖包 添加条件使能 #ex: filetypesh bash_ls 识别 达到预期,多个硬件环境 等待文件文件系统挂在完成 或者创建 /sys/class/ 属性文件灌入配置操作 AI 提供的 netlink 调试方法,也是目前主流调用方法,socket yyds #include <linux/module.h> #include <linux…...
sftp+sshpass
实现场景,要求客户端定时将本地的日志文件传输到服务器。 工作环境ubuntu,注意不通操作系统的版本不通,依赖的工具的版本也有所不同 实现目标需要客户端满足安装工具: 1、下载安装sshpass ---安装命令:sudo apt-ge…...
【机器学习与数据挖掘实战】案例01:基于支持向量回归的市财政收入分析
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…...
Idea实现定时任务
定时任务 什么是定时任务? 可以自动在项目中根据设定的时长定期执行对应的操作 实现方式 Spring 3.0 版本之后自带定时任务,提供了EnableScheduling注解和Scheduled注解来实现定时任务功能。 使用SpringBoot创建定时任务非常简单,目前主要…...
Linux 安装NFS共享文件夹
程序默认使用2049端口,如果被占用需要修改端口104设置为服务端 122设置为客户端 一、在线安装(服务端和客户端执行) yum install nfs-utils rpcbind -y二、配置启动参数(服务端执行) 104服务器/mnt路径下创建shareda…...
bash 判断内存利用率是否高于60%
在 Bash 脚本中,可以通过 free 命令获取内存利用率,然后结合 awk 和条件判断语句实现监控内存利用率是否高于 60%。以下是一个示例脚本: 1. 示例脚本 #!/bin/bash# 获取总内存和已使用内存 total_mem$(free | awk /Mem:/ {print $2}) used_…...
推送(push)项目到gitlab
文章目录 1、git init1.1、在当前目录中显示隐藏文件:1.2、查看已有的远程仓库1.3、确保你的本地机器已经生成了 SSH 密钥:1.4、将生成的公钥文件(通常位于 ~/.ssh/id_rsa.pub)复制到 GitLab 的 SSH 设置中:1.5、测试 …...
centos9升级OpenSSH
需求 Centos9系统升级OpenSSH和OpenSSL OpenSSH升级为openssh-9.8p1 OpenSSL默认为OpenSSL-3.2.2(根据需求进行升级) 将源码包编译为rpm包 查看OpenSSH和OpenSSL版本 ssh -V下载源码包并上传到服务器 openssh最新版本下载地址 wget https://cdn.openb…...
硬件成本5元-USB串口采集电表数据完整方案-ThingsPanel快速入门
ThingsPanel开源物联网平台支持广泛的协议,灵活自由,本文介绍ThingsPanel通过串口来采集电表数据,简单易行,成本低廉,适合入门者学习试验,也适合一些特定的应用场景做数据采集。 适用场景: 降低…...
在AWS EMR上用Hive、Spark、Airflow构建一个高效的ETL程序
在AWS EMR(Elastic MapReduce)上构建一个高效的ETL程序,使用Hive作为数据仓库,Spark作为计算引擎,Airflow作为调度工具时,有几个关键的设计与实施方面需要注意。 在AWS EMR上构建高效的ETL程序,…...
前端(四)css选择器、css的三大特性
css选择器、css的三大特性 文章目录 css选择器、css的三大特性一、css介绍二、css选择器2.1 基本选择器2.2 组合选择器2.3 交集并集选择器2.4序列选择器2.5属性选择器2.6伪类选择器2.7伪元素选择器 三、css三大特性3.1 继承性3.2 层叠性3.3 优先级 一、css介绍 CSS全称为Casca…...
vscode 打开 setting.json
按下Ctrl Shift P(Windows/Linux)或Cmd Shift P(Mac)来打开命令面板。输入open settings,然后选择 Open User Settings(JSON)。打开settings.json文件 ------修改设置-----: 1、 html代码的行长度&am…...
关于网络安全攻防演化博弈的研究小议
1. 拉高视角,从宏观看网络安全攻防 伴随着信息化的发展,网络安全的问题就一直日益突出,与此同时,网络安全技术也成为研究热点,直到今日也没有停止。 从微观来看,网络安全技术研究指的是针对某项或某几项…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(7)
1.问题描述: 推送通知到手机,怎么配置拉起应用指定的页面? 解决方案: 1、如果点击通知栏打开默认Ability的话, actionType可以设置为0, 同时可以在.clickAction.data中,指定待跳转的page页面…...
远程桌面防护的几种方式及优缺点分析
远程桌面登录是管理服务器最主要的方式,于是很多不法分子打起了远程桌面的歪心思。他们采用暴力破解或撞库的方式破解系统密码,悄悄潜入服务器而管理员不自知。 同时远程桌面服务中的远程代码执行漏洞也严重威胁着服务器的安全,攻击者可以利…...
ASP.NET|日常开发中连接Sqlite数据库详解
ASP.NET|日常开发中连接Sqlite数据库详解 前言一、安装和引用相关库1.1 安装 SQLite 驱动1.2 引用命名空间 二、配置连接字符串2.1 连接字符串的基本格式 三、建立数据库连接3.1 创建连接对象并打开连接 四、执行数据库操作4.1 创建表(以简单的用户表为例…...
python的自动化seleium安装配置(包含谷歌的chromedriver)
目录 前言介绍 一、下载谷歌浏览器chromedriver (一)查看谷歌浏览器版本 (二)去官网下载谷歌驱动(chromdriver) (三)谷歌浏览器安装位置解压 (四)配置环境变量 二、pychram里下载安装selenium 三、测试selenium是否成功 前言介绍 Selenium是一个开源的自动化测试工具&…...
QT requested database does not belong to the calling thread.线程中查询数据报错
QT requested database does not belong to the calling thread.线程中查询数据报错 QString name "ttx"; QSqlQueryModel* sql_model; QString sql_comm QString("select * from dssb_moddve_loddt_tab where name%1").arg(name); sql_model->set…...
重磅!国家首部NAD⁺抗衰共识发布,这11条建议必读!
2026年4月,国内首个《NAD⁺在衰老相关疾病中的作用及临床应用中国专家共识(2026版)》正式发布!这份由中华医学会老年医学分会牵头、汇聚全国衰老医学、代谢病、心血管病及神经病学等领域权威专家共同制定的国家级共识,…...
构建AI涌现式判断系统:从智能体工作流到技术评审实践
1. 项目概述:当AI学会“判断”而非“计算”最近在GitHub上看到一个名为“emergent-judgment”的项目,由thebrierfox发起。初看标题,你可能会觉得这又是一个关于AI伦理或决策系统的抽象讨论。但深入探究后,我发现它指向了一个更具体…...
USB Type-C接口技术解析与工程实践
1. USB接口技术演进与Type-C核心优势USB Type-C接口自2014年发布以来,凭借其革命性的设计理念迅速成为移动设备的主流接口标准。作为从业十余年的硬件工程师,我见证了从USB 2.0 OTG到Type-C的完整迁移过程。与传统micro-A/B接口相比,Type-C最…...
资源管理器约束设计:从核心原理到YARN/K8s实战配置
1. 项目概述:理解资源管理器约束的核心价值在任何一个复杂的计算或资源管理系统中,资源管理器(Resource Manager, 简称RM)都扮演着“交通警察”或“调度中心”的角色。它的核心职责是公平、高效地分配有限的系统资源&a…...
AI编程助手My_CoPaw:从代码补全到智能协作者的架构演进
1. 项目概述:当你的代码有了“猫爪”伙伴最近在GitHub上闲逛,发现一个挺有意思的项目,叫haozhuoyuan/My_CoPaw。光看名字,CoPaw——协作的爪子,是不是立刻联想到“猫爪”(Cat‘s Paw)和“协作”…...
5G基站功率自适应算法突破
SummaryArticleObjectiveMethodComments统计机器翻译领域自适应综述解决统计机器翻译中训练数据和测试数据的领域分布不一致问题,提高翻译模型的性能和准确性基于数据选择的方法:选择和目标领域文本相似的源领域数据进行模型的训练。基于混合模型的方法&…...
为内部工具集成AI能力时下载Taotoken作为统一接口层的方案
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部工具集成AI能力时采用Taotoken作为统一接口层的方案 在为企业内部工具(如数据分析平台、客服辅助系统或内容生成…...
Grid++Report设计器避坑指南:搞不定自动换行和字体缩小?看这篇就够了
GridReport设计器避坑指南:搞不定自动换行和字体缩小?看这篇就够了 当你面对一份需要展示长商品描述、多行地址或其他复杂文本的报表时,是否曾被GridReport的自动换行和字体缩小功能折磨得焦头烂额?作为一款功能强大的报表设计工具…...
2026 云手机横评:傲晨云、红手指、川川云、雷电云实测,全能首选一目了然
一、测评背景与说明随着手游挂机、账号多开、云端办公等需求爆发,云手机已成为个人玩家与工作室的必备工具。当前市场品牌繁杂,傲晨云、红手指、川川云、雷电云是关注度较高的四款产品,它们在性能、稳定性、功能及价格上差异显著。本次测评基…...
FModel:解锁虚幻引擎游戏资源的终极工具指南
FModel:解锁虚幻引擎游戏资源的终极工具指南 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel 你是否曾好奇过《堡垒之夜》中炫酷的皮肤是如何制作的?或是想要探索《Valorant》中精…...
