MT6589 暗码更改开机LOGO
一。lk logo 修改
     1.  kernel\kernel\ power\main.c  (创建节点,控制logo切换状态)
#if 1//HIGUA
// for set_env() by mtk
#include <mach/env.h>
#endif

...
#if 1// HIGUA
ssize_t custom_changelogo_show(struct kobject *kobj,
                                       struct kobj_attribute *attr,
                                       char *buf)
{
        char *val = NULL;
        if(NULL != get_env("changelogo")){
                val = get_env("changelogo");
        }
        return sprintf(buf, "%s\n", val);  
}
/*---------------------------------------------------------------------------*/
ssize_t custom_changelogo_store(struct kobject *kobj, struct kobj_attribute *attr,
                         const char *buf, size_t n)
{  
    if(!strncmp(buf,"1",1))
    {   
        set_env("changelogo", "1");
    }   
    else if(!strncmp(buf,"0",1))  
    {   
        set_env("changelogo", "0");
    }   
    return n;
}

static struct kobj_attribute custom_changelogo_attr = {
        .attr        = {
                .name = "custom_changelogo",
                .mode = 0777,
        },
        .show        = custom_changelogo_show,
        .store        = custom_changelogo_store,
};
#endif

static struct attribute * g[] = {
...
#if 1// HIGUA
        &custom_changelogo_attr.attr,
#endif
        NULL,

}

2. mediatek\platform\mt6589\lk\mt_logo.c (根据logo状态显示不同的logo)
//这里的 38 是 自定义logo的显示序号 在下面会介绍
void mt_disp_show_boot_logo(void)
{
...
                #if 1//higua change logo
        if(get_env("changelogo") != NULL && atoi(get_env("changelogo")) == 1){
            show_logo(0);
        }else{
            show_logo(38);   
        }
                #else
                show_logo(0);
                #endif
        mt_disp_update(0, 0, CFG_DISPLAY_WIDTH, CFG_DISPLAY_HEIGHT);

...
}

