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 移植详细代码实现

cpp 复制代码
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系列文章-汇总

****************************************************************************************************************************************************************************************************************************

相关推荐
该用户已存在(真)3 小时前
工程项目训练--病毒分析
github·课程设计
学嵌入式的小杨同学3 小时前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux
习惯就好zz4 小时前
[Android/Linux] 实战记录:利用 Kconfig 精确控制 i.MX8MM 特定 DTB 的编译生成
android·linux·dts·dtb·lunch·多卡板配置
踏雪羽翼4 小时前
android 解决混淆导致AGPBI: {“kind“:“error“,“text“:“Type a.a is defined multiple times
android·java·开发语言·混淆·混淆打包出现a.a
小灰灰搞电子5 小时前
github/gitee 操作命令详解
gitee·github
csj505 小时前
安卓基础之《(21)—高级控件(3)翻页类视图》
android
2501_915918415 小时前
中小团队发布,跨平台 iOS 上架,证书、描述文件创建管理,测试分发一体化方案
android·ios·小程序·https·uni-app·iphone·webview
betazhou5 小时前
MySQL相关性能查询语句
android·数据库·mysql
一起养小猫5 小时前
Flutter for OpenHarmony 进阶:Timer组件与倒计时系统深度解析
android·网络·笔记·flutter·json·harmonyos
符哥20086 小时前
Fastjson2.X 使用详解
android·java