资讯动态

13、多屏显示策略配置

发布时间:2026/9/7 4:53:28 来源:尧图企业网站定制
13.1 product/display.conf 文件解析这个文件通常放在device/mediatek/[project]/目录下。我习惯先把它打开看看里面到底写了啥。# 这是一个典型的 display.conf 配置 # 主屏配置 primary { type mipi_dsi id 0 width 1920 height 1080 fps 60 physical_width 256 physical_height 144 } # 副屏配置 secondary { type hdmi id 1 width 3840 height 2160 fps 30 physical_width 600 physical_height 340 } # 第三屏扩展屏 tertiary { type dp id 2 width 1920 height 1080 fps 60 physical_width 480 physical_height 270 }你看每个屏都有一个名字primary、secondary、tertiary然后跟着一堆参数。这里我重点说几个容易踩坑的地方type接口类型。MIPI DSI、HDMI、DP、eDP 都支持。我遇到过有人把HDMI写成了HDMI2.0结果系统死活不认。id物理ID。这个必须和硬件连接一致。比如MIPI DSI0对应id0DSI1对应id1。physical_width/height物理尺寸单位毫米。这个参数很多人忽略但它直接影响UI的dpi计算。注意physical_width和physical_height不能乱填。我曾经在一个项目里随便填了100x100结果系统算出来的dpi完全不对UI显示得特别小。后来查了半天才发现是这里的问题。13.2 物理显示与逻辑显示映射好现在我们来聊聊一个关键概念物理显示和逻辑显示的区别。物理显示就是实实在在的硬件接口。比如你板子上有一个MIPI DSI接口、一个HDMI接口这就是两个物理显示设备。逻辑显示是系统抽象出来的显示层。你可以把多个物理屏组合成一个逻辑屏也可以把一个物理屏拆成多个逻辑屏。在MT8678上这个映射关系是通过display.conf里的logical_display字段来定义的# 逻辑显示映射配置 logical_display { # 主逻辑屏使用物理屏0 main { physical_displays [0] default true } # 扩展逻辑屏使用物理屏1和2 extended { physical_displays [1, 2] mode mirror # 或者 extend } }这里有个细节mode参数。mirror模式就是两个屏显示一模一样的内容extend模式就是扩展桌面。我建议你在做车载项目时副屏用mirror模式因为乘客想看的内容和主屏一样。但如果是做POS机副屏用extend模式更合适可以显示不同的菜单。我的经验在配置逻辑显示时一定要先搞清楚业务需求。我曾经帮一个客户做双屏收银机他们一开始说要用mirror模式结果后来发现店员和顾客需要看不同的内容又改成了extend。这一改驱动层、HAL层、UI层全要动折腾了整整两周。13.3 默认显示策略默认显示策略就是系统启动时哪块屏作为主屏哪块屏显示开机动画哪块屏显示Launcher。在MT8678上这个策略写在display.conf的boot和default字段里# 默认显示策略 boot { # 开机动画显示在哪个物理屏上 boot_animation_display 0 # 开机logo显示在哪个物理屏上 boot_logo_display 0 # 是否所有屏都显示开机动画 all_displays_show_boot false } default { # 默认主屏 primary_display 0 # 默认副屏 secondary_display 1 # 默认显示模式 display_mode single # single, dual, triple }这里我特别想强调all_displays_show_boot这个参数。你想想看如果所有屏都显示开机动画那副屏在启动过程中就一直亮着功耗会高不少。我一般建议只在主屏显示开机动画副屏保持黑屏或者显示一个静态logo。另外display_mode也很关键。single模式只启用主屏dual模式启用主屏和副屏triple模式启用所有屏。这个模式可以在运行时动态切换但默认值一定要配好。核心要点默认显示策略决定了用户第一眼看到的是什么。如果配错了用户可能连设置界面都进不去。我建议你在开发阶段先把display_mode设为 single等驱动稳定了再开多屏。13.4 实战中的配置技巧好了理论讲完了我分享几个实战中的小技巧先配主屏再配副屏。主屏的配置一定要100%正确因为系统启动依赖它。物理尺寸要量准。拿尺子量一下屏幕的实际尺寸别靠猜。id号别搞混。MIPI DSI0对应id0DSI1对应id1HDMI对应id2DP对应id3。这个顺序在硬件设计时就定死了。测试时用adb命令。可以用adb shell dumpsys display查看当前显示配置确认映射关系是否正确。避坑指南我曾经在一个项目里把primary和secondary的id写反了。结果主屏显示的是副屏的内容副屏显示的是主屏的内容。用户一开机就懵了以为机器坏了。所以配置完一定要用dumpsys命令验证一下。13.5 总结display.conf 这个文件说白了就是多屏显示的宪法。它定义了物理屏和逻辑屏的映射关系也决定了系统启动时的默认行为。我个人习惯是拿到一个新项目第一件事就是打开display.conf看看里面配了几个屏每个屏的参数对不对。这一步做好了后面的驱动开发就顺风顺水。如果这一步出问题后面全是坑。嗯今天就讲到这里。下一章我们聊聊多屏显示的热插拔处理那才是真正考验功底的地方。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价