FOTA升级

原创 2017年01月03日 15:34:40
分以下三个模块分析FOTA升级介绍

        1.在一个高通安卓项目中部署FOTA升级 

        2.Android ota升级的基本过程 

        3.Android ota升级异常分析 

升级:

    从方法上分为整个文件替换,以打patch的方式替换 (diff patch)
    从是否借助外部设备上分为借助外部设备,不借助外部设备  

        1.借助外部设备升级(PC 的fastboot升级,设备芯片的直接烧录)

         2.不借助外部设备升级,一般都有自己特定的升级模式进行升级(Android Fota升级 , 应用市场应用升级FOTA升级) 

Firmware Over-The-Air 固件空中下载技术,主要用于应用的手机领域.

    在FOTA升级出现之前手机制造商和移动网络运营商无法在手机的最重要的18至24个月内进行有效的软件升级.

    FOTA升级应用领域:需要后续升级维护的设备 比如:手机,平板,车载,物联网等Android 

    FOTA升级特点 1.升级system系统应用 2.升级固件,modem sbl1 tz rpm lk boot.img设备 3.生产厂商专属!

Firmware:固件 设备通电之后,进行初始化让元器件正常运行的二进制程序。
                 : rpm高通的资源功耗管理子系统
                 :sbl1 高通的bootlodaer
                 :tz高通安全模块
                 :emmc_appsboot android的bootloader
                 : NON-HLOS调制解调(基带)处理子系统

 芯片厂商提供的很多参数,设备生产厂商根据设备特点配置出来的最合适的硬件参数---固件
如何在一个android项目里部署fota升级
    1.本地编译版本,成功制作ota包
    2.移植对应厂商的ota移植数据
    3.实现本地FOTA升级验证
    4.终端APP界面开发
    5.升级服务器开发
    6.实现一键升级验证

差分包相关  1.升级包编译 2.制作差分包  //3.差分包重签名
升级包编译

    在android目录
    执行 source config.sh
    Make otapackage 
    升级包生成路径out/target/product/{product_name}/ {product_name}-ota-eng.{uid}.zip

添加高通的固件移植就是把编译好了的rpmemmc_aboottz sbl1 NON-HLOS固件添加到与差分包制作相关的文件

制作差分包

与差分包制作相关的文件

    ota_from_target_files

    releasetools.py   

    ota_target_files.zip    -----对package_backup.zip的打包

    releasekey.pk8/ releasekey.x509.pem签名文件

文件路径/device/qcom/common/releasetools.py

    通过修改该文件可以实现对分区进行整包/差分升级配置
    tz rpm emmc_aboot NON-HLOSsbl1
文件路径/build/tools/releasetools/ota_from_target_files

    通过修改该文件可以实现对boot.img的整包差分升级

关于ota_from_target_files脚本

    ./build/tools/releasetools/ota_from_target_files –d MMC -p ./out/host/linux-x86    

     -k ./build/target/product/security/testkey–Ipath_to_target_files_v1.zip 

    path_to_target_files_v1.zip update.zip

    部分参数
    -k  签名文件路径
    -i  从v1 升级v2的增量构建
     -w 升级结束后对userdata分区进行初始化
    -d 选择设备类型
    -p 对应的工具路径

update1.zip\META-INF\com\google\android\updater-script升级脚本

updater-script()

    1.mountsystem (重新挂载使得可以写)
    2.校验是否是对应的属性/签名 自制ROM
    3. apply_patch_check 校验
    4. apply_patch打path
    5. set_metadata  恢复文件信息
    6.radio update tasks 升级固件
    7.unmount system
FOTA本地验证升级
    adb  root
    adb push update.zip /data/update.zip
    adbshell mkdir/cache/recovery
    adbshell “echo –update_package=/data/update.zip >/cache/recovery/command”
    adb shell sync      //同步文件系统
    adb reboot recovery  
Androidota升级的基本过程
Emmc_aboot启动recovery
    1.判断是否进入fastboot模式
    2.判断加载boot.img  /recovery.img   misc分区!
    3.加载recovery.img
    4.执行recovery的init.rc   
    执行service recovery /sbin/recovery seclabel u:r:recovery:s0
 注: (/bootable/recovery/etc/init.rc)

Recovery.cpp
    Recovery模式 recovery的init.rc   (/bootable/recovery/etc/init.rc)
    执行recovery.cpp进程 
    Get_args 获取command的参数 if not 就等输入
    ---- 跑跑跑      注意:恢复出厂设置也在这里!
    加载 META-INF\com\google\android\updater-binary
    创建新的进程updater-binary
    建立recovery进程与updater进程的管道
    recovery进程作为显示 updater进程解析updater-script 并且升级
    升级结束,清楚标志位

