我现在uboot启动中遇到一个bug,在一块rgb屏幕上,分辨率是480854,屏幕被分成两半了,其他rbg屏幕比如1024600的rgb屏幕或者8001280的lvds屏幕上或者1280800的lvds屏幕上都正常,芯片使用的是全志的t507,不知道有没有同僚遇到相同的问题
这个是在uboot阶段的显示效果图
这个是uboot启动结束后kernel阶段的显示效果图
通过研究uboot启动流程,目前发现是在u-boot-2018/drivers/video/sunxi/logo_display/cmd_sunxi_bmp.c 文件中 show_bmp_on_fb 函数之后开始uboot阶段图片渲染.具体渲染逻辑目前还不知道,
在此函数打印相关信息可知,uboot阶段图片大小信息正确,但是效果就是不对,相关打印如下
printf("dst_crop.left:%d\n",dst_crop.left);
printf("dst_crop.right:%d\n",dst_crop.right);
printf("dst_crop.top:%d\n",dst_crop.top);
printf("dst_crop.bottom:%d\n\n",dst_crop.bottom);
printf("cv->stride:%d\n",cv->stride);
printf("cv->base:%x\n",cv->base);
printf("dst_addr_b:%x\n",dst_addr_b);
printf("dst_addr_e:%x\n\n",dst_addr_e);
相关改动如下