mtk 6580平台uboot logo与kernel logo绘制

news/2024/11/29 5:27:33/

要了解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了。


http://www.ppmy.cn/news/494649.html

相关文章

MTK6580 Android P版本PSX5415A 快充带OTG调试

之前一直没有记录工作过程的想法,现在开始慢慢想去记录和输出一些东西,废话少说,直奔主题吧。 下面是我在MTK6580 Android P PSC5415A 快充带OTG调试遇到的问题和解决方法。 一,6580 android P版本跑的是4.9的内核,先…

mtk 6580 android 6.0 摄像头假对焦功能

ZoomManager.java FocusManager.java public void onSingleTapUp(int x, int y) { xxxxxxxxxx xxxxxxxxxx } CameraAppUiImpl.java 另外,还加一个假对焦隔几秒会再次对焦的功能,模似自动对焦。 CameraActivity.java Task task; Timer timer;cla…

mtk6580 8.1 如何操作vgp1电压

今天在调试一个外设时,需要用vgp1控制,需要设置3.3v,一直没有输出来。6580 8.1平台tp默认是用vgp1控制的,用下面的代码是可以输出2.8v的 下面是ft的tp驱动部分 int fts_power_init(void) {int ret;/*set TP volt*/tpd->reg regulator_g…

MTK6580调试IMX132流程分析

MTK6580调试IMX132流程分析 一开始不了解 MTK 的点亮流程,怎么办呢? 1 MTK 开机是 首先是 CameraService 先起来,然后就通过获取 HAL 中的 sensorList 中的信息 CameraManager与CameraService通过Binder机制,形成推拉回调 frameworks\base\core\java\android\hardware\ca…

mtk使用android开关机动画,Android MTK6580 客制化关机充电动画

1.客制化关机充电图片 vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/xxx 找到对应分辨率替换 2.调整显示图片位置、大小 vendor/mediatek/proprietary/external/libshowlogo/cust_display.h 3.去掉原充电电池填充及波浪动画 vendor/mediatek/proprietary/boot…

联发科MTK6580安卓通讯智能模块核心板规格书

QL126模块硬件设计指导手册 深圳市褀联科技有限公司 一 、综述 1.1 适用范围 本文档适用的产品是:QL126模块。本核心板是以MT6580 为平台,周围配件主要有MT6350电源模块,存储模块,通过对核心板QL126的介绍, 用以指导…

MTK芯片资料下载,MT6580处理器参数介绍

MT6580处理器概述: MT6580是2015年联发科推出的是一款高度集成的3G系统级芯片(SoC)它集成了先进的功能,例如四核的ARMCortex-A7 MPCoreTM,3D图形(的OpenGL|ES 2.0),8M摄像头,1080p高清视频解码器,并内置RF收发器支持多频GSM,GPRS,EDGE和W-CDMA蜂窝系统。MT6580可以…

一、MTK6580 平台 Camera 驱动整体框架

一、MTK6580 平台 Camera 驱动整体框架 mtk平台三大件调试中,camera的调试难度最大,问题也就最多,为此特地分析了一下整个camera驱动 部分实现过程,以下为camera驱动框架序列图: 从图中可以看出,整个框架分…