• 物联网IOT 固件升级


    前言

    智能设备的制造,在产品销售出去后,用户在使用产品过程中,会出现各类问题,有些问题则需要通过固件升级的方式来解决。而在我们的物理网云平台中,原先就有固件升级的功能,但存在着各种问题。在这种背景下,需要我作为产品对固件升级的功能,进行整体优化改造。

    固件是什么

    一种软件,或者介于软件与硬件之间的东西,是连接软件与硬件之间的桥梁,机器可以通过固件直接控制硬件(固件负责软件对硬件的识别)。而大部分电子产品都需要拥有固件才能够正常运行。

    固件升级需谨慎

    有时为了增加产品的功能或者修复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蓝牙传输至设备中,完成升级任务。

  • 相关阅读:
    学习Nginx,跟着阿里大牛走,一套精心整理的Nginx(PDF文档)
    Springboot之nacos注册中心
    你不一定知道的四种遍历进程的方法(c语言)
    重构优化第三方查询接口返回大数据量的分页问题
    编程2016 1
    SpringCloud Alibaba(保姆级入门及操作)
    12 | 指针详解:在什么情况下应该使用指针?
    【MetaAI】2023年MetaAI发布的开源模型和工具
    CF1294F 题解
    启用Docker对ipv6的支持
  • 原文地址:https://blog.csdn.net/weixin_48181168/article/details/126227147