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早先便提供协议服务制定了一套指令和参数,与具体协议进行解耦。
订阅指令是协议服务提供的功能,其运行流程如下:
因此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