快速启动/唤醒

简介

Note

AW31N系列芯片支持简化启动/唤醒流程,以达到快速启动/唤醒的效果。但使用单脚晶振,如AW312A封装,配置完快速启动后,启动时间加快效果不稳定。

快速唤醒:

  • 快速启动是指芯片软关机开始启动的过程,优化启动流程。 没有修改升级相关流程,所以不会影响芯片的正常烧录、下载等。

快速启动:

  • 快速启动是指芯片从上电开始启动的过程,简化启动流程,把芯片启动流程当中检测升级/下载的相关流程优化掉。因为优化掉这部分流程,一旦烧录了快速启动后,量产工具烧录器(一拖二、一拖八)或强制升级工具无法正常识别和烧录芯片,所以此烧录是不可逆的,所以必须慎重烧录

芯片烧录了快速启动后,无法使用烧录器重新烧录芯片,但是通过三种方式升级程序:

  1. 测试盒BLE-OTA升级

  2. 测试盒串口OTA升级

  3. 外部给个触发信号芯片跳转到升级流程,再通过上位机进行升级。

区分升级程序烧录程序:升级程序无法对已烧录程序芯片的原来的分区进行修改,所以要修改分区的程序更改无法通过升级实现,只能通过烧录方式烧录实现。

烧录了快速启动后就无法更改初版程序的分区,另外不同SDK版本的程序一般不可互升。

快速唤醒介绍

公版sdk里面通过app_soft_flag.sfc_fast_boot = 1, 默认配置为快速唤醒。

测试数据:跑到c_main第一行快速启动4.6ms

image-20241111102917240

image-20241111102935618

快速启动介绍

使用介绍

  • 程序上:

在isd_confug_ini.c上[SYS_CFG_PARAM]段后添加下列烧录器专家配置项:

e6ef079b_11285002此两项配置分别对应两个流程的优化,此两项的关系是独立的,优化的时间是叠加关系: 配置项FAST_PU_DIS :烧录器(一拖八、一拖二)都不能识别、烧写芯片,对应优化时间8ms左右。 配置项MASKROM_SOFTWARE_USE :强制升级工具不能识别芯片、下载程序,对应优化时间13ms左右。

  • 烧录器配置上:

配置后生成fw导入到烧录器后,配置界面会多出两个配置:

d84364f5_11285002

注意:在烧录器界面配置中,两个配置项不勾选才是使能此选项的快速启动优化。

测试数据: 配置以上两项优化,芯片从上电到c_main()入口函数第一行的时间为6.5ms左右。使用单脚晶振芯片的时间为6.5~20ms范围内抖动。 只优化其中一项则需要增加上面介绍单项优化相应的时间。

烧录快速启动后调试或更新程序

由于烧录了快速启动后,烧录器和强制升级工具无法识别芯片,以下介绍三种方法来更新已烧录快速启动芯片的程序。 注意:此三种方法,都需要在烧录快速启动的功能的同时把以下其中一种或多种方法配置及修改同步到程序上一起烧录!!!! 若已烧录快速启动的芯片无以下配置或缺少部分配置,将无法更新芯片里的程序!!!!

  • 调用相关跳转接口,在一个地方主动触发以下代码(按键或者IO触发)

y_printf("GO TO UPDATE MODE");
local_irq_disable();
ram_protect_close();
nvram_set_boot_state(2);
struct app_soft_flag_t soft_flag = {0};
latch_reset(&soft_flag);

image-20241111104859605

  • 测试盒BLE-OTA升级

找到当前应用对应的板级,以apps/demo/transfer/board/bd47/board_aw31n_demo_global_build_cfg.h为例

打开CONFIG_UPDATE_JUMP_TO_MASK宏和TESTBOX_BT_UPDATE_EN

#define CONFIG_UPDATE_JUMP_TO_MASK              1   	//配置升级到loader的方式0为直接reset,1为跳转(适用于芯片电源由IO口KEEP住的方案,需要注意检查跳转前是否将使用DMA的硬件模块全部关闭)
#define TESTBOX_BT_UPDATE_EN                    1           // 测试盒升级
  • 测试盒串口OTA升级

找到当前应用对应的板级,以apps/demo/transfer/board/bd47/board_aw31n_demo_global_build_cfg.h为例

打开CONFIG_UPDATE_JUMP_TO_MASK宏和TESTBOX_UART_UPDATE_EN

#define CONFIG_UPDATE_JUMP_TO_MASK              1   	//配置升级到loader的方式0为直接reset,1为跳转(适用于芯片电源由IO口KEEP住的方案,需要注意检查跳转前是否将使用DMA的硬件模块全部关闭)
#define TESTBOX_UART_UPDATE_EN                  1           // 测试盒串口升级