amlogic_android7.1的s905x平台长按按键5s清除数据和缓存的实现思路

简要说明实现逻辑:开机common(即常说的kernel目录,amlogic是common目录)中通过长按reset键(例如5s)来识别设置reboot mode 模式(通过meson_common_restart函数传参cmd,例如cmd设置为reboot_clear,当识别到cmd参数为reboot_clear时设置reboot_reason的属性值为MESONGXBB_FACTORY_RESET_REBOOT,然后去设置对应的寄存器,让系统重启的时候进入对应的模式即可,例如),

66 static u32 parse_reason(const char *cmd)
 67 {
 68         u32 reboot_reason;
 69         reboot_reason = MESONGXBB_NORMAL_BOOT;
 70         if (cmd) {
 71                 if (strcmp(cmd, "recovery") == 0 ||
 72                                 strcmp(cmd, "factory_reset") == 0)
 73                         reboot_reason = MESONGXBB_FACTORY_RESET_REBOOT;
 74                 else if (strcmp(cmd, "update") == 0)
 75                         reboot_reason = MESONGXBB_UPDATE_REBOOT;
 76                 else if (strcmp(cmd, "fastboot") == 0)
 77                         reboot_reason = MESONGXBB_FASTBOOT_REBOOT;
 78                 else if (strcmp(cmd, "bootloader") == 0)
 79                         reboot_reason = MESONGXBB_BOOTLOADER_REBOOT;
 80                 else if (strcmp(cmd, "report_crash") == 0)
 81                         reboot_reason = MESONGXBB_CRASH_REBOOT;
 82                 else if (strcmp(cmd, "uboot_suspend") == 0)
 83                         reboot_reason = MESONGXBB_UBOOT_SUSPEND;
 84 #ifdef CONFIG_FACTORY_RESET
 85                 else if (strcmp(cmd, "reboot_clear") == 0)
 86                         reboot_reason = MESONGXBB_FACTORY_RESET_REBOOT;
 87 #endif

说白了就是通过往reboot_reason赋值一个对应的字符串例如reboot_clear,然后,uboot中通过 get_rebootmode 来识别reboot模式. 如果是factory reset reboot,就设置环境变量wipe_data_gt = wipe_data_gt, 然后环境变量wipe_data_gt通过system.prop桥接(在recovery模式的时候在根目录的default.prop文件中,在正常启动的时候在build.prop目录),recovery通过get_bootloader_env读取环境变量wipe_data_gt 的属性,然后设置clear_data标志位,clear_data为true的时候就直接执行清除数据和缓存操作,然后重启设备,clear_data如果是false的时候则进入recovery界面,执行循环等待函数prompt_and_wait,等待用户的操作进入下一步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零意@

您的打赏将是我继续创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值