【RK3588】Android系统OTA升级详细流程(三)

接着上一篇文章,做一下OTA包远程升级测试。

1.搭建OTA升级服务器

Ubuntu系统下搭建OTA服务器。我们将使用Tomcat来搭建web服务器,Tomcat是一个免费、开源的轻量级web应用服务器。

1.1 安装JDK

Tomcat依赖于Java运行环境,所以需要先安装Java环境。可自行前往Java Archive | Oracle 中国此链接下载JDK安装包,以1.6版本为例:

下载完成后将其拷贝到Ubuntu系统用户家目录下,并执行如下命令进行安装:

chmod 777 jdk-6u45-linux-x64.bin

./jdk-6u45-linux-x64.bin

安装成功后,会在当前目录下生成一个名为jdk1.6.0_45的文件夹,如下图所示:

接着打开~/.profile文件配置环境变量,在文件末尾添加如下内容:

export JAVA_HOME=/home/alientek/jdk1.6.0_45

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

其中JAVA_HOME表示jdk的安装目录,需将其修改为你自己的安装目录

添加完成后保存退出,并执行如下命令使其在当前终端生效:

source ~/.profile

执行如下命令查询Java版本,确认是否安装成功:

java -version

能查询到版本号,说明Java环境安装成功!

1.2 下载和安装Tomcat

可自行前往Apache Tomcat® - Welcome!此链接下载Tomcat,以7.0.29版本为例:

依次选择:tomcat-7 --> v7.0.29 --> bin,下载apache-tomcat-7.0.29.zip,这个压缩包是免安装的,解压目录即为安装目录:

下载完成后将其拷贝到Ubuntu系统用户家目录下,并执行如下命令进行解压:

unzip apache-tomcat-7.0.29.zip

chmod 775 -R apache-tomcat-7.0.29

解压完成后,会在当前目录下生成apache-tomcat-7.0.29文件夹,如下图所示:

进入apache-tomcat-7.0.29/目录,接下来需要对webapps/OtaUpdater/WEB-INF/目录下的manifast.xmlpackages进行配置:

打开manifast.xml文件,该文件中默认配置了几个产品,我们可以将其删除,然后添加我们自己的产品,譬如以正点原子的RK3588开发板--ATK-DLRK3588为例:

<?xml version="1.0" encoding="UTF-8"?>

<manifast>

       <product name="ATK-DLRK3588" full_package_path="null" rkimage_path="null">

              <version name="1.0.0" package_path="packages/ATK-DLRK3588/1.0.1.zip" />

              <version name="1.0.1" package_path="packages/ATK-DLRK3588/1.0.2.zip" />

       </product>

</manifast>

product name表示产品的名称,需要与产品配置文件中的PRODUCT_MODEL变量保持一致(也就是产品的型号名称),在Android SDK根目录下可以执行如下命令查询:

get_build_var PRODUCT_MODEL

一个产品下有多个版本通过version name标签来定义,version name为版本号(与固件编译时设置的版本号一一对应),package_path为该版本对应的升级包路径。

Android系统OTA升级详细流程(一)-->第2小节中保存的完整升级包update.zip和Android系统OTA升级详细流程(一)-->第3小节中制作的增量升级包rk3588_v1-v2.zip拷贝到webapps/OtaUpdater/WEB-INF/packages/ATK-DLRK3588/目录下(先在packages目录下创建ATK-DLRK3588目录),并分别重命名为1.0.1.zip1.0.2.zip,如下所示:

修改服务器监听端口号:打开conf/server.xml文件,找到如下内容:

将“2300”修改为您需要的端口号就可以了,譬如本文使用的端口号是8888:

最后执行如下命令启动OTA服务器:

./bin/startup.sh

2.OTA远程升级测试

开发板先烧录Android系统OTA升级详细流程(一)-->第1小节中编译得到的update.img固件,烧录完成后启动开发板进入Android系统,通过串口终端或adb执行如下命令查看当前系统版本号,如下图所示:

getprop ro.product.version

正常情况下,开发板启动进入Android系统后,大概十来秒钟后将会提示用户升级,并弹出升级确认对话框;如果没有出现升级提示,请自行确认OTA服务器参数配置是否正确、网络连接是否正常:

点击“”按钮将会进入系统升级模式,升级完成之前,请勿断开网络连接、开发板请勿断电(由于是完全升级,因此需要稍微等待一会):

 需要先从OTA服务器下载升级包到本地,然后再进行升级。

升级完成后将自动重启开发板,并提示用户系统升级成功!询问是否需要删除本地升级包以避免再次提示升级(建议删除):

同时执行如下命令查看当前系统版本号是否为1.0.1:

getprop ro.product.version

经过升级之后,当前系统版本号为1.0.1,系统将会检测到有1.0.2版本的升级包,便会再次弹出升级确认对话框提示用户是否需要升级;由于是增量升级,升级包非常小、升级速度也比较快:

同样需要将升级包下载到本地,然后再进行升级:

