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

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.lryc.cn/news/502631.html

相关文章:

  • Qt之点击鼠标右键创建菜单栏使用(六)
  • 开发一套SDK 第一弹
  • sftp+sshpass
  • 【机器学习与数据挖掘实战】案例01:基于支持向量回归的市财政收入分析
  • Idea实现定时任务
  • Linux 安装NFS共享文件夹
  • bash 判断内存利用率是否高于60%
  • 推送(push)项目到gitlab
  • centos9升级OpenSSH
  • 硬件成本5元-USB串口采集电表数据完整方案-ThingsPanel快速入门
  • 在AWS EMR上用Hive、Spark、Airflow构建一个高效的ETL程序
  • 前端(四)css选择器、css的三大特性
  • vscode 打开 setting.json
  • 关于网络安全攻防演化博弈的研究小议
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(7)
  • 远程桌面防护的几种方式及优缺点分析
  • ASP.NET|日常开发中连接Sqlite数据库详解
  • python的自动化seleium安装配置(包含谷歌的chromedriver)
  • QT requested database does not belong to the calling thread.线程中查询数据报错
  • 服务器一般装什么系统?
  • Linux vi/vim 编辑器使用教程
  • JavaEE多线程案例之阻塞队列
  • 梳理你的思路(从OOP到架构设计)_基本OOP知识04
  • nginx反向代理(负载均衡)
  • Android系统应用主要模块
  • 【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell
  • 【RK3588 Linux 5.x 内核编程】-内核线程与Seqlock
  • 访问者模式的理解和实践
  • 在Scala中对Map函数的使用
  • PyTorch基本使用-张量的索引操作