NXP MCU 技术论坛
直播中

张莉

8年用户 1339经验值
私信 关注
[问答]

多显示器在运行Android Automotive 8 i.MX Automotive 13.0.0 1.1.0系统的1.1.0 EVK中无法正常工作怎么解决?

我们在 imx8 QuadXPlus EVK 中运行 Android Automotive 13.0.0 1.1.0 映像。我们闪现的图像是Android 13 1.1.0 图像(超链接)。

设置明智,我们已经连接了twoi.MX mini SAS 电缆LVDS 转 HDMI 适配器DSI0/LVDSI0 and DSI1/LVDSI1 的。当 Android 启动时,其中一个显示屏显示 Main display contents.但是仪表板 UI 为空.
两个显示器的分辨率不同,
显示 1:1920x1080 像素
显示 2:1280x800 分辨率

我们已经分别验证了显示器和 LVDS 转 HDMI 转换器。这里没有什么问题。当仅连接一个显示器时,显示器和 LVDS 转 HDMI 适配器都可以工作。

根据文档 (13.0.0_1.1.0_auto_docs), i.MX 8QuadXPlus 默认支持多显示器.当运行以下命令时,我们可以看到即使连接了两个显示器,也仅连接一个显示器。



请指出我们在这里遗漏的内容.我们按原样遵循了文档。

注意: One 观察我们现在的 是,当两个显示器连接时,Android 尝试在更大的显示屏上呈现主显示屏无论它连接到哪个 LVDSx 上。但是,如果更大的显示器连接到 LVDS0, Android UI 启动后变为空白.并且两个显示屏都不会显示任何内容。

Note
:苟一个显示器已连接,则主显示屏正在获取通过 LVDS0 渲染.

回帖(1)

陈秀英

2025-4-14 17:45:26

针对i.MX Automotive EVK多显示器无法正常工作的问题,以下是分步解决方案:




步骤1:验证硬件连接与兼容性



  1. 确认线缆与接口  

    • 检查i.MX mini SAS线缆是否完好,LVDS转HDMI适配器是否支持目标分辨率(尤其是1280x800)。

    • 尝试调换两个显示器的接口(如将主显示连接到DSI1,副显示连接到DSI0),观察问题是否跟随接口或显示器变化。





步骤2:检查设备树(Device Tree)配置



  1. 启用多显示接口  

    • 确保设备树中同时启用了DSI0DSI1(或LVDS0LVDS1)接口。  

    • 示例配置片段:
      &lcdif1 {
      status = "okay";
      };
      &lcdif2 {
      status = "okay";
      };


  2. 配置显示时序与分辨率  

    • 为每个显示器设置正确的时序参数(如display-timings节点),匹配实际分辨率。





步骤3:调整Android系统配置



  1. 启用多显示器支持  

    • device/.../common/BoardConfig.mk中添加:
      BOARD_HAS_MULTI_DISPLAY := true


  2. 配置叠加层(Overlay)  

    • /vendor/etc/display/目录下创建或修改XML配置文件(如display_config.xml),定义双屏参数:








步骤4:检查显示服务与日志




  1. 抓取Logcat日志  



    • 运行以下命令过滤显示相关错误:
      adb logcat | grep -E "SurfaceFlinger|DisplayManager|HWComposer|EDID"

    • 重点查找以下错误类型:

      • Failed to read EDID:显示器识别失败。

      • Unsupported mode:分辨率或刷新率不兼容。

      • No CRTCs available:显示流水线资源不足。





  2. 验证SurfaceFlinger状态  



    • 检查多显示器是否被正确识别:
      adb shell dumpsys SurfaceFlinger

    • 输出中应包含两个活跃的DisplayDevice条目。






步骤5:调整显示属性与GPU配置




  1. 设置强制分辨率  



    • 通过ADB覆盖显示参数(临时测试):
      adb shell wm size 1920x1080    # 主显示
      adb shell wm size 1280x800     # 副显示(可能需要指定display-id)

    • 或修改build.prop
      persist.sys.resolution.primary=1920x1080
      persist.sys.resolution.secondary=1280x800




  2. 检查GPU带宽限制  



    • 确认i.MX8的显示流水线支持双路不同分辨率输出。若存在带宽瓶颈,需降低分辨率或刷新率。






步骤6:验证UI适配与多屏服务




  1. 检查仪表板应用配置  



    • 确认仪表板应用已声明支持多显示器:
      
       android:supportsPictureInPicture="true"
      android:resizeableActivity="true" />

    • 或通过代码指定显示ID:
      Presentation presentation = new Presentation(context, secondaryDisplay);
      presentation.show();




  2. 测试镜像模式  



    • 暂时将副显示分辨率设为与主显相同,验证是否为分辨率差异导致的问题。






步骤7:更新固件与驱动



  1. 升级至最新BSP版本  

    • 检查NXP官方支持是否有修复多显示器问题的补丁。

    • 更新显示驱动(如imx-drmvivante)和Android HAL层。





步骤8:联系NXP技术支持



  • 如果问题仍未解决,提供以下信息提交工单:

    • 完整的设备树配置。

    • Logcat和内核日志(dmesg)。

    • 显示器的EDID数据(可通过adb shell cat /sys/class/drm/*/edid获取)。





总结:问题可能源于硬件配置、设备树缺失多显示支持、分辨率兼容性或UI适配。建议从设备树和系统日志入手,逐步验证各环节配置。

举报

更多回帖

×
20
完善资料,
赚取积分