3.mediatek\platform\mt6589\lk\platform.c  (现在一进入recovey 就会设置 切换logo的属性,正常的应该是在恢复出厂设置的时候 )
void sw_env()
{

...
#if 1 // higua restore change logo
        if(g_boot_mode == RECOVERY_BOOT){
                set_env("changelogo","1");
        }
#endif

#ifndef USER_BUILD   
    switch (g_boot_mode)
    {
      case META_BOOT:

...
}
   4. mediatek\custom\common\lk\logo\rules.mk (添加 logo 图片)
       上面用到的 38 序列号 就是  RESOURCE_OBJ_LIST 所有文件的顺序, 添加的logo 是第38个位置的图片
            $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_bat_100.raw \
             $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_normal_uboot.raw \
            $(BOOT_LOGO_DIR)/$(BOOT_LOGO)/$(BOOT_LOGO)_kernel.raw

还需要在 对应的 logo目录里添加一张BMP图片
     例: 我们的工程是 cu_hd720 所以在  cu_hd720 文件夹下添加 一张 cu_hd720_normal_uboot.bmp 图片
      mediatek\custom\common\lk\logo\cu_hd720\cu_hd720_normal_uboot.bmp

二。kernel logo 修改
     1.mediatek\external\boot_logo_updater\boot_logo_updater.c (判断是否显示临时的logo文件)
   int main(void)
{
...
    // (3) open logo file
#if 1//higua
    if ((fd = open("/data/mdl/local_boot_logo", O_RDONLY)) < 0) {
        if ((fd = open(LOGO_PATH, O_RDONLY)) < 0) {
                        fprintf(stderr, "failed to open logo file: %s\n", LOGO_PATH);
                        goto done;
                }
    }
#else
    if ((fd = open(LOGO_PATH, O_RDONLY)) < 0) {
        fprintf(stderr, "failed to open logo file: %s\n", LOGO_PATH);
        goto done;
    }
#endif
    // (4) map framebuffer

...
}
三。开机动画 修改
      1.<a class="relatedlink" href="http://bbs.16rd.com/misc.%3Ca%20href=" target="_blank" forum-355-1.html"="" bbs.16rd.com="">php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\base\cmds\bootanimation\BootAnimation.cpp
status_t BootAnimation::readyToRun() {
...
    if (bBootOrShutDown) {
        status_t err = mZip.open("/data/local/bootanimation.zip");
                XLOGD("[BootAnimation %s %d]err=%d,%s,/data/local/bootanimation.zip",__FUNCTION__,__LINE__,err,strerror(-err));
                #if 1//higua
        if (err != NO_ERROR) {
           err = mZip.open("/data/mdl/bootanimation.zip");
                   XLOGD("[BootAnimation %s %d]err=%d,%s,/data/mdl/bootanimation.zip",__FUNCTION__,__LINE__,err,strerror(-err));
                }
                #endif
        if (err != NO_ERROR) {
           err = mZip.open("/system/media/bootanimation.zip");
                   XLOGD("[BootAnimation %s %d]err=%d,%s,/system/media/bootanimation.zip",__FUNCTION__,__LINE__,err,strerror(-err));
           if (err != NO_ERROR) {
               m androidAnimation = true;
           }
        }
    } else {
        if (!bShutRotate) {
            status_t err = mZip.open("/data/local/shutanimation.zip");
                XLOGD("[BootAnimation %s %d]err=%d,%s,/data/local/shutanimation.zip",__FUNCTION__,__LINE__,err,strerror(-err));
                  #if 1//higua
        if (err != NO_ERROR) {
            err = mZip.open("/data/mdl/shutanimation.zip");
                    XLOGD("[BootAnimation %s %d]err=%d,%s,/data/mdl/shutanimation.zip",__FUNCTION__,__LINE__,err,strerror(-err));
                }
                #endif
                 if (err != NO_ERROR) {
                err = mZip.open("/system/media/shutanimation.zip");
                        XLOGD("[BootAnimation %s %d]err=%d,%s,/system/media/shutanimation.zip",__FUNCTION__,__LINE__,err,strerror(-err));
                if (err != NO_ERROR) {
                        mAndroidAnimation = true;
                }
            }
        } else {
            status_t err = mZip.open("/data/local/shutrotate.zip");

...
}
四。快速开机修改
   1.mediatek\external\ipod\bootlogo.cpp (之前没改到这里,启动快速开机 的时候 lk,kernel 都没生效,今天才解决这问题)
void mt65xx_boot_logo_updater_init(void)
{

...
        // (3) open logo file
#if 1//higua
    if ((fd = open("/data/mdl/local_boot_logo ", O_RDONLY)) < 0) {
        if ((fd = open(LOGO_PATH, O_RDONLY)) < 0) {
                fprintf(stderr, "[ChargingAnimation]failed to open logo file: %s\n", LOGO_PATH);
                        goto done;
                }
    }
#else
        if ((fd = open(LOGO_PATH, O_RDONLY)) < 0) {
        fprintf(stderr, "[ChargingAnimation]failed to open logo file: %s\n", LOGO_PATH);
        goto done;
        }
#endif
        // (5) copy the 2nd logo to surface info

...
}
...
#if 1//higua
static int custom_show_local_logo(void)
{
        int fd = -1;
    if ((fd = open( "/data/mdl/local_boot_logo " , O_RDONLY)) >= 0){
                close(fd);
                return 1;
        }
        return 0;
}
#endif
        
void mt65xx_disp_show_boot_logo(void)
{
        XLOGD("[ChargingAnimation %s %d]index = 0 ,x_virtual=%d, vinfo.yres=%d \n",__FUNCTION__,__LINE__,x_virtual, vinfo.yres);
        
    Region    region(Rect(0, 0, x_virtual, vinfo.yres));
        status_t  lockResult = surface->lock(&info, ®ion);  
        XLOGD("[ChargingAnimation %s %d]info.bits = 0x%08x\n",__FUNCTION__,__LINE__, info.bits);
        XLOGD("[ChargingAnimation %s %d]surface->lock return =  0x%08x,  %d\n",__FUNCTION__,__LINE__,lockResult,lockResult);
        if (0 == lockResult)
        {
                #if 1//higua
                if(1 == custom_show_local_logo()){
                        show_logo_surface(38);
                } else {
                        show_logo_surface(0);
                }
                #else
                show_logo_surface(0);
                #endif
                surface->unlockAndPost();
        }
    return;
}

...

MTK 6589暗码切换开机LOGO(不适应NAND 的FLASH)相关推荐

  1. 开机logo切换逻辑深入研究

    增加暗码命令切换开关机logo功能 u-boot logo显示原理: 1.----Little Kernel会在platform_early_init阶段首先会获取lcm params,其工作流 程就 ...

  2. Android系统之Mtk开机logo镜像单独制作(不用全编译代码)

    一.问题背景 在我们客制系统版本时,经常有时候会有需求就是单独更新一个客制logo,如果每次仅仅就是更改一个开机logo,我们每次都需要有一个完整编译的out,也就意味着可能要全编,这想必是非常低效率 ...

  3. MTK开机LOGO图片的显示原理

     MTK开机LOGO图片的显示原理 一.图片的定义 1 1.1.update脚本 1 1.2.rules.mk脚本 2 1.3.图片的宏定义cust_display.h(索引序列号) 3 二.LO ...

  4. MTK平台修改开机动画,开机logo

    修改开机logo 找到目录 trunk/mediatek/custom/common/lk/logo/ 该目录下面有很多的文件夹,都是在不同分辨率下面的logo 要修改的话就看需要修改哪个分辨律下面的 ...

  5. MTK平台修改Android动画,Android MTK平台修改开关机动画和开机logo

    转载请注明出处:http://blog.csdn.net/u011479494/article/details/50682089 一.修改开机logo 由于我的机器分辨率为540*960 替换:med ...

  6. Android MTK平台修改开关机动画和开机logo

    转载请注明出处:http://blog.csdn.net/u011479494/article/details/50682089 一.修改开机logo 由于我的机器分辨率为540*960 替换:med ...

  7. Android MTK 6572 修改开机logo和开机动画

    1.     开机logo 因为我们显示屏分辨率480*800,所以 \mediatek\config\hsimobile77_ics2\ProjectConfig.mk下的BOOT_LOGO=wvg ...

  8. Android10.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)

    拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.开机动画横屏 3.开机logo.关机充电动画横屏 4. ...

  9. Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)

    文章较长建议先收藏再看 拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.屏幕触摸坐标修改为横屏 3.开 ...

  10. mtk使用android开关机动画,Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)...

    文章较长建议先收藏再看 拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.屏幕触摸坐标修改为横屏 3.开 ...

