android 升级流程分析

             在android中有多种方式可以进入recovery模式进行升级,这里只对判断misc分区进行升级做分析。其他方式的资料网上都很全面了。感谢那些做出贡献的大虾!

         系统上电fastboot在初始化硬件之后,就会去读misc分区。根据该分区的内容来判断是进入recovery模式还是正常启动!该分区存放的是一个bootloader_message结构体,fastboot会读取该结构体的command的内容判断是否为"boot-recovery",如果是就进入recovery。否则会正常启动。

结构体如下:

struct bootloader_message {
    char command[32];
    char status[32];
    char recovery[1024];
};

    网上很多资料都没对misc分区是什么时候写的做介绍!下面将详细介绍这个流程!当用户选择设置->升级->确认后,  会调用到SystemUpdate-JNI ,在system/lib下会有一个libupdatexxx.so,名字可以手动改得。在这个so里面有set_sdcard_update_bootloader_message()的接口,无论是升级还是回复出厂设置,都会调用该接口,该函数会调用到另外一个函数set_bootloader_message()。这个函数就是写真正写misc的地方。只有该函数成功执行之后,系统重启才会进入recovery模式,否则reset之后就直接正常启动了。不会进行升级。所以这个地方就是进入升级的关键地方了

    其实除了在set_bootloader_message中写过misc分区之外。还有一个地方会写misc分区。在系统进入recovery模式之后之后,会执行/sbin/recovery这个可执行程序,recovery这个可执行程序的入口是mian()。在mian()中有一个get_args(arc,agv)

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值