FOTA升级这个词看起来很高大上。其实就那么回事。
以前嵌入式设备需要工程师带着电脑一台一台去升级,那时候嵌入式设备没那么多。现在这些模组厂商动不动就是年出货千万上亿片,设备如果在一个极端环境下,譬如在电线杆上,不方便带着电脑一台一台去升级,因此有了OTA的概念。FOTA或者DFOTA就是差分包的OTA升级。
譬如移远的EC20,将差分包可以放到文件系统里,也可以放在FTP/http服务器上。
FTP DFOTA升级
譬如当前固件是 EC20CNHDLGR09A08M1G,目标固件是EC20CNHDLGR09A03M1G
将获取到差分包上传到FTP服务器上
AT+QFOTADL=<ftpURL>
ftURL 的格式
FTP://<user_name>:<password>@<serverURL>:<port>/<file_path>
实际测试结果
AT+QFOTADL="ftp://test:test@112.31.84.164:8309/biaowang/Update_EC20CNHDLGR09A08-R09A03.zip"
用ttyUSB2 (Linux系统上的AT口)
和移远的文档描述一致
//模块将自动重启,USB 端口将重新初始化。如果当前使用 USB 端口,MCU 将关闭并重启该端口。
需要重新打开ttyUSB2
在该串口里可以看到DFOTA升级的进度条
进度条不是线性递增的。
本地文件系统升级
这种要先将差分包用FILE指令上传到模组内部,然后再用AT+QFOTADL升级。
上传完成后用AT+QFOTADL 升级
AT+QFOTADL="fota.bin"
报错
改成
AT+QFOTADL="/data/ufs/fota.bin"
刚刚开始执行的时候,如果用的是USB串口同样会出现USB断开的情况,重新打开可以看到升级的进度打印。
程序设计
to do
请私聊。