最新文章

  1. hibernate中的hql查询语句list查询所有与iterate查询所有的区别
  2. 唱好铁血丹心谐音正规_济南公司起名:四个字寓意好的公司名字怎么样选择?...
  3. 【0521模拟赛】小Z爱数学
  4. 一种解决hadoop搭建出现的各种问题的简单粗暴的办法
  5. 2018年第九届省赛C/C++A组第3题——乘积尾零
  6. PRDICQR and PRD01QR
  7. mingw64 下 java_在 Windows 10 64 位下安装 Mingw-w64
  8. [故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
  9. C++11 tuple的使用
  10. 内置模块/核心模块 (自带的)---http 服务器模块
  11. Windows下JetBrains CLion的pthread使用配置
  12. android系统app打开蓝牙+设置可见性
  13. 聊聊索引失效的10种场景,巨坑
  14. Zalo超级群控 2021版[企业版]
  15. 蚂蚁链发布BTN,有什么用?
  16. html放大镜小图标,canvas初尝试之放大镜图标绘制
  17. 微生物组数据系统发育分析的方法
  18. off-by-one error
  19. postman——基础操作——API请求与响应——构造器
  20. 计算机在职双证博士的学校,双证在职博士招生院校有哪些?

热门文章

  1. IT行业都有哪些职位
  2. 蚂蚁金服高要求的领域建模能力,对研发来说到底指什么?
  3. 北京圣思园java视频教程全套_北京圣思园Java8新特性及实战视频教程完整版
  4. Html post易语言服务器,POST其实很简单 15 易语言模块之精易模块
  5. 插值算法(最邻近差值、双线性插值、双三次插值)
  6. 通达OA定时任务-未打卡提醒
  7. 在线硬盘存储计算机,【模拟攒机-模拟装机】在线攒电脑-ZOL中关村在线
  8. linux mint 中文字体,Ubuntu和Linux Mint自定义全局字体
  9. 如何把手机投影到电脑,电脑可以当作电视一样被投屏
  10. MGS摄像头:USF56S335_3238_V2 IMX335 5MP UVC应用手册