2. AD24N 设备升级

AD24N SDK从V1.1.0版本开始提供了设备升级功能,目前仅支持SD卡升级。
本章还介绍了:

2.1. AD24N设备升级流程

2.1.1. SDK配置流程

1:根据使用的是哪一种设备升级,在app_modules.h里 打开对应设备使能;

"设备使能"

设备使能

2:根据使用的是哪一种设备升级,在app_config.h里 打开对应的设备升级使能;

"升级方式使能"

升级方式使能

2.1.2. 用户操作流程

用户将升级文件(下载目录中以ufw为后缀的升级文件)拷贝到SD卡等升级设备中。然后将升级设备接入样机,样机识别到接入的升级设备,然后开始运行升级相关流程。代码相关流程如下

2.1.3. 代码运行流程

  1. 打开设备,检查文件 -> 2. 检查文件成功,跳转到toy_update模式运行升级函数 –> 3. 校验ufw文件 –> 4. 进入loader升级


2.2. 升级资源复用问题

升级过程中,需要一些缓存buff,这些缓存buff在SDK里是放在了overlay区域,即会与其他资源重叠;
"升级缓存区域"

升级缓存区域

用户需要关心的是:在进入升级前,是否已经关闭了相关与升级复用的模块。
为此,SDK提供了一个device_update函数,在运行应用时,设备上线,SDK相应设备上线消息check升级文件,
"设备上线时先检查ufw文件"

设备上线时先检查ufw文件

check确认文件可升级后,将退出当前应用,跳转到toy_update模式来进行设备升级。以此确保升级前所有使用overlay代码的功能均已关闭。

2.3. 升级前堆栈切换

设备进入升级之前,由于升级流程需要消耗较多的堆栈,因此升级前会将堆栈指针切换到overlay的ram,新的堆栈约占用3K byte,注意使用时不允许升级和其他overlay相关的代码一起运行。

用户可根据代码中带有stack_change_step的注释逐步了解其运行步骤。

"升级前切换堆栈流程"

升级前切换堆栈流程