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的启动模 ...
最新文章
- HashMap和HashTable区别
- Why to do,What to do,Where to do 与 Lambda表达式!
- layer 弹出框的使用
- Symfony常用指令(收藏版)
- ajax获取网页新闻,基于Ajax的新闻网页动态数据的抓取方法及系统
- Castle 开发系统文章
- 好用的文件对比工具Beyond Compare 4 for Mac 4.4.2
- BIO、NIO、AIO差别
- 多精度数带余除法_算法笔记 (一) 高精度
- 计算机四则运算的原理,计算机组成原理第九讲(除法-补码运算规则及浮点四则运算)(科大罗克露)...
- CNNIC:第35次中国互联网络发展状况统计报告
- Python 保留字和关键字的用法
- 计算机网络安全 的论文,网络安全论文3000字范文参考(3)
- (已解决)网页不显示数学公式||只显示源码
- 聊聊职场 - 个人发展
- 回顾知识点:计算机网络篇
- Libuv Timer定时器
- react脚手架创建项目报错,ReactDOM.render is no longer supported in React 18.
- (开拓者)团队任务2:冲刺前的准备
- 磊科nw336 linux驱动程序,磊科NW336 V2驱动