CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
文档中心 > GR5xx固件升级开发指南/ 简介/ DFU工作模式 Copy URL

DFU工作模式

  • 无论采用OTA或有线升级方式,DFU方案可分两种类型:后台式DFU和非后台式DFU。
    • 后台模式:由应用程序接收下发的固件,且应用程序在执行接收固件任务时,还可执行其他任务。
    • 非后台模式:由Bootloader程序接收下发的固件,且当前只能执行下载固件这一个任务。
  • 从占用的存储区域看,DFU又可分为两种类型:双区DFU和单区DFU。
    • 双区DFU:将接收到的固件先缓存到一个区域,待固件校验通过后,再拷贝至目标区域。
    • 单区DFU:将接收到的固件写入到目标区域,直接覆盖原始固件。

后台式DFU必须使用双区模式存放新旧固件,非后台式DFU既可使用单区也可使用双区模式来存放新旧固件。因此,常用的DFU工作模式主要分为三种:

  • 后台双区升级模式
  • 非后台双区升级模式
  • 非后台单区升级模式

三种模式详细介绍如下:

  • 后台双区升级模式的升级示意图如图 1所示。其升级过程主要包含以下步骤:

    1. 在应用程序部分接收主机端下发的固件。
    2. 由应用程序将接收到的固件写入至Bank1区域。
    3. 固件写入完毕后,对Bank1区域的固件进行校验,校验通过后,程序跳转至Bootloader固件运行。
    4. 由Bootloader程序将新固件拷贝至Bank0区域。然后对新固件进行校验,若校验通过,则跳转至新固件运行。
    说明:

    设备端指固件端,如果使用手机APP升级,主机端即指手机APP。

    图 1 后台双区升级模式示意图
  • 非后台双区升级模式的升级示意图如图 2所示。其升级过程主要包含以下步骤:
    1. 在Bootloader接收主机端下发的固件。
    2. 由Bootloader将接收的固件写入Bank1区域。
    3. 固件写入完毕后,先对Bank1区域的新固件进行校验,校验通过后,由Bootloader将新固件拷贝至Bank0区域,然后再对Bank0区域的新固件进行校验,若校验通过,则跳转至新固件运行。
    图 2 非后台双区升级模式示意图
  • 非后台单区升级模式的升级示意图如图 3所示。由Bootloader端固件接收手机APP下发的固件,在接收固件的同时直接将新固件写入Bank0,当写入固件完毕后,对Bank0区域的固件进行校验,当校验通过后跳转至Bank0应用程序运行。
    图 3 非后台单区升级模式示意图

三种不同的DFU模式比较如下表所示。

表 2 不同DFU模式比较
DFU模式 升级相同固件时Flash占用 备份机制 Bootloader固件大小 升级过程中执行其他任务
后台双区升级 支持 支持
非后台单区升级 不支持 不支持
非后台双区升级 支持 不支持
说明:
  • 后台双区升级模式和非后台双区升级模式在升级相同固件时,Flash占用大是因为需要两块Flash区域存放新旧固件。
  • 备份机制指设备端接收的新固件损坏时,系统可继续运行旧固件。
  • 非后台单区升级的Bootloader固件比其他两种模式小是因为其只需要基本的拷贝和跳转功能即可,不需要具备与主机端进行数据交互的功能。
  • 在非后台单区升级和非后台双区升级时,设备需要跳转至Bootloader固件,升级过程中无法执行应用程序的其他任务。相比之下,后台双区升级模式可以在升级过程中继续执行其他应用任务,提高用户体验。

表 2可知,非后台双区升级模式具备的优点后台双区升级模式也有,非后台单区升级模式具备的优点是其他两种模式没有的。因此,GR5xx提供的DFU升级模式,只包含后台双区升级模式和非后台单区升级模式。

在实际升级过程中,使用何种升级模式需要根据Flash存储空间和待升级固件大小来决定,具体原则为,如果(全部Flash空间 – Bootloader固件大小 – 参数存储空间)/ 2 >= 待升级固件大小,则推荐使用后台双区升级模式;否则,推荐使用非后台单区升级模式。

说明:

参数存储空间指在Flash区域划分的用于存放非易失性数据的区域。

扫描关注

打开微信,使用“扫一扫”即可关注。