mtk 6580平台uboot logo与kernel logo绘制

要了解uboot logo与kernel logo的绘制,先了解lk和kernel的启动。要了解系统的启动步骤,最好的方式就打印uart log。

在启动uboot之前,我们先了解下preloader的启动。

大家可以看这篇文章《mtk preloader流程简介》https://blog.csdn.net/MrDongShiYi/article/details/85243751?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare

这里简单说一下,

preloader流程简介

1、启动流程 (1)设备上电起来后,跳转到Boot ROM(不是flash)中的bootcode中执行把pre-loader加载起到ISRAM, 因为当前DRAM(RAM分SRAM跟DRAM,简单来说SRAM就是cache,DRAM就是普通内存)还没有准备好,所以要先把pre-loaderload到芯片内部的ISRAM(Internal SRAM)中。

(2)preloder的主要工作是初始化环境,包括c环境,timer,gpio,pmic,uart,i2c等以及装载LK镜像至DRAM中。

(3)如果实现了ATF,preloader加载完lk分区后,还会加载tee分区,在设置好环境后,会先跳转到EL3。

(4)EL3回到lk,执行lk流程,preloader流程结束

接下来讲讲LK的启动:

LK 的启动流程

lk的入口是在以下文件vendor\mediatek\proprietary\bootable\bootloader\lk\kernel\main.c  kmain{}。

kmain函数中执行平台的初始化。

platform_early_init{

    platform_init_interrupts();--中断初始化

    platform_early_init_timer();--时钟初始化

    uart_init_early();--串口初始化

    platform_k64_check();

    i2c_hw_init();--i2c初始化

    leds_init();--点亮背光

 

}

platform_init{

    mt_disp_init---启动lcd

    mt_disp_show_boot_logo--显示第一个logo,uboot logo

}

mt_disp_show_boot_logo就是显示uboot logo的地方。

void mt_disp_show_boot_logo(void)

{

    dprintf(0, "[lk logo: %s %d]\n",__FUNCTION__,__LINE__);    

    mt_logo_get_custom_if();

 

    if(logo_cust_if->show_boot_logo)

    {

        logo_cust_if->show_boot_logo();

    }

    else

    {

//从 log中打印可知,logo 绘制走这里

        ///show_logo(0);

        init_fb_screen();

        fill_animation_logo(BOOT_LOGO_INDEX, mt_get_fb_addr(), (void *)mt_get_tempfb_addr(), logo_addr, phical_screen);

        mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT);

    }

 

    return;

}

BOOT_LOGO_INDEX指的是logo 资源所在地址的索引。

我们在看看logo是怎么编译进去的。在logo目录的update文件中可以看到。

uboot_logo index是0,kernel_logo index为38

这样就可以跟代码对应起来了。如果需要添加多张logo,进行切换,只要切换index就可以显示不同的logo了。同时logo目录的update文件也需要对应的修改。

下面看看kernel logo绘制的地方。从logo打印,可以找到是走show_kernel_logo函数。

void show_kernel_logo()

{

    if (MTK_LOG_ENABLE == 1) {

        SLOGD("[libshowlogo: %s %d]show kernel logo, index = 38 \n",__FUNCTION__,__LINE__);

    }

    if (error_flag == 0) {

#if defined(MTK_CARRIEREXPRESS_PACK)

        anim_show_logo(get_logo_index(false));

#else

        anim_show_logo(kernel_logo_position);//绘制kernel logo,kernel_logo_position=38

#endif

    }

这个函数是在boot_logo_updater.c main函数调用的。

当启动完lk后,就会启动boot_logo_updater.rc进程服务。

# Update the second boot logo

service bootlogoupdater /system/bin/boot_logo_updater

    class core

    oneshot

uboot logo与kernel logo绘制就是这两个地方。大家看了就知道怎么添加多logo了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rk uboot logo分区是在Rockchip平台下的U-Boot bootloader中的logo区域。这个分区用于存储设备启动时显示的品牌LOGO或者其他的图形界面。在启动期间,当设备进入U-Boot bootloader时,该区域的图像将会被显示。 RK U-Boot logo分区通常包含了厂商的标志或者是其他品牌部署需要的图形,这个分区被称为boot logo分区。这里的rk是指Rockchip,一个集成电路设计公司。 RK U-Boot logo分区一般体积较小,往往只有几十KB或数百KB大小。管理这个分区可以使用命令行或者其他专门的软件,这些软件可以负责将图像文件写入分区。 RK U-Boot logo分区的重要性在于能够为厂商不仅仅提供一个标志,同时确保了良好的用户体验。现在,品牌LOGO已经成为了区分产品的一种方式,而这个分区也强调了不同平台的不同体系架构,并提供了一个共同的工具,用于管理各种设备的启动菜单和图形元素。 ### 回答2: rk uboot logo分区是申威科技公司针对RK处理器平台开发的一种开机logo显示方案。该方案采用uboot引导程序进行控制,通过分区的方式实现logo显示。 在rk uboot logo分区方案中,将显示logo的资源文件打包成一个固定格式的文件,并将其烧录至特定的分区中。uboot在启动时会自动加载该分区的logo资源文件,然后在屏幕上显示logo图案。 与传统的开机logo显示方案相比,rk uboot logo分区的优势在于其灵活性和可重用性。由于logo资源文件与系统分开存放,因此可以方便地更新或修改logo样式。同时,不同型号的产品也可以共用同一套logo资源文件,减少开发成本和时间。 总之,rk uboot logo分区是一种简单易用、灵活可靠的系统开机logo显示方案,已经得到越来越广泛的应用。 ### 回答3: rk uboot logo分区是指在嵌入式设备中,使用Rockchip处理器的uboot引导程序时,将不同的logo图标分区存储在该设备的闪存中,通过uboot程序调用不同的logo图标来显示在启动过程中。 Rockchip处理器是当前市场上使用最广泛的一款嵌入式处理器,其uboot引导程序是启动整个系统的重要组成部分。而通过使用rk uboot logo分区技术,可以为不同的设备制作独特的启动logo,提升品牌形象和用户体验。 rk uboot logo分区技术的实现过程是将多个不同的logo图标按照设备型号、版本等分类,存储在闪存的不同分区中。当设备启动时,uboot程序会根据设备的型号、版本等信息读取相应的logo图标,并将其显示在屏幕上。这样做的好处是可以提升品牌形象和用户体验,增强用户对产品的信任感和归属感。 总之,rk uboot logo分区技术是一种高效的嵌入式设备启动logo管理方式,可以为不同的设备生产独特的logo图标,提升品牌形象和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值