BLE Large Image OAD是否支持 多次在线升级
时间:10-02
整理:3721RD
点击:
ImageA with OAD ,size = 90K
Image B ,size = 157K
先通过A 无线下载B,然后系统默认从B启动
当要再次升级 B的时候应该如何操作呢?
yu,
好问题!
在large image B 的工程中,以advanced remote 工程为例,
在HIDAdvRemote.c 文件中,hidAdvRemoteKeyCback()函数,
下面代码:
else if ( cmd == 0xc1 ) //TV - OAD_LARGE
{
GAPRole_TerminateConnection();
uint16 crc[2] = { 0x0000, 0xFFFF };
uint16 addr = OAD_IMG_R_PAGE * ((uint16)(HAL_FLASH_PAGE_SIZE / HAL_FLASH_WORD_SIZE)) + OAD_IMG_CRC_OSET / HAL_FLASH_WORD_SIZE;
HalFlashWrite(addr, (uint8 *)crc, 1);
HAL_SYSTEM_RESET();
}
看到了吗?这就是你想要的答案:)
遥控器上,是通过按“TV” 按键,运行上面代码,是imageB 失效,然后重启,这样BIM 就会引导image A 启动,然后就能再次更新imageB了。
你也可以这么做,通过其他事件启动这段代码就可以了。