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系列文章-汇总
****************************************************************************************************************************************************************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/488054.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门

本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …

MySQL(数据类型)

目录 1. 数值类型 2. bit类型 3.小数类型 3. 字符串类型 4 日期和时间类型 5. enum和set 1. 数值类型 对标C语言: tinyint->char(1字节): 有符号:127 ~ 255 无符号:0 ~ -128。 smalli…

1. Flink自定义Source

一. Source 简介 DataStream是Flink的低级API,用于进行数据的实时处理,Flink编程模型分为Source、Transformation、Sink三个部分,如下图所示。 默认Flink提供了大量的内置Source,常见的Source如下: 基于文件的Sour…

运维新手入门——KVM(Beginner‘s Guide to Operations and Maintenance - kvm)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

一个功能强大的视频翻译和本地化配音工具,支持影视级双语字幕/视频配音

家好,今天给大家分享一个功能强大的视频翻译和本地化配音工具VideoLingo,旨在为用户提供高质量的字幕和配音服务,让全世界的知识能够跨越语言的障碍共享。 项目介绍 VideoLingo项目的开发旨在解决视频内容创作者和翻译者面临的跨语言障碍问题…

力扣-图论-9【算法学习day.59】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

doxygen–自动生成文档工具

原文地址:doxygen–自动生成文档工具 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 简介 doxygen是软件开发中广泛使用的文档生成工具。它可以从源代码注释中自动生成文档,解析类、函数、参数相关信息,并生…

上市公司投资效率Biddle模型数据(包括最终数据、原始数据及构造说明)2003-2022年

一、计算方式:参考《Journal of accounting and economics》Biddle G C,构建Biddle模型使用企业投资对成长机会的回归模型来估计企业的投资效率,这里成长机会用销售增长率来衡量。回归模型如下图所示: 二、资料范围:包括原始数据…

用JavaScript实现一个贪吃蛇游戏

原理如下,贪吃蛇的蛇身就是一个数组,数组中的每个元素都是一个坐标,蛇身每次移动时都会在数组前插入一个新坐标,并在数组尾部删掉一条记录,吃到食物后数组的尾部记录就不删。如果移到屏幕边缘会从屏幕的另一边出现。好…

【Canvas与光阑】立方体六彩光阑

【成图】 120*120的png图标 大小图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>立方体 六彩光阑 Draft2</…

[代码随想录14]二叉树的常用操作,翻转,对称,最大深度和最小深度,递归版本

前言 在二叉树的题目中&#xff0c;递归的解法无疑是是最简单和最好理解的&#xff0c;也能快速解题&#xff0c;本篇介绍一下递归的常见的二叉树题目。 题目链接 226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 101. 对称二叉树 - 力扣&#xff08;LeetCode&#…

css基础记录

基础 选择器 复合选择器 后代选择器 div p {}; 类似如上,找到div中所有的后代,注意是所有的后代 子代选择器 > div > a 只选择div的儿子中有a的 并集选择器 用逗号,分隔 p,div,span,h1 { … } 一般一行写一个 CSS元素显示模式 分为块元素,行内元素 块元素 特点…

HDR视频技术之六:色调映射

图像显示技术的最终目的就是使得显示的图像效果尽量接近人们在自然界中观察到的对应的场景。 HDR 图像与视频有着更高的亮度、更深的位深、更广的色域&#xff0c;因此它无法在常见的普通显示器上显示。 入门级的显示器与播放设备&#xff08;例如普通人家使用的电视&#xff0…

《HTML 的变革之路:从过去到未来》

一、HTML 的发展历程 图片: HTML 从诞生至今&#xff0c;经历了多个版本的迭代。 &#xff08;一&#xff09;早期版本 HTML 3.2 在 1997 年 1 月 14 日成为 W3C 推荐标准&#xff0c;提供了表格、文字绕排和复杂数学元素显示等新特性&#xff0c;但因实现复杂且缺乏浏览器…

webrtc学习----前端推流拉流,局域网socket版,一对一

提示&#xff1a;局域网socket版 文章目录 [TOC](文章目录) 前言一、教程二、webrtc工作流程三、推流端四、拉流五、socket服务六、效果七、备注总结 前言 ‌‌‌‌‌WebRTC&#xff08;Web Real-Time Communication&#xff09;‌是一种实时通讯技术&#xff0c;允许网络应用或…

IMX6ULL开发板挂载 Ubuntu 的 NFS 目录,并以交叉编译得到的hello程序进行测试

首先参考博文 https://blog.csdn.net/wenhao_ir/article/details/144404637 使得IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu能互相Ping 通 然后开始将Ubuntu 的 NFS 目录挂载到Ubuntu中。 为什么挂载&#xff1f; 答&#xff1a;其实是把 Ubuntu中的某个目录通过NFS网…

Vscode 构建 uniapp vue3 + ts 微信小程序项目

前言 为什么要使用 Vscode 来开发构建 uniapp 项目&#xff1f;从个人角度来讲&#xff0c;仅是想要 Vscode 丰富的插件生态&#xff0c;以及最重要的优秀的 TtypeScript 类型检查支持&#xff0c;因为本人是 TS 重度使用者。 如果你更习惯使用 js 进行开发&#xff0c;使用 …

【Spark】Spark的两种核心Shuffle工作原理详解

Spark 的shuffle机制 一、Spark ShuffleManager 发展历程 Spark 1.1.0 之前 在 Spark 1.1.0 之前&#xff0c;Spark 使用 BlockStoreShuffleFetcher 来处理 Shuffle 操作。这个实现主要依赖于直接从 BlockManager 获取 Shuffle 数据&#xff0c;并通过网络进行交换。 Spark …

网上商城系统设计与实现

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本网上商城系统就是在这样的大环境…

UE5制作血条和血包【扣血/回血机制】

首先到第三人称蓝图&#xff0c;创建一个变量health&#xff0c;代表血量&#xff0c;默认值改为100 接着创建一个控件蓝图 设置血条颜色和绑定百分比 绑定血条&#xff0c;因为是百分比所以除以100 然后到第三人称蓝图Begin Play后创建控件蓝图&#xff0c;添加到视口 …