当前位置: 首页 > article >正文

Android 车载虚拟化底层技术-Kernel4.19-Android10(双card)技术实现

Android Display Graphics系列文章-汇总

前言

对于Linux和Android来说,只要是多屏(>=2)显示的场景都可以显示虚拟化。只是大部分场景对显示稳定性没有要求,系统异常了就都不显示了。但对于容器相关方案,或要求显示隔离的场景,是需要进行显示虚拟化的

本文主要包括部分:

一、Android10的Kernel 4.19版本

1.1 Kernel4.19 情况说明

1.2 前置条件

二、QCM 6350 plane配置

2.1 multi-card配置

2.2 移植msm-lease

三、Kernel4.19mutil-card方案实现

3.1 移植详细代码实现

一、Android10的Kernel 4.19版本

1.1 Kernel4.19 情况说明

高通提供Android 10基线代码,有的是基于Kernel 4.19的或者更新。在Kernel 4.19版本上,kernel/msm-4.19/drivers/gpu/drm/路径下msm-lease文件夹已经不存在了。

此时让系统支持multi-card就需要将上篇文章中说的msm-lease移植过来。

1.2 前置条件

移植multi-card的前置条件是,DSI屏和DP屏的驱动已经调试正常,单card(android默认)下是显示相同内容的。

此时再按照以下patch实现multi-card。

二、QCM 6*50 plane配置

2.1 multi-card配置

以QCM6*50为例,说明配置card信息;

下面配置:sde_card1的接口是DSI,并且分配了4个plane;sde_card2的接口是DP1,也分配了4个plane。实际使用场景可以根据对现实的需求分配。例如DP的显示业务比较单一,就可以只分配"plane-2"和"plane-5"。

+ sde_card1: qcom,sde-kms-lease@0 {

+ compatible = "qcom,sde-kms-lease";

+ qcom,dev-name = "msm_drm1";

+ qcom,lease-connectors = "DSI-1";

+ qcom,lease-planes = "plane-0","plane-1","plane-4","plane-5";

+ };

+

+ sde_card2: qcom,sde-kms-lease@1 {

+ compatible = "qcom,sde-kms-lease";

+ qcom,dev-name = "msm_drm2";

+ qcom,lease-connectors = "DP-1";

+ qcom,lease-planes = "plane-2","plane-3","plane-6","plane-7";

+ };

2.2 移植msm-lease

将上个平台的msm-lease文件放到kernel/msm-4.19/drivers/gpu/drm/路径下,并在内核中增加默认配置。

 CONFIG_DRM=y

+CONFIG_DRM_MSM_LEASE=y

 # CONFIG_DRM_MSM is not set

kernel/msm-4.19/drivers/gpu/drm/Kconfig 中增加编译项

kernel/msm-4.19/drivers/gpu/drm/Kconfig

@@ -294,6 +294,8 @@ source "drivers/gpu/drm/virtio/Kconfig"

 source "drivers/gpu/drm/msm/Kconfig"

+source "drivers/gpu/drm/msm-lease/Kconfig"

 source "drivers/gpu/drm/fsl-dcu/Kconfig"

kernel/msm-4.19/drivers/gpu/drm/Makefile中增加编译项

kernel/msm-4.19/drivers/gpu/drm/Makefile

 obj-$(CONFIG_DRM_MSM) += msm/

+obj-$(CONFIG_DRM_MSM_LEASE) += msm-lease/

 obj-$(CONFIG_DRM_TEGRA) += tegra/

移植完成,同样可以看到两个card节点,

三、Kernel4.19mutil-card方案实现

3.1 移植详细代码实现

见   Android Display Graphics系列文章-汇总


http://www.kler.cn/a/420459.html

相关文章:

  • Python知识分享第十八天
  • rpm包转deb包或deb包转rpm包
  • java将word docx pdf转换为图片(不需要额外下载压缩包,直接导入maven坐标)
  • 【Spring】Spring IOCDI:架构旋律中的“依赖交响”与“控制华章”
  • Linux详解:文件权限
  • Docker扩容操作(docker总是空间不足)
  • 瀚高创库建表pgsql
  • linux的挂卸载
  • 【docker】多阶段构建与单阶段构建
  • leetcode每日一题(20241202)
  • BERT的中文问答系统36-2
  • Java GET请求 请求参数在Body中使用Json格式传参
  • 简单介绍下 VitePress 中的 vp-doc 和 vp-raw
  • Git:分支管理
  • 面试小札:JVM虚拟机
  • LeetCode Hot100 21~30
  • 数仓3.0与大模型(如大型语言模型和其他深度学习模型)之间的关系
  • 机器学习(3)朴素贝叶斯算法
  • 数据库日志
  • HTML前端开发-- Flex布局详解及实战
  • 4k4d 学习安装笔记
  • CS144(七)
  • Linux - selinux
  • 屏幕触控支持指纹
  • 小程序 - 比较数字大小
  • Git 快速入门:全面了解与安装步骤