MTK 8217平台Android Recovery运行与修改解析

需积分: 48 12 下载量 51 浏览量 更新于2024-09-09 收藏 137KB PDF 举报
"本文主要介绍了Android Recovery的运行流程,特别是基于MTK 8217平台的实现。" Android Recovery是Android系统中的一个重要组件,它主要用于系统更新、数据备份和恢复出厂设置等操作。在MTK 8217平台上,Recovery的运行流程主要涉及以下几个步骤: 1. **启动流程**:Recovery程序启动始于`board.c`中的`start_armboot()`函数。这里首先会检查设备是否处于恢复模式。通过`check_recovery_mode()`函数来判断,如果是通过触摸屏(如AC83XX平台的触控芯片)按下触发恢复模式,或者特定的标志位设置,将会进入Recovery流程。 2. **触摸屏检测**:`#ifdef CONFIG_AC83XX_TOUCH` 和 `#ifdef CONFIG_AC83XX_TP` 分别针对不同的触摸屏配置进行检查,如果检测到触摸屏被按下,`check_rtouch_pressed()`或`check_ctouch_pressed()`将返回true,使得设备进入Recovery模式。 3. **环境变量设置**:如果满足进入Recovery模式的条件,`setup_recovery_env()`函数会被调用,这通常涉及到设置环境变量`Bootcmd`为`CONFIG_RECOVERY_BOOTCMD`。这个变量在系统启动时被检查,以确定是否应该进入Recovery模式。 4. **正常启动与Recovery启动的差异**:在U-Boot和内核阶段,无论是正常启动还是Recovery模式,大部分流程基本相同。区别在于传递给内核的命令行参数中,正常启动使用`ramdisk.gz`,而Recovery模式使用`recovery.gz`。这两个压缩包由`genram.sh`和`genrecovery.sh`脚本生成,它们包含不同的`root.tar`文件内容。 5. **init.rc的区别**:在Recovery环境下,`init_for_recovery.rc`(即Recovery下的`init.rc`前身)与系统的`init.rc`有所不同。在`init_for_recovery.rc`中,挂载的SD卡和USB位置不同,创建的目录较少,并且只加载了一些必要的内核模块(ko文件)。 Recovery模式的实现依赖于对这些配置和脚本的精确控制,确保在用户需要时能够正确执行系统恢复操作。通过了解这一流程,开发者可以更好地定制和优化Android设备的恢复功能。