imx6 手动进入recovery
写在前面
平板项目,需要音量减+关机键进入recovery模式。中间遇到了一些问题,记录一下。
配置音量键
uboot启动以后会检测音量上下键是否被按,然后进入不同的分支
board/freescale/common/recovery.c
/* export to lib_arm/board.c */
void check_recovery_mode(void)
{if (check_key_pressing()) {puts("Fastboot: Recovery key pressing got!\n");setup_recovery_env();} else if (check_recovery_cmd_file()) {puts("Fastboot: Recovery command file found!\n");setup_recovery_env();} else {puts("Fastboot: Normal\n");}
}
#define GPIO_VOL_DN_KEY IMX_GPIO_NR(2, 1)
iomux_v3_cfg_t const recovery_key_pads[] = {(MX6_PAD_NANDF_D1__GPIO2_IO01 | MUX_PAD_CTRL(NO_PAD_CTRL)),
};int check_recovery_cmd_file(void)
{int button_pressed = 0;int recovery_mode = 0;recovery_mode = recovery_check_and_clean_flag();/* Check Recovery Combo Button press or not. */imx_iomux_v3_setup_multiple_pads(recovery_key_pads,ARRAY_SIZE(recovery_key_pads));gpio_direction_input(GPIO_VOL_DN_KEY); //由此可见,uboot阶段,会读取一个gpio口,把这个gpio设置为自己主板对应的就能进入recovery了if (gpio_get_value(GPIO_VOL_DN_KEY) == 0) { /* VOL_DN key is low assert */button_pressed = 1;printf("Recovery key pressed\n");}return recovery_mode || button_pressed;
}
图形模式和show_text模式
上面已经做好了开机时按住音量减进入recovery模式,但是发现进入recovery后,什么显示都没有。
然后在代码中发现了,由show_text这个变量,如果像要有问题提示,就要把show_text变量设置为1,这个变量的修改是从/cache/recovery/command文件中解析出来的
然后我正常进入系统,执行下面的命令,成功进入带文字提示的recovery
echo "--show_text" > /cache/recovery/command
static const struct option OPTIONS[] = {{ "send_intent", required_argument, NULL, 's' },{ "update_package", required_argument, NULL, 'u' },{ "wipe_data", no_argument, NULL, 'w' },{ "wipe_cache", no_argument, NULL, 'c' },{ "show_text", no_argument, NULL, 't' },{ "just_exit", no_argument, NULL, 'x' },{ "locale", required_argument, NULL, 'l' },{ "stages", required_argument, NULL, 'g' },{ "shutdown_after", no_argument, NULL, 'p' },{ "reason", required_argument, NULL, 'r' },{ NULL, 0, NULL, 0 },
};
//bootable/recovery/recovery.cpp
main()
{......int wipe_data = 0, wipe_cache = 0, show_text = 0;......while ((arg = getopt_long(argc, argv, "", OPTIONS, NULL)) != -1) {switch (arg) {case 's': send_intent = optarg; break;case 'u': update_package = optarg; break;case 'w': wipe_data = wipe_cache = 1; break;case 'c': wipe_cache = 1; break;case 't': show_text = 1; break;case 'x': just_exit = true; break;case 'l': locale = optarg; break;case 'g': {if (stage == NULL || *stage == '\0') {char buffer[20] = "1/";strncat(buffer, optarg, sizeof(buffer)-3);stage = strdup(buffer);}break;}case 'p': shutdown_after = true; break;case 'r': reason = optarg; break;case '?':LOGE("Invalid command argument\n");continue;}}
}
根据项目需要,用户从过app升级/恢复出厂,要进入图形模式,手动按键进入recovery,要进入文字模式。
修改代码如下,解决问题
main()
{......int wipe_data = 0, wipe_cache = 0, show_text = 1;......while ((arg = getopt_long(argc, argv, "", OPTIONS, NULL)) != -1) {switch (arg) {case 's': {send_intent = optarg; break;}case 'u': {show_text = 0; update_package = optarg; break;}case 'w': {show_text = 0; wipe_data = wipe_cache = 1; break;}case 'c': {show_text = 0; wipe_cache = 1; break;}case 't': {show_text = 1; break;}case 'x': {show_text = 0; just_exit = true; break;}case 'l': {locale = optarg; break;}case 'g': {if (stage == NULL || *stage == '\0') {char buffer[20] = "1/";strncat(buffer, optarg, sizeof(buffer)-3);stage = strdup(buffer);}break;}case 'p': shutdown_after = true; break;case 'r': reason = optarg; break;case '?':LOGE("Invalid command argument\n");continue;}}
}
也就是,默认是显示文字,不显示图形的。 如果用户通过app进行恢复出厂/升级系统,那么设置show_text=0,进入图形模式。
imx6 手动进入recovery相关推荐
- imx6 android4.4 Recovery添加从U盘升级功能
Platform: imx6 OS: Android 4.4 device/fsl 目录: [plain] view plaincopy diff --git a/common/recovery/An ...
- 各个品牌常见机型的手动进入Recovery的方法
HTC 机型: 完全关机(某些机型还需要拔插电池确保完全关闭电源)后,同时按住[音量-]和[电源键]进入 Bootloader,然后使用音量键上下选择到[Recovery],最后按下电源键确认即可进入 ...
- mate7刷android 6.0,华为Mate7 6.0系统刷recovery_Mate7 6.0专用第三方recovery
在这里说一下咱们的华为Mate7的6.0的系统专用的第三方recovery了,有没有需要的呢,之前看到有机友的手机系统升级到6.0的系统了,可是对于6.0的系统很多人比较无奈,因为不知道如何刷第三方r ...
- html恢复安卓版,recovery恢复模式 进入Recovery模式前
重启到恢复模式recovery是什么意思? 安卓手机怎么进入recovery模式恢复 进入Recovery模式前 怎样进入LG G3的Recovery恢复模式 手机关机10秒以上,确认完全关机状态下同 ...
- 魅蓝2 刷 android,魅蓝2全系列-解锁BootLoader完整版+刷入第三方recovery+刷入第三方ROM教程...
本教程适合于魅族魅蓝2手机,由于魅族解锁BL门槛较高,如果你真的是小白,不敢折腾 请不要往下看,如何你是敢于动手,那么就继续往下看,跟着教程走,百分百可以成功 文件下载: 也可以关注微信公众号:ROM ...
- 红米5双清_红米5刷recovery教程_红米5第三方中文recovery下载
也来把咱们的这个红米5手机如何刷recovery的教程来分享一下了,为什么要说这个recovery呢,因为这个recovery是第三方的recovery了,这个第三方的recovery可以给手机进行相 ...
- linux如何给手机刷recovery,给安卓手机刷Recovery的方法
给安卓手机刷Recovery的方法 给安卓手机刷Recovery(恢复模式)的方法有许多,一般采用的都是通过数据线连接电脑完成.这次带来的则是完全不用连接电脑的安卓手机卡刷Recovery教程. 卡刷 ...
- Shopify开店建站营销推广卖家平台后台中文指南 – Abandoned checkout recovery/挽救弃单
什么是Abandoned checkout? 有时候,顾客可能会把商品加入购物车,以进行结账,但在付款的最后一步却放弃了支付, 不管出于什么样的原因,任何未成功支付的订单Shopify将视其并存储为弃 ...
- Android Recovery升级原理
文章目录 Android Recovery升级原理 声明 摘要 1. Recovery相关概念 2. Android系统的启动模式 2.1 Android 各个分区介绍 2.2 Android的启动模 ...
最新文章
- elasticsearch-.yml(中文配置详解)
- 干货!用大白话告诉你什么是Mock测试
- vue 加载页面时触发时间_解析Vue项目的四个方面优化
- 修改sga后oracle打不开的解决方法
- 桌面计算机密码应由哪项组成,计算机应用能力考试模拟试题
- 景切换的时候加上遮罩
- ViewResolvers
- Python getattr
- numpy的sum函数、mean函数
- jsp中使用jsp:include /在切换tomcat版本时遇到的问题
- 呼叫转移流程分析(一)
- 发出警报声的c语言程序,1、编写一个函数能够发出警报声并打印HelloWorld!;
- css字间距 与 Photoshop里字间距关系
- Macintosh30周年回顾视频 ---转自36kr
- QT美化使用字体图标
- 淘宝新上架的产品如何在站内SEO优化
- 安全邮箱是什么,163邮箱安全中心,安全邮箱怎么注册?
- 传感器(7)加速传感器,重力传感器,邻近传感器,光线传感器 综合示例
- 与《代码大全》齐名的经典著作 1
- TCP Flood攻击实验