.. _update_main: AW30N 升级简要说明 ========================================= | AW30N SDK 提供了 多种升级功能。 | 目前升级功能有:(用户需要了解哪种升级可进入链接详细查看) | 1:设备升级(SD卡)":ref:`设备升级`" | 2:设备升级(U盘)":ref:`设备升级`" | 3:测试盒升级(串口)":ref:`测试盒升级`" | 4:测试盒升级(蓝牙)":ref:`测试盒升级`" | 5:手机蓝牙升级从机;":ref:`手机ota升级slave`" | 6:手机usb升级主机;":ref:`手机usb升级主机`" | 7:手机usb连接主机,主机蓝牙连接从机升级;(暂不支持) 本章还介绍了: | 1:":ref:`升级资源复用问题`" | 2:":ref:`升级时如何保持住某个IO状态`" | 3:":ref:`公版SDK应用主要升级功能`" | 4:":ref:`带快速启动进行升级`" | 5:":ref:`相关升级软件获取`" .. note:: 用户在根据自身需求选择对应的升级方式时,有如下几点需要注意: | 1:升级过程中内部需要的缓存buff都放在了overlay区域,用户需要注意自身应用资源与其复用关系;":ref:`升级资源复用问题`" | 2:每种升级都需要VM区域来存放其对应的.bin文件,但是每种升级需要的VM区域大小不同(见下图) | 3:每种升级有一些其对应的要求或者注意事项,具体可以看每种升级里的常见问题。 .. image:: update_need_vm_size.png :alt: "检查各项升级所需VM区域大小" :align: center .. centered:: 检查各项升级所需VM区域大小 .. _升级资源复用问题: 升级资源复用问题 ***************************** | 升级过程中,需要一些缓存buff,这些缓存buff在SDK里是放在了overlay区域,即会与其他资源重叠; .. image:: update_overlay.png :alt: "升级缓存区域" :align: center .. centered:: 升级缓存区域 | 用户需要关心的是:在进入升级前,是否已经关闭了相关与升级复用的模块 或者 是会影响升级的配置。 | 为此,SDK提供了一个进入升级前的回调,该回调默认会关闭 audio 和 adc。 .. image:: update_callback.png :alt: "升级回调函数处理" :align: center .. centered:: 升级回调函数处理 如: | 1:在 **SDK音乐模式** ,解码的缓存区域 与 升级的缓存区域复用,所以进入升级前,会在回调里把audio先关掉,保证升级过程中的缓存区域数据没有被污染。 | 2:在 **遥控器应用** 中,开启了latency,该配置会影响升级过程中蓝牙收发数据,所以在进入到有关蓝牙的升级过程前,需要把latency关闭。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _升级时如何保持住某个IO状态: 升级时如何保持住某个IO状态 ***************************** | 自v1.4.0版本(包括v1.4.0版本)后,所有升级在升级过程中均可保持住IO状态(除USBDP 、 USBDM脚)。 **在此之前的版本不支持该功能。** | 下面介绍如何设置在升级过程中保持住目标IO的状态:(最多只支持保持4个IO状态,且不能保持USBDP 、USBDM脚) | (示例在升级过程中 PA10 , PA11 一直输出高电平) 1、在升级前的程序里,在 **update.h** 里把 **UPDATA_KEEP_IO_ENABLE** 宏打开; .. image:: UPDATA_KEEP_IO_ENABLE.png :alt: "打开升级保持住IO功能" :align: center .. centered:: 打开升级保持住IO功能 2、在升级前的程序里,在 **update.c** 里找到 **update_keep_io** 函数,填入需要保持状态的IO以及其对应的状态; .. image:: fill_need_keep_io.png :alt: "SDK配置需要保持住的 IO" :align: center .. centered:: SDK配置需要保持住的 IO 3、在升级前的程序里,在下载目录里的 **isd_config.ini** 文件里,把 **LATCH_IO** 打开。 .. image:: ini_config.png :alt: "ini文件配置需要保持住的 IO" :align: center .. centered:: ini文件配置需要保持住的 IO 4、在升级后的程序里,在 **main()** 函数的 **power_early_flowing()** 函数前设置好之前需要保持的IO的状态。 .. image:: Preprocess_IO_status.png :alt: "升级后预设置好保持住的IO的状态" :align: center .. centered:: 升级后预设置好保持住的IO的状态 5、在升级后的程序里,在 **power_early_flowing()** 函数里,把需要保持住IO给保护起来,避免升级后的程序在后面解锁的时候破坏其IO状态。 .. image:: Protect_IO.png :alt: "升级后把需要保持住的IO保护起来" :align: center .. centered:: 升级后把需要保持住的IO保护起来 .. note:: | 1、上述第1、2、3点属于 **升级前的程序** 需要做的步骤; | 2、第4、5点属于 **升级后的程序** 需要做的步骤; | 3、在1、2、3点步骤里的 **IO状态配置** 需要保证一致。 | 4、若在校验文件过程中出错导致的复位,此时若想保持住IO,需要打开 **UPDATA_KEEP_IO_ENABLE** 宏且如果涉及到PA0、PA9、PA10,还需要在 **update_get_latch_romic()** 函数里把对应的IO状态设置好。(见下图) .. image:: verify_file_reset.png :alt: "校验文件过程中数据错误导致复位" :align: center .. centered:: 校验文件过程中数据错误导致复位 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _公版SDK应用主要升级功能: 公版SDK应用主要升级功能 ***************************** | 玩具应用主要包含的升级功能为:设备升级,测试盒串口升级; | 对讲机应用主要包含的升级功能为:设备升级,测试盒串口/蓝牙升级,手机ota升级; | 遥控器从机应用主要包含的升级功能为:测试盒串口/蓝牙升级,手机ota升级,手机usb升级主机; | dongle主机没有添加升级功能入口进入应用中。 用户可根据实际需求,在对应地方添加对应的升级方式入口即可。 .. note:: | 设备升级 调用升级入口后会主动去搜索对应设备里是否存在升级文件进而升级。 | 测试盒升级 是测试盒方主动发送命令过来后,小机解析命令后去进入升级入口进行升级。 | 手机ota升级 是手机端连接小机后,主动发送升级命令过来,小机解析到命令后进入升级入口进行升级。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _带快速启动进行升级: 带快速启动进行升级 ***************************** | 快速启动 指的是使用了一拖二烧写器烧写了 MASKROM_SOFTWARE_USE 配置。 | 芯片在烧写了快速启动后,无法再通过USB强制下载工具下载代码,且在v1.4.0版本之前(不包括v1.4.0版本)升级功能都无法正常使用。 在v1.4.0版本(包括v1.4.0版本)后,升级支持带快速启动升级。用户直接使用升级功能即可。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _相关升级软件获取: 相关升级软件获取 ***************************** | `手机OTA升级软件获取 `_ | `手机USB升级软件获取 `_