.. _update_main: AD24N 设备升级 ========================================= | AD24N SDK从V1.1.0版本开始提供了设备升级功能,目前仅支持SD卡升级。 本章还介绍了: | 1:":ref:`AD24N设备升级流程`" | 2:":ref:`升级资源复用问题`" | 3:":ref:`升级前堆栈切换`" .. _AD24N设备升级流程: AD24N设备升级流程 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SDK配置流程 -------------------------------------- 1:根据使用的是哪一种设备升级,在app_modules.h里 打开对应设备使能; .. image:: app_modules_dev.jpg :alt: "设备使能" :align: center .. centered:: 设备使能 2:根据使用的是哪一种设备升级,在app_config.h里 打开对应的设备升级使能; .. image:: app_config_dev_update.jpg :alt: "升级方式使能" :align: center .. centered:: 升级方式使能 用户操作流程 -------------------------------------- 用户将升级文件(下载目录中以ufw为后缀的升级文件)拷贝到SD卡等升级设备中。然后将升级设备接入样机,样机识别到接入的升级设备,然后开始运行升级相关流程。代码相关流程如下 代码运行流程 -------------------------------------- 1. 打开设备,检查文件 -> 2. 检查文件成功,跳转到toy_update模式运行升级函数 –> 3. 校验ufw文件 –> 4. 进入loader升级 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _升级资源复用问题: 升级资源复用问题 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 升级过程中,需要一些缓存buff,这些缓存buff在SDK里是放在了overlay区域,即会与其他资源重叠; .. image:: update_overlay.jpg :alt: "升级缓存区域" :align: center .. centered:: 升级缓存区域 | 用户需要关心的是:在进入升级前,是否已经关闭了相关与升级复用的模块。 | 为此,SDK提供了一个device_update函数,在运行应用时,设备上线,SDK相应设备上线消息check升级文件, .. image:: dev_update_check.jpg :alt: "设备上线时先检查ufw文件" :align: center .. centered:: 设备上线时先检查ufw文件 | check确认文件可升级后,将退出当前应用,跳转到toy_update模式来进行设备升级。以此确保升级前所有使用overlay代码的功能均已关闭。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _升级前堆栈切换: 升级前堆栈切换 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 设备进入升级之前,由于升级流程需要消耗较多的堆栈,因此升级前会将堆栈指针切换到overlay的ram,新的堆栈约占用3K byte,注意使用时不允许升级和其他overlay相关的代码一起运行。 用户可根据代码中带有stack_change_step的注释逐步了解其运行步骤。 .. image:: change_stack_before_update.jpg :alt: "升级前切换堆栈流程" :align: center .. centered:: 升级前切换堆栈流程