1.将固件上传至服务器
根据自己的服务器对应的操作系统,将待升级的固件上传至服务器的某个目录下。
以Ubuntu为例,我利用下xFTP将待升级的固件上传至我的服务器上。
2.生成下载链接
我们可以安装NGINX,将待升级的固件生成对应的资源链接。
ubuntu 安装NGINX也比较简单,直接执行下面脚本即可:
apt-get install nginx
NGINX安装完成后,我们需要配置固件的资源目录。比如我们在/etc/nginx/conf.d目录下创建一个download.conf文件,里面设置如下内容:
autoindex on;#开启文件目录预览
autoindex_exact_size on;
autoindex_localtime on;
charset utf-8;
server {
listen 8888;
server_name download;
root /opt/download;#对应的文件资源目录
}
最后我们通过浏览器可以看到服务器上固件的文件地址。
3.给设备下发升级命令
设备的升级命令消息ID是0x8105,对应的命令字是32
组包示例:
7E81050094413050959369000120303B303B687474703A2F2F3132342E3232332E36302E3233343A383838382F464F54412F3130302F414F56585F41583330302D58585F48322E305F56322E302E345F7632312E62696E3B313B687474703A2F2F3132372E302E302E313A383838382F464F54412F3130302F414F56585F41583330302D58585F48322E305F56322E302E345F7632312E62696E3B313233343536407E
示例说明:
7E -->包头
8105 -->消息ID 0x8105
006C -->消息体属性
413050959369 -->设备S/N
0001 -->流水号
20 -->此处是16进制的命令字,对应10进制命令字为32
30 3B -->其中30转成ASCII字符串为"0",对应的是TYPE:0表示app升级,1表示core升级;3B对应的ASCII字符串为";",对应的是分隔符
30 3B -->其中30转成ASCII字符串为"0",对应的是MODE:0表示完整版,1表示差分包;3B对应的ASCII字符串为";",对应的是分隔符
414F56585F41583330302D58585F48322E305F56322E302E345F763231 3B -->其中414F56585F41583330302D58585F48322E305F56322E302E345F763231为版本号的16进制字符串,对应的值为"AOVX_AX300-XX_H2.0_V2.0.4_v21";3B对应的ASCII字符串为";",对应的是分隔符
31 3B -->其中31转成ASCII字符串为"1",对应的是PROTOCOL:0表示FTP协议,1表示HTTP协议;3B对应的ASCII字符串为";",对应的是分隔符
687474703A2F2F3132372E302E302E313A383838382F464F54412F3130302F414F56585F41583330302D58585F48322E305F56322E302E345F7632312E62696E 3B -->其中687474703A2F2F3132372E302E302E313A383838382F464F54412F3130302F414F56585F41583330302D58585F48322E305F56322E302E345F7632312E62696E为固件URL的16进制字符串,对应的值为"http://127.0.0.1:8888/FOTA/100/AOVX_AX300-XX_H2.0_V2.0.4_v21.bin";3B对应的ASCII字符串为";",对应的是分隔符
313233343536 -->对应的是MD5的秘钥值,此处默认为123456
F0 -->校验码
7E -->包尾
4.设备响应升级命令
首先下发升级命令后,设备会应答0x0001,此时代表设备收到升级任务。
之后,设备会通过0x0002的F6拓展消息中的数据类型给出升级进度以及是否完成升级。
作者:admin 创建时间:2023-04-29 21:03
最后编辑:admin 更新时间:2023-04-30 16:21
最后编辑:admin 更新时间:2023-04-30 16:21