智能设备的制造,在产品销售出去后,用户在使用产品过程中,会出现各类问题,有些问题则需要通过固件升级的方式来解决。而在我们的物理网云平台中,原先就有固件升级的功能,但存在着各种问题。在这种背景下,需要我作为产品对固件升级的功能,进行整体优化改造。
一种软件,或者介于软件与硬件之间的东西,是连接软件与硬件之间的桥梁,机器可以通过固件直接控制硬件(固件负责软件对硬件的识别)。而大部分电子产品都需要拥有固件才能够正常运行。
有时为了增加产品的功能或者修复Bug,需要对固件进行升级,。比如:升级BIOS板,让主板支持同款插槽的CPU。
但是固件升级的时候需要谨慎,因为在设备在升级过程中停电,导致固件升级失败,那么设备可能永远变“砖”,并且无法再次通过升级固件解决。因为固件升级的前提就是要有正常的固件,告诉系统怎么升级,如果升级失败了,人们可能需要通过工具重新进行烧录,正常用户是没有这个能力的。
当然还有些固件是不能进行升级,比如存在ROM中,也就是只读芯片。
这里主要讲述偏向应用层的固件升级,应该怎么设计。用户需要通过一个系统,对固件进行管理、升级派发、记录监控等需要,那么FOTA应运而生。
固件升级的核心逻辑是将固件包推送到设备中,在设备中最终完成固件升级操作。
而推送固件包的过程中,根据产品类型与实际业务的不同,存在不同的通讯方式:
以太网、RS-232、RS-485、M-Bus、PLS等
蓝牙、蜂窝移动通信(2G/3G/4G)、WIFI、ZigBee、Zwave等
通过蓝牙升级,需要由三端同步,分别是:APP端、升级设备端、云服务器端。
根据FOTA的模式,优化后的固件升级系统,产品流程分为以下几个部分:
1. 上传固件包
将固件包上传至云平台,并人为对该固件包进行定义,如添加版本号、支持升级设备、版本说明等
2. 固件包合并
因为每个设备包含多个固件,实际业务只能对设备中的多个固件进行统一升级,所以有了固件包合并的环节。
3. 建立升级任务
选中需要下发升级的固件包,通过任务配置,将固件包升级的前置步骤完成。比如定义可升级时间、指定设备SN、指定特定用户升级等。
4.执行升级步骤
最终进行升级步骤的执行。比如在升级任务中,选择了蓝牙升级,则用户靠近设备,在APP上通过蓝牙连接了该设备,就能从云服务器下载固件升级包到APP,通过APP蓝牙传输至设备中,完成升级任务。