IMX8MPlus开发板Yocto镜像Psplash双图显示及分辨率调整咨询
问题描述
在IMX8MPlus(Compulab BSP)开发板上,通过MIPI DSI接口连接1280x800分辨率的触控显示屏,尝试启动带有自定义启动Logo的Yocto镜像。操作流程为给psplash配方创建bbappend文件并指定自定义Logo,启动后Logo可显示但出现双图(预期应为全屏单图)。
目标板的fbset输出如下:
mode "720x600-0" # D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz geometry 720 600 1024 1200 32 timings 0 0 0 0 0 0 0 accel true rgba 8/16,8/8,8/0,0/0 endmode
核心问题:显示屏实际分辨率(1280x800)与帧缓冲模式值(720x600)不匹配,导致Psplash渲染异常。以下是编译Yocto时修改Psplash显示分辨率的具体方法:
解决步骤
1. 通过Psplash的bbappend文件强制指定分辨率
在你的Yocto自定义层中创建psplash_%.bbappend文件,添加编译配置参数:
EXTRA_OECONF += " \ --with-framebuffer-width=1280 \ --with-framebuffer-height=800 \ "
该配置会在编译Psplash时,强制其按照1280x800的分辨率渲染Logo,直接匹配屏幕参数。
2. 同步修复帧缓冲系统分辨率
双图问题根源是帧缓冲与屏幕分辨率不匹配,需同步修改系统帧缓冲配置:
- 找到开发板对应的板级配置文件(如
meta-compulab层中的imx8mp-var-dart.conf),添加帧缓冲参数:
FRAMEBUFFER_WIDTH = "1280" FRAMEBUFFER_HEIGHT = "800"
- 同时修改Linux设备树中MIPI DSI显示屏节点,确保
display-timings下的hactive和vactive值设置为1280和800,从硬件层面匹配屏幕分辨率。
3. 重新编译镜像
执行Yocto编译命令,生成包含修改配置的镜像:
bitbake <你的目标镜像名称>
验证
烧录新镜像启动后,执行fbset命令确认输出分辨率为1280x800,此时Psplash自定义Logo应全屏单图正常显示。
内容的提问来源于stack exchange,提问作者ANISH KUMAR
相关产品推荐
相关产品推荐

