4. AW31 手机ota升级slave

4.1. 手机ota升级slave简要流程

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

手机app(杰理OTA升级)蓝牙连接从机 –> 选择要升级的ufw文件 –> 校验ufw文件 –> 进入loader升级

  1. 在不同应用的板级文件board_aw31x_xx_global_build_cfg.h里 打开手机ota升级使能(CONFIG_APP_OTA_EN);

  2. 手机app蓝牙连接成功后,初始化rcsp,选择要升级的ufw文件,点击升级;

  3. 手机app显示文件校验中,此时如果校验出错,则会进行系统复位操作( 用户需要注意!!!

  4. 校验完成后,从机跳入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

  1. 完成连接后,在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

  1. 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

  1. 完成连接后,在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
  1. 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

57f93f9b40a7fc7c1bb8c18092bb790