飞凌RK3399平台OTA 本地升级、OTA远程升级

2021年08月11日 10:12    发布者:哦哈哟
本文硬件平台以飞凌嵌入式OK3399-C开发板为基础进行讲解,其它RK3399产品,由于各个厂家设置不同会有所差异,请参考使用。本文档主要介绍OTA相关方向的介绍,通过本文档可快速了解RK3399平台android镜像版本升级的两种方式OTA 本地升级、OTA远程升级以及OTA升级包编译过程。飞凌RK3399开发板 OTA测试OTA (over the air)升级是Android 系统提供的标准软件升级方式。它功能强大,提供了完全升级(完整包)、增量升级模式(差异包),可以通过本地升级,也可以通过网络升级。注意:OTA镜像的打包方式和rk update.img的打包方式有所差异,没有单独的kernel分区,内核设备树存在于boot.img中,因此如果使用OTA升级时,需要保证当前系统中的镜像也是按照OTA方式打包的。一、OTA 升级包编译本节我们将编译三个版本的android镜像,V1.0.0版本、V1.0.1版本、V1.0.2版本,其中V1.0.0版本为基础版本用于烧写到飞凌RK3399开发板上,V.1.0.0升级到V1.0.1采用完全升级的方式测试完全升级功能,V1.0.1升级到V1.0.2采用增量升级模式测试增量升级功能。查看device/rockchip/rk3399/BoardConfig.mk1、 编译V1.0.0版本镜像lunch rk3399_all-userdebugrm out/target/product/rk3399_all/system/build.propmake -j4./mkimage.sh ota将rockdev/Image-rk3399_all目录的镜像备份mkdir images_v1.0.0cp rockdev/Image-rk3399_all/* images_v1.0.0https://www.forlinx.com/file.php?f=202012/f_f7ebde57a7522aab43041eee780a4d5c&t=jpg&o=&s=&v=1607569938 以单独烧写的方式,将镜像烧写到飞凌RK3399开发板上,注意不要烧写kernel.img。2、编译V1.0.1版本完全升级包修改device/rockchip/rk3399/BoardConfig.mkhttps://www.forlinx.com/file.php?f=202012/f_7f267bee7d66d568ce32e8b2025bbdf9&t=jpg&o=&s=&v=1607569945 将当前的版本号修改为:1.0.1lunch rk3399_all-userdebugrm out/target/product/rk3399_all/system/build.propmake -j4./mkimage.sh otamake otapackage -j4mv out/target/product/rk3399_all/rk3399_all-ota-eng.root.zip 1.0.1.zipmv out/target/product/rk3399_all/obj/PACKAGING/target_files_intermediates/rk3399_all-target_files-eng.root.zip target_1.0.1.zip其中1.0.1.zip是用于测试的完全升级包,target_1.0.1.zip是用于制作V1.0.2版本增量升级包的基础素材。3、编译V1.0.2版本增量升级包修改device/rockchip/rk3399/BoardConfig.mkhttps://www.forlinx.com/file.php?f=202012/f_67a42dc35061540a532d6ee613e55dbe&t=jpg&o=&s=&v=1607569953 将当前的版本号修改为:1.0.2lunch rk3399_all-userdebugrm out/target/product/rk3399_all/system/build.propmake -j4./mkimage.sh otamake otapackage -j4mv out/target/product/rk3399_all/obj/PACKAGING/target_files_intermediates/rk3399_all-target_files-eng.root.zip target_1.0.2.zip使用target_1.0.1.zip和target_1.0.2.zip制作V1.0.2版本增量升级包。./build/tools/releasetools/ota_from_target_files -v --block \-i target_1.0.1.zip \-p out/host/linux-x86 \-k build/target/product/security/testkey \target_1.0.2.zip \1.0.2.zip经过前面几小节的编译,我们得到最终得到了以下文件:images_v1.0.0目录的基础镜像:v1.0.0版本的镜像,用于烧写到飞凌RK3399开发板上。1.0.1.zip:v1.0.1版本的完全升级包。1.0.2.zip:v1.0.2版本的增量升级包。二、OTA 本地升级启动RK3399开发板并输入:getprop ro.product.version 确认版本号是否为1.0.0。将1.0.1.zip 拷贝到TF卡根目录(如果之前做成了烧写TF卡请先还原为普通TF卡),并重新命名为update.zip。启动开发板,插入TF卡。系统将自动检测到升级文件的存在弹出升级确认菜单,点击Install。将自动进入升级模式,升级完成之前请勿插拔TF卡。https://www.forlinx.com/file.php?f=202012/f_c13fc448c8cb525f73807f531a04f630&t=jpg&o=&s=&v=1607569961 升级完成后将自动重新启动,提示升级成功,询问是否需要删除升级文件避免再次升级。https://www.forlinx.com/file.php?f=202012/f_53cacdee632ff5f4b994ce795cf401b6&t=jpg&o=&s=&v=1607569968 同时可以在飞凌RK3399开发板上输入getprop ro.product.version 确认版本号是否为1.0.1。下面,将1.0.2.zip拷贝到TF卡根目录,并重命名为update.zip,由于是增量升级可以看到update.zip只有几十MB,当然这根修改的代码多少有关。将TF卡插入开发板,与前面完全升级的步骤一样。系统将自动检测到升级文件的存在弹出升级确认菜单,点击Install。将自动进入升级模式,升级完成之前请勿插拔TF卡。https://www.forlinx.com/file.php?f=202012/f_411e93185e6ea3b0a5020a3ac51e470d&t=jpg&o=&s=&v=1607569974 升级完成后将自动重新启动,提示升级成功,询问是否需要删除升级文件避免再次升级。https://www.forlinx.com/file.php?f=202012/f_fc16fe97b17440207c991757865615d3&t=jpg&o=&s=&v=1607569981 同时可以在飞凌 RK3399 开发板上输入getprop ro.product.version 确认版本号是否为1.0.2。三、OTA 远程升级1、搭建OTA升级服务器打开飞凌提供的RK3399用户资料,将资料工具目录中的apache-tomcat-7.0.29.zip拷贝到Linux主机/home/forlinx目录。注意:如果您的主机没有jdk环境,请参考上篇建立Android应用开发环境编译章节安装jdk环境。unzip apache-tomcat-7.0.29.zipchmod 775 -R apache-tomcat-7.0.29cd apache-tomcat-7.0.29/webapps/OtaUpdater/WEB-INFcat manifast.xmlhttps://www.forlinx.com/file.php?f=202012/f_ca7e27363f55778763076f3c0b279597&t=jpg&o=&s=&v=1607569990 其中,product name需要与device/rockchip/rk3399/BoardConfig.mk中定义的PRODUCT_MODEL一致。https://www.forlinx.com/file.php?f=202012/f_a4520c38c4214bbefc93a2486de2bdec&t=jpg&o=&s=&v=1607569998 version name 选项对应升级前版本,package_path选项对应该版本的升级包路径。将1.0.1.zip和1.0.2.zip拷贝到对应的目录:https://www.forlinx.com/file.php?f=202012/f_ebdbf05cd1bcf801ab2848e42f8c7c07&t=jpg&o=&s=&v=1607570005 修改端口号:apache-tomcat-7.0.29/conf/server.xmlhttps://www.forlinx.com/file.php?f=202012/f_0640f01412be4af3373b2779423b157e&t=jpg&o=&s=&v=1607570013 启动服务:cd apache-tomcat-7.0.29/bin./startup.sh2、测试OTA远程升级首先将之前备份在images_v1.0.0镜像烧写到开发板上。getprop ro.product.version 确认版本号是否为1.0.0。正常情况下系统启动完毕几秒钟后将提示升级,如果没有提示请:getprop ro.product.ota.host 确认OTA升级服务器参数是否正确。同时确认网络是否连通。https://www.forlinx.com/file.php?f=202012/f_187105e6cd05a850b4cd4e8f6be60126&t=jpg&o=&s=&v=1607570030 点击Yes将自动进入升级流程。由于是完全升级,因此需要稍微等待一会。https://www.forlinx.com/file.php?f=202012/f_51ff865d3bcdfb837b619bb2375f9bbb&t=jpg&o=&s=&v=1607570037 点击Yes删除本地升级包。同时查看当前版本:getprop ro.product.version 正常情况下已经升级到1.0.1版本。重启系统,由于我们当前版本已经升级到了1.0.1版本,系统将检测到最新的1.0.2版本,提示升级。https://www.forlinx.com/file.php?f=202012/f_40f3615028ca644d713dd1159e98de56&t=jpg&o=&s=&v=1607570045 由于是增量升级,升级包非常小,升级速度也比较快。https://www.forlinx.com/file.php?f=202012/f_bf56d14ef27005c9dbb0b7436ee006bd&t=jpg&o=&s=&v=1607570052> 点击Yes删除本地升级包。同时查看当前版本:getprop ro.product.version 正常情况下已经升级到1.0.2版本。