2. AW30N 设备升级

AW30N SDK 提供了 设备升级功能。

设备升级功能 指的是 SD卡升级U盘升级

两个升级功能 分别由 app_modules_h.c 里的 SD_UPDATE_ENUDISK_UPDATE_EN 宏控制开关。

下面分为3个部分来介绍设备升级:
  1. 设备升级简要流程

  2. SDK中的设备升级处理

  3. 设备升级常见问题

2.1. 设备升级简要流程

设备升级 分为 SD卡升级U盘升级

下面简要介绍一下设备升级流程:

  1. 打开设备,检查文件 –> 2. 校验ufw文件 –> 3. 进入loader升级

    1:根据使用的是哪一种设备升级,在app_config.h里 打开对应设备使能;
    2:根据使用的是哪一种设备升级,在app_modules_h.c里 打开对应的设备升级使能;
    3:调用 dev_update_check(char* logo) 进行升级:::
    1)该函数会先检测对应设备是否在线;
    2)判断在线后挂载fat文件系统,搜索文件里第一个后缀名为 “ufw” 的升级文件;
    3)搜索到对应 “ufw” 文件后 , 就会真正开始进行升级动作;
    4)升级过程中会校验ufw文件数据各项是否合法,不合法则会执行复位操作;
    5)校验成功后即可跳到loader完成剩余升级,该过程不受断电、拔卡影响,重新上电或者插卡即可继续步骤5)升级;

备注

升级注意

1:在识别到ufw文件前的任意流程出错时,均会返回错误值退出(即步骤3的第二点前);(例如对应设备不在线,挂载不成功,均会 有返回值返回退出

2:在识别到ufw文件后进入升级后,但在进入loader前,任意出错会执行系统复位操作;(检验文件过程中出错会执行 复位操作

3:在识别到ufw文件后进入升级,升级库里面需要使用缓存来处理升级数据,该缓存是位于overlay区域(具体可看下载目录里的app_ld.c文件里的update_tmp_buf区域); (对应”升级资源复用问题”部分)

4:针对于升级注意的第三点缓存位于overlay区域,在识别到ufw文件后 进入升级前,提供了一个升级回调,用户可根据自身应用,在进入升级前注册回调来关掉相关与升级模块overlay的模块; (对应”升级资源复用问题”部分)

5:升级需要需要占据一定的 VM空间(注意不是VM存储记忆使用的EEPROM区域),在使用对应升级前,可在下载时观察OTA UPDATE INFO 剩余VM空间是否支持升级;

"各项升级所需空间细看"

各项升级所需空间细看

6:U盘升级前除了要打开 设备宏 和 升级宏 外,还需注意是否调用过usb_host_mount(),默认在识别到U盘上线时即会挂载,用户在后续操作即可;


2.2. SDK中的设备升级处理

下面介绍设备升级 中的 U盘升级 在SDK里的运转流程:

(SD卡升级 与 U盘升级流程一样,只是不需要usb_host_mount挂载步骤)

2.2.1. 打开对应需要升级的设备宏(app_config.h)

"app_config.h"

app_config.h


2.2.2. 打开对应设备升级宏(app_modules_h.c)

"升级宏"

升级宏


2.2.3. 公共消息里,接收到U盘上线消息后,会挂载usb

"usb挂载"

usb挂载

备注

挂载usb不能重复挂载


2.2.4. 挂载完usb后,会推送U盘消息上线消息,调用升级函数

"设备升级"

设备升级

设备升级函数: dec_update_check()
该函数里可分为3个步骤,每个步骤对应的错误处理均不同:
1:打开设备,检查文件存在:失败直接关闭设备退出该函数返回错误值;
2:进入升级回调,关闭与升级相关复用功能模块;(具体可参考最后常见问题章节)
2:进行升级,校验ufw升级文件:失败会执行系统复位操作;(具体可参考最后常见问题章节)
3:校验成功跳入loader执行程序:此时重新上电或者拔卡亦可重新升级;

2.3. 设备升级常见问题

2.3.1. U盘升级时打开设备失败

检查调用升级函数的地方是否在调用了usb_host_mount();

默认U盘上线时会自动挂载。


2.3.2. 设备升级时升级对应的ufw文件

v1.0.0 ~ v1.2.0版本(不包含v1.2.0)是设备中的第一个后缀名为 ufw 的文件进行升级。

v1.2.0(包括v1.2.0版本)后,只有对应的update.ufw文件名才能进行升级。

用户可自行选择升级文件可更改 update.c 里的 update_file_name 来指定升级对应ufw文件。

"升级路径指定"

升级路径指定


2.3.3. 设备升级过程中,在校验ufw文件过程前需要关闭与升级复用功能模块

在校验数据前,用户需要关闭与 升级复用的功能模块。

用户可注册升级回调来关闭 与 升级复用的功能模块。

默认该回调会关闭audio 和 adc。

"升级回调注册"

升级回调注册


2.3.4. 设备升级过程中,在校验ufw文件过程中进行复位原因

1:升级空间不够,需要足够的VM区域。

2:ufw文件数据不合法,检查ufw文件是否损坏。

3:升级文件与芯片key不对应。


2.3.5. 设备升级中,只支持FAT32文件系统进行升级

设备升级只支持FAT32的设备进行升级,否则会在dev_update_check()里判断到文件系统错误直接退出。


2.3.6. 升级过程中保持住IO状态实现


2.3.7. 带快速启动进行升级

请看 “带快速启动进行升级” 章节