ImageA with OAD ,size = 90K
Image B ,size = 157K
先通过A 无线下载B,然后系统默认从B启动
当要再次升级 B的时候应该如何操作呢?
Yan:
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了。
你也可以这么做,通过其他事件启动这段代码就可以了。