4. AW31 手机ota升级slave
4.1. 手机ota升级slave简要流程
下面简要介绍一下设备升级流程:
手机app(杰理OTA升级)蓝牙连接从机 –> 选择要升级的ufw文件 –> 校验ufw文件 –> 进入loader升级
在不同应用的板级文件
board_aw31x_xx_global_build_cfg.h
里 打开手机ota升级使能(CONFIG_APP_OTA_EN);手机app蓝牙连接成功后,初始化rcsp,选择要升级的ufw文件,点击升级;
手机app显示文件校验中,此时如果校验出错,则会进行系统复位操作( 用户需要注意!!! )
校验完成后,从机跳入loader进行升级(该过程不受断电、蓝牙断开影响,用户重新点击升级即可)。
Warning
升级注意
1:选择该升级方式前,注意查看该升级方式所需的VM区域大小是否充足;
2:在步骤3里,任何出错都会导致系统复位;
3:进入步骤6后,原程序不保留,该过程出现任何错误,在手机端可以进行回连重新进行升级;
4:该升级方式,蓝牙latency需要注意设置为0;
4.2. sdk中手机ota升级slave简要流程
下面主要讲解一下HID和transfer工程的手机ota升级slave 简要流程
4.2.1. HID工程
以#define CONFIG_BOARD_AW31N_DEMO
板级为例
在apps/demo/hid/board/bd47/board_aw31n_demo_global build_cfg.h
打开CONFIG_APP_OTA_EN
宏
完成连接后,在
ble_hogp.c
中会对rcsp进行初始化
#if RCSP_BTMATE_EN
case ATT_CHARACTERISTIC_ae02_02_CLIENT_CONFIGURATION_HANDLE:
hogp_connection_update_enable = 0;
ble_gatt_server_set_update_send(connection_handle, ATT_CHARACTERISTIC_ae02_02_VALUE_HANDLE, ATT_OP_AUTO_READ_CCC);
ble_op_latency_skip(connection_handle, 0xffff);
/* set_rcsp_conn_handle(connection_handle); */
#if (defined(BT_CONNECTION_VERIFY) && (0 == BT_CONNECTION_VERIFY))
JL_rcsp_auth_reset(); //hid设备试能nofity的时候reset auth保证APP可以重新连接
#endif
rcsp_init();
rcsp_dev_select(RCSP_BLE);
#if (TCFG_HID_AUTO_SHUTDOWN_TIME)
__ble_bt_evnet_post(SYS_BT_EVENT_FORM_COMMON, COMMON_EVENT_SHUTDOWN_DISABLE, NULL, 0);
/* auto_shutdown_disable(); */
#endif
#endif
SDK收到消息后,进入升级
apps/demo/hid/modules/app_comm_proc.c
#if CONFIG_APP_OTA_EN
app_update_start(msg[0]);
if (rcsp_update_is_start()) {
//donot enter sleep
return 0;
}
#endif
4.2.2. transfer工程
在apps/demo/transfer/board/bd47/board_aw31n_demo_global_build_cfg.h
打开CONFIG_APP_OTA_EN
宏
完成连接后,在RCSP handle使能逻辑中,在
ble_trans.c
中会对rcsp进行初始化
#if RCSP_BTMATE_EN
case ATT_CHARACTERISTIC_ae02_02_CLIENT_CONFIGURATION_HANDLE:
ble_op_latency_skip(connection_handle, 0xffff); //
ble_gatt_server_set_update_send(connection_handle, ATT_CHARACTERISTIC_ae02_02_VALUE_HANDLE, ATT_OP_AUTO_READ_CCC);
#if (defined(BT_CONNECTION_VERIFY) && (0 == BT_CONNECTION_VERIFY))
JL_rcsp_auth_reset(); //hid设备试能nofity的时候reset auth保证APP可以重新连接
#endif
rcsp_init();
rcsp_dev_select(RCSP_BLE);
#endif
SDK收到消息后,进入升级
apps/demo/transfer/modules/app_comm_proc.c
#if CONFIG_APP_OTA_EN
app_update_start(msg[0]);
if (rcsp_update_is_start()) {
//donot enter sleep
return 0;
}
#endif
Important
值得注意的是,由于HID工程的RCSP初始化是放在ble_hogp.c这个文件,因此所有的hid应用都有rcsp升级功能,而transfer工程只适配了trans这个应用,如果transfer工程其他应用的ble从机也需要添加ota升级工程,可以模仿trans这个应用添加初始化逻辑
4.2.3. 手机APP升级操作步骤
手机ota APP软件获取:
https://gitee.com/Jieli-Tech/Android-JL_OTA/blob/master/apk/JLOTA-V1.7.3-debug_20240227_1.apk