600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 为MTK andorid系统添加adb reboot factory命令

为MTK andorid系统添加adb reboot factory命令

时间:2023-10-14 01:31:03

相关推荐

为MTK andorid系统添加adb reboot factory命令

此添加方法,通过重启命令的参数修改RTC模块的的一个端口的一位寄存器,待重新启动后通过读取改为的值来选择进入normal模式还是factory模式。

(1)mediatek/platform/mt6582/kernel/core/include/mach/mt_rtc_hw.h文件修改:

添加代码:

#defineRTC_PDN1_FACTORY (1U<<5) //将RTC_PDN1口的第五位设置成命令标志位

(2)mediatek/kernel/kernel/system.c文件修改:

在函数void arch_reset(char mode, const char *cmd)的定义内添加:

if(cmd && !strcmp(cmd,"factory")){

rtc_mark_factory();

} //cmd即adb reboot 后面的参数,当参数为factory时,通过rtc_mark_factory()修改命令标志位。

(3)mediatek/kernel/include/mach/mtk_rtc.h文件修改:

添加代码:

extern void rtc_mark_factory(void);

(4)mediatek/kernel/drivers/rtc/mtk_rtc_common.c文件修改:

添加代码:

vodi rtc_mark_factory(void)

{ unsigned long flags:

spin_lock_irqsave(&rtc)lock,flags);

hal_rtc_mark_mode("fact");

spin_unlock_irqrestore(&rtc_lock,flags);

}

(5)mediatek/platform/mt6582/kernel/drivers/rtc/mtk_rtc_hal.c文件修改:

在函数 void hal_rtc_mark_mode(const char *cmd)的定义中添加:

if(!strcmp(cmd,"fact")){

pdn1 = rtc_read(RTC_PDN1) & (~RTC_PDN1_FACTROY);

rtc_write(RTC_PDN1,pdn1 |RTC_PDN1_FACTORY);

} //真正修改标志位,置RTC_PDN1_BIT5标志位为1

以上5步,是命令发出后,手机重启前进行相关操作所涉及的修改

(6)mediatek/platform/mt6582/lk/facotry.c文件修改:

在函数 bool factory_detection(void)函数的定义中添加:

#if 1

if(Check_RTC_PDN1_bit5())

{

dprintf(INFO,"[FACTORY] reboot to factory mode \n");

g_boot_mode = FACTORY_BOOT;

Set_Clr_RTC_PDN1_bit5(false);

return TRUE;

}

#endif // 确认RTC_PDN1_bit5标志位,进入factory mode

(7)mediatek/platform/mt6582/lk/include/platform/mt_rtc.h文件修改:

添加代码:

extern void Set_Clr_RTC_PDN1_bit5(bool flag);

extern void bool Check_RTC_PDN1_bit5(void);

(8)mediatek/platform/mt6582/lk/mt_rtc.c文件修改:

添加代码:

void Set_Clr_RTC_PDN1_bit5(bool flag)

{ U16 pdn1;

rtc_writeif_unlock();

//use PDN BIT 5 for LK

pdn1 = RTC_Read(RTC_PDN1);

if (flag == true)

pdn1 = pdn1 | RTC_PDN1_FACTORY;

else if (flag == false)

pdn1 = pdn1 & ~RTC_PDN1_FACTORY;}

RTC_Write(RTC_PDN1,pdn1);

rtc_write_trigger();

}

bool Check_RTC_PDN1_bit5(void)

{

U16 pdn1;

pdn1 = RTC_Read(RTC_PDN1);

if(pdn1 & RTC_PDN1_FACTORY)

return true;

else

return false;

}

(9)最后,修改/mediatek/config/$project$/ProjectConfig.mk

添加代码: MTK_USER_ROOT_SWITCH=yes 、//打开重启开关

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。