Android 车载虚拟化底层技术-Kernel 5.10 -Android12(multi-cards)技术实现

ops/2024/12/13 3:41:35/

详细代码实现见

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.ppmy.cn/ops/141425.html

相关文章

C++小碗菜之五:GDB调试工具

“程序员不是编写代码的人,而是调试错误的人。” – 约翰本尼斯(John Bennet) 目录 前言 在虚拟机中安装 GDB GDB调试的实战演练 创建示例代码 例子: 使用 GDB 调试 编译代码 启动 GDB 设置断点 运行程序 打印变量值 …

【CKA】Kubernetes(k8s)认证之CKA考题讲解

CKA考题讲解 0.考试101 0.1 kubectl命令⾃动补全 在 bash 中设置当前 shell 的⾃动补全&#xff0c;要先安装 bash-completion 包。 echo "source <(kubectl completion bash)" >> ~/.bashrc还可以在补全时为 kubectl 使⽤⼀个速记别名&#xff1a; al…

Ubuntu中使用C#调用Fortran编译so文件

环境说明&#xff1a; Ubuntu版本&#xff1a;v22.04 LTS.NET版本&#xff1a;v8.0.110GFortran版本&#xff1a;v11.4.0 安装Fortran编译器 在Ubuntu上安装Fortran编译器&#xff1a; # 更新包列表 sudo apt update# 安装gfortran编译器 sudo apt install gfortran创建.NE…

基于51单片机64位病床呼叫系统设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机病床呼叫系统设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0095 1. 主要功能&#xff1a; 基于51单片机的病床呼叫系统proteus仿…

BA和CS算法中的Levy飞行策略

Levy飞行策略通过模拟自然界中动物的长距离迁徙行为&#xff0c;指导粒子进行更大范围的搜索&#xff0c;有助于算法快速找到全局最优解。它是一种具有独特优势的随机行为策略&#xff0c;模拟随机游走或搜索过程中的步长和方向&#xff0c;其步长的概率分布为重尾分布&#xf…

说下JVM中一次完整的GC流程?

大家好&#xff0c;我是锋哥。今天分享关于【说下JVM中一次完整的GC流程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说下JVM中一次完整的GC流程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;垃圾回收&#xff08;GC&am…

DVWA亲测sql注入漏洞

LOW等级 我们先输入1 我们加上一个单引号&#xff0c;页面报错 我们看一下源代码&#xff1a; <?php if( isset( $_REQUEST[ Submit ] ) ) { // Get input $id $_REQUEST[ id ]; // Check database $query "SELECT first_name, last_name FROM users WHERE user_id …

LLaMA-Factory 上手即用教程

LLaMA-Factory 是一个高效的大型语言模型微调工具&#xff0c;支持多种模型和训练方法&#xff0c;包括预训练、监督微调、强化学习等&#xff0c;同时提供量化技术和实验监控&#xff0c;旨在提高训练速度和模型性能。 官方开源地址&#xff1a;https://github.com/hiyouga/L…