升级完成后将自动重启开发板,并提示用户系统升级成功!询问是否需要删除本地升级包以避免再次提示升级(建议删除):

同时执行如下命令查看当前系统版本号是否为1.0.2:

getprop ro.product.version

至此,OTA包远程升级测试完成!

### 回答1: OTA(Over-The-Air)远程升级是指通过无线网络实现对硬件设备进行固件升级的一种技术。对于C语言开发的设备,OTA远程升级可以通过以下步骤实现: 1. 设计OTA升级协议:首先需要设计一套OTA升级协议,用于规定设备与服务器之间的通信规则。协议应包含设备发起升级请求、服务器验证设备身份、传输固件数据、更新设备固件等重要步骤。 2. 实现OTA升级功能:在设备端,需要编写代码实现OTA升级功能。首先设备需能够通过无线网络连接到服务器,并提供识别和验证设备身份的机制。然后设备需能够从服务器下载升级固件,并将固件写入设备存储空间。最后,设备需能够在固件下载完成后自动进行固件更新操作。 3. 配置OTA服务器:配置OTA服务器,用于接收设备的升级请求、验证设备身份、提供固件下载和管理功能。服务器也应提供固件更新的验证机制,以确保升级的安全性和完整性。 4. 测试和部署:在实际环境中,需要进行充分的测试和验证,确保OTA升级功能的稳定性和可靠性。一旦测试通过,就可以将OTA升级功能部署到设备中。 OTA远程升级可以极大地简化设备固件的更新和维护工作,减少设备厂商和用户的工作量。通过OTA远程升级,设备可以及时获得最新的固件功能和安全补丁,提高设备的性能和稳定性。同时,OTA远程升级也为设备厂商提供了更好的产品支持和服务机制,能够及时响应用户需求和反馈。 ### 回答2: OTA(Over-The-Air,即远程升级)是一种通过无线网络更新设备固件或软件的技术。在C语言中实现OTA远程升级需要以下步骤: 1. 建立网络连接:首先,使用C语言中的网络库(如socket库)建立设备与服务器之间的网络连接。可以使用TCP或UDP协议进行数据传输。 2. 下载升级文件:设备与服务器连接成功后,使用C语言中的文件操作函数(如fopen、fread等)从服务器下载升级文件。服务器会提供一个URL或者文件路径供设备下载。 3. 验证升级文件:下载完成后,使用C语言中的哈希算法(如MD5、SHA1等)对下载的文件进行验证,以确保文件完整和准确。 4. 备份当前固件:在升级之前,应该先备份当前设备的固件,以防升级失败时能够恢复到之前的状态。可以使用C语言中的文件操作函数将当前固件保存到另一个位置。 5. 执行升级:使用C语言中的文件操作函数将下载的升级文件写入设备的存储空间,覆盖掉原有的固件。在写入之前,应该校验文件完整性。写入完成后,设备会自动重启以加载新的固件。 6. 升级结果反馈:设备在重启后,可以使用C语言中的网络库向服务器发送升级结果,例如升级成功或失败。服务器根据结果可以作出相应的处理,如记录设备的升级状态,或者提醒用户重新操作。 需要注意的是,OTA远程升级的实现方式和详细步骤可能因设备和协议的不同而有所差异。以上步骤仅作为一般性的示例,具体实现需要根据实际情况进行调整。 ### 回答3: OTA(Over-The-Air)远程升级是一种通过无线网络方式对设备进行升级的技术,通过OTA远程升级可实现对设备的固件、软件等进行更新和升级。C语言是一种广泛应用于嵌入式系统开发的高级程序设计语言。下面是关于如何使用C语言实现OTA远程升级的思路: 首先,我们需要使用C语言编写底层的网络通信模块。此模块需要实现设备与远程服务器之间的连接和通信,包括建立TCP/IP连接、发送和接收数据等功能。可以使用套接字(socket)编程方式来实现网络通信模块。 其次,我们需要编写OTA升级模块,该模块负责接收远程服务器发送的升级文件,并将文件写入设备的存储器中。在C语言中,可以使用文件操作函数(如fopen、fwrite等)来实现将升级文件写入设备存储器的功能。 在设备端,我们可以编写一个主循环,循环中不断接收远程服务器发送的命令和数据,然后根据不同的命令进行相应的操作。例如,当收到远程服务器发送的升级命令时,我们调用OTA升级模块进行升级操作。 最后,为了确保OTA升级的安全性和可靠性,我们可以引入校验机制和回退机制。例如,在OTA升级模块中,可以对接收的升级文件进行校验,确保数据的完整性和正确性。并且在升级过程中,备份设备原有的固件或软件,以便在升级失败时能够回退到之前的版本。 综上所述,使用C语言实现OTA远程升级需要编写底层网络通信模块、OTA升级模块,以及引入校验机制和回退机制等。这些模块和机制的实现有助于实现设备的远程升级功能,提升设备的智能化和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值