BabyOS OTA服务介绍

BabyOS的OTA例程地址:https://gitee.com/notrynohigh/BabyOS_Example/tree/BearPi-IAP/

BabyOS的OTA是基于两个功能模块:协议(b_mod_protocol)和IAP(b_mod_iap)

为更加方便地为产品增加OTA功能,BabyOS增加OTA服务,将协议模块与IAP模块进行结合。

BabyOS早先便提供协议服务制定了一套指令和参数,与具体协议进行解耦。

../_images/uml_ota.jpg

订阅指令是协议服务提供的功能,其运行流程如下:

../_images/uml_ota_sub.jpg

因此OTA服务并不依赖具体哪一个协议,用户将自己的私有协议对接BabyOS的协议服务便可以直接使用OTA服务。

具体代码:

int main(void)
{
    ....
    /* USER CODE BEGIN 2 */
    bInit();
    /* USER CODE END 2 */

    /* Infinite loop */
    /* USER CODE BEGIN WHILE */
    HAL_UART_Receive_IT(&huart1, &Uart1RecDat, 1);
    bHalUartReceiveIdle(B_HAL_UART_1, &ProtocolUart);
    // 初始化协议服务模块
    ProtocolId = bProtSrvInit(&ProtocolAttr, _ProtSrvGetInfo);
    // 初始化ota服务模块
    bOtaSrvInit(ProtocolId, _ProtocolSendData, bSPIFLASH, bSPIFLASH, 180);

    bGUI_ADD_DEVICE(bST7789, NULL, 240, 240, 0);
    UG_FillScreen(C_RED);
    while (1)
    {
        bExec();
    }
}

如此,只需要调用1个接口即可。

可配合BabyOS的上位机进行实验:https://gitee.com/notrynohigh/BabyOS_Protocol