第三方升级支持做了什么:
    1.技术支持(升级有问题可以问他们)
    2.提供升级服务器 --(AWS)
    3.简化的操作的工具 -- 一键上传
Androidota升级异常分析:
两个日志,一个文件
    –/cache/recovery/last_log看升级过程异常
    –Fota_log  与升级服务器交互的log
    –saved.file升级过程中bak文件
一个工具
    –QMSCT导出设备镜像
    –dd if=/dev/block/bootdevice/by-name/modemof=/sdcard/modem.mbn
两个问题:
    现象:设备升级结束后可以正常开机但报严重错误
    问题分析:
–升级modem时设备异常重启!
–Apply_check check失败 退出recovery
–release_tool 添加参数
    原因Apply_check函数解析脚本时会把对应文件的hex值加入list
    由于modem已经被破坏(hex有问题),寻找saved.file时又没有对应hex与其匹配
    处理办法 修改release_tool脚本,添加对应参数
    现象:设备升级结束后可以正常开机但报严重错误
    问题分析:
–升级modem时设备异常重启!
–Apply_check check失败 退出recovery
–release_tool 添加参数
    原因Apply_check函数解析脚本时会把对应文件的hex值加入list
    由于modem已经被破坏(hex有问题),寻找saved.file时又没有对应hex与其匹配
    处理办法 修改release_tool脚本,添加对应参数


相关链接:http://blog.csdn.net/mu0206mu/article/details/7399822

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android FOTA 升级流程

Android设备的系统升级有两种方式:(1)下载更新包到手机后,手动安装,即所谓“卡刷包”的形式更新系统;(2) 通过 Over-the-air(OTA)的方式更新系统。这里有一个专门的名字FOTA...
  • wang2119
  • wang2119
  • 2016年08月18日 11:17
  • 6865

android fota升级

fota(Firmware Over The Air),移动终端空中下载软件升级技术。原理是根据算法把新旧版本之间的差别做成一个软件包,手机从服务器上下载到手机里,由手机完成软件版本的升级 ...
  • xieyan0811
  • xieyan0811
  • 2010年12月17日 19:52
  • 13251

FOTA/OTA简介

FOTA/OTA简介 1,OTA(Over-the-Air Technology)空中下载技术。是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用W...
  • cyj369258
  • cyj369258
  • 2015年02月14日 17:31
  • 3095

手机必不可少的功能-FOTA(无线升级)

FOTA总结 适用范围:展讯平台,mtk平台 ,高通平台 一、 T卡升级 1、 编译差分包: 编译代码: source build/envsetup.sh; lunch zsl829_...
  • fugang1230
  • fugang1230
  • 2017年07月28日 11:20
  • 248

Android OTA升级原理和流程分析(一)--update.zip包的制作

Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作 转载自:http://blog.chinaunix.net/uid-220...
  • ylyuanlu
  • ylyuanlu
  • 2015年03月19日 14:35
  • 23282

Android OTA在线升级一(架构分析)

http://blog.csdn.net/huryjiang/article/details/7589625 1、前言     OTA(Over-the-Air Technology)...
  • thinkinwm
  • thinkinwm
  • 2013年05月22日 15:12
  • 18802

OTA1-android 升级基本原理

1、前言     OTA(Over-the-Air Technology)空中下载技术。是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GP...
  • xuefeng_apple
  • xuefeng_apple
  • 2016年04月27日 10:38
  • 306

OTA 简介和常见源码目录-1

OTA 简介和常见源码目录
  • qq_27061049
  • qq_27061049
  • 2017年02月22日 17:18
  • 406

android fota升级

1.    简介 fota(Firmware Over The Air),移动终端空中下载软件升级技术。原理是根据算法把新旧版本之间的差别做成一个软件包,手机从服务器上下载到手机里,由手机完...
  • u010164190
  • u010164190
  • 2016年10月25日 10:35
  • 493

Android OTA升级原理和流程分析(二)---update.zip差分包问题的解决

Android OTA升级原理和流程分析(一)--update.zip包的制作 转载自:http://blog.chinaunix.net/uid-22028566-id-353...
  • ylyuanlu
  • ylyuanlu
  • 2015年03月19日 14:39
  • 10224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FOTA升级
举报原因:
原因补充:

(最多只允许输入30个字)