高通平台开机logo的修改

方法一:准备一张和LCD分辨率一样大小的png图片logo.png,在高通源码目录device/qcom/common/display/logo下面,有readme.txt文件,里面有说明生成镜像文件的方法:

执行命令:python ./logo_gen.py logo.png,在当前目录下面会生成splash.img,用flash工具将splash.img刷进splash分区即可。
若想将splash.img放进刷机包,则修改刷机包中的rawprogram_unsparse.xml文件:
-<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="" label="splash" num_partition_sectors="20480" physical_partition_number="0" size_in_KB="10240.0" sparse="false" start_byte_hex="0x8a82400" start_sector="283666" />
+<program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="splash.img" label="splash" num_partition_sectors="20480" physical_partition_number="0" size_in_KB="10240.0" sparse="false" start_byte_hex="0x8a82400" start_sector="283666" />

方法二:准备一张png图片logo.png,分辨率不要超过320*200,执行下列命令:
convert logo.png -recolor "0 0 1,0 1 0,1 0 0" logo_new.png
convert -depth 8 logo_new.png rgb:logo_raw.raw
xxd -c16 -i logo_raw.raw > splash.h
用splash.h文件中数组的内容替换bootable/bootloader/lk/platform/msm_shared/include/splash.h中的数组imageBuffer_rgb888,然后重编lk,将生成的emmc_appsboot.mbn烧进单板即可。

注意:方法二需要保证splash分区为空,splash分区非空,方法二是不起作用的,所以用方法二之前,最好先擦除splash分区。原因如下:
 

void display_default_image_on_screen(void)
{
        unsigned i = 0;
        unsigned total_x;
        unsigned total_y;
        unsigned bytes_per_bpp;
        unsigned image_base;
 
        if (!config) {
                dprintf(CRITICAL,"NULL configuration, image cannot be displayed\n");
                return;
        }
 
        fbcon_clear(); // clear screen with Black color
 
        total_x = config->width;
        total_y = config->height;
        bytes_per_bpp = ((config->bpp) / 8);
        image_base = ((((total_y/2) - (SPLASH_IMAGE_HEIGHT / 2) - 1) *
                        (config->width)) + (total_x/2 - (SPLASH_IMAGE_WIDTH / 2)));
 
#if DISPLAY_TYPE_MIPI
        if (bytes_per_bpp == 3) {
                for (i = 0; i < SPLASH_IMAGE_HEIGHT; i++) {
                        memcpy (config->base + ((image_base + (i * (config->width))) * bytes_per_bpp),
                        imageBuffer_rgb888 + (i * SPLASH_IMAGE_WIDTH * bytes_per_bpp),
                        SPLASH_IMAGE_WIDTH * bytes_per_bpp);
                }
        }
        fbcon_flush();
#if DISPLAY_MIPI_PANEL_NOVATEK_BLUE
        if(is_cmd_mode_enabled())
                mipi_dsi_cmd_mode_trigger();
#endif
 
#else
        if (bytes_per_bpp == 2) {
                for (i = 0; i < SPLASH_IMAGE_HEIGHT; i++) {
                        memcpy (config->base + ((image_base + (i * (config->width))) * bytes_per_bpp),
                        imageBuffer + (i * SPLASH_IMAGE_WIDTH * bytes_per_bpp),
                        SPLASH_IMAGE_WIDTH * bytes_per_bpp);
                }
        }
        fbcon_flush();
#endif
}
 
void display_image_on_screen(void)
{
#if DISPLAY_TYPE_MIPI
        int fetch_image_from_partition();
 
        if (fetch_image_from_partition() < 0) {
                display_default_image_on_screen();
        } else {
                /* data has been put into the right place */
                fbcon_flush();
        }   
#else
        display_default_image_on_screen();
#endif
}

lk运行后,程序会bootable/bootloader/lk/dev/fbcon/fbcon.c文件中的display_image_on_screen函数,它会从splash分区获取图像数据,如果成功,就直接将splash分区中的图像数据显示在LCD上,获取失败才会调用fbcon_flush函数,该函数将imageBuffer_rgb888数组中的内容显示在LCD上。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值