mover version rollback function for OTA to tool dir

This commit is contained in:
wgzAIIT 2023-05-08 14:48:38 +08:00
parent 33abc16c67
commit 078f4babf1
2 changed files with 12 additions and 14 deletions

View File

@ -414,8 +414,7 @@ void InitBoardHardware()
KPrintf("start kernel...\n"); KPrintf("start kernel...\n");
#ifdef TOOL_USING_OTA #ifdef TOOL_USING_OTA
FLASH_Init(); //跳转成功设置lastjumpflag为JUMP_SUCCESS_FLAG
//跳转成功将对应跳转失败标志设置 app_clear_jumpflag();
FLASH_DeInit();
#endif #endif
} }

View File

@ -123,7 +123,7 @@ static void UpdateApplication(void)
ota_info_t ota_info; // 定义OTA信息结构体 ota_info_t ota_info; // 定义OTA信息结构体
// 从Flash中读取OTA信息 // 从Flash中读取OTA信息
memcpy(&ota_info, (const void *)FLAG_FLAH_ADDRESS,sizeof(ota_info_t)); mcuboot.op_flash_read(FLAG_FLAH_ADDRESS, (void*)&ota_info, sizeof(ota_info_t));
// 如果OTA升级状态为准备状态且APP分区与download分区版本不同,才可以进行升级 // 如果OTA升级状态为准备状态且APP分区与download分区版本不同,才可以进行升级
if((ota_info.status == OTA_STATUS_READY) && (ota_info.os.crc32 != ota_info.down.crc32)) if((ota_info.status == OTA_STATUS_READY) && (ota_info.os.crc32 != ota_info.down.crc32))
@ -233,7 +233,7 @@ static void BackupVersion(void)
{ {
status_t status; status_t status;
ota_info_t ota_info; ota_info_t ota_info;
memcpy(&ota_info, (const void *)FLAG_FLAH_ADDRESS,sizeof(ota_info_t)); mcuboot.op_flash_read(FLAG_FLAH_ADDRESS, (void*)&ota_info, sizeof(ota_info_t));
ota_info.status = OTA_STATUS_BACKUP; ota_info.status = OTA_STATUS_BACKUP;
UpdateOTAFlag(&ota_info); UpdateOTAFlag(&ota_info);
@ -267,13 +267,12 @@ static void BootLoaderJumpApp(void)
{ {
ota_info_t ota_info; ota_info_t ota_info;
mcuboot.flash_init(); mcuboot.flash_init();
memcpy(&ota_info, (const void *)FLAG_FLAH_ADDRESS,sizeof(ota_info_t)); mcuboot.op_flash_read(FLAG_FLAH_ADDRESS, (void*)&ota_info, sizeof(ota_info_t));
if(ota_info.lastjumpflag == JUMP_FAILED_FLAG) if(ota_info.lastjumpflag == JUMP_FAILED_FLAG)
{ {
mcuboot.print_string("\r\n------Bootloader false, begin backup!------\r\n"); mcuboot.print_string("\r\n------Bootloader false, begin backup!------\r\n");
BackupVersion(); BackupVersion();
} }
else else
{ {
@ -320,7 +319,7 @@ static void app_ota(void)
mcuboot.flash_init(); mcuboot.flash_init();
mcuboot.serial_init(); mcuboot.serial_init();
memcpy(&ota_info, (const void *)FLAG_FLAH_ADDRESS,sizeof(ota_info_t)); mcuboot.op_flash_read(FLAG_FLAH_ADDRESS, (void*)&ota_info, sizeof(ota_info_t));
ota_info.status = OTA_STATUS_DOWNLOADING; ota_info.status = OTA_STATUS_DOWNLOADING;
UpdateOTAFlag(&ota_info); UpdateOTAFlag(&ota_info);
size = mcuboot.download_by_serial(DOWN_FLAH_ADDRESS); size = mcuboot.download_by_serial(DOWN_FLAH_ADDRESS);
@ -359,7 +358,7 @@ void app_clear_jumpflag(void)
mcuboot.flash_init(); mcuboot.flash_init();
//跳转成功设置lastjumpflag为JUMP_SUCCESS_FLAG //跳转成功设置lastjumpflag为JUMP_SUCCESS_FLAG
ota_info_t ota_info; ota_info_t ota_info;
memcpy(&ota_info, (const void *)FLAG_FLAH_ADDRESS,sizeof(ota_info_t)); mcuboot.op_flash_read(FLAG_FLAH_ADDRESS, (void*)&ota_info, sizeof(ota_info_t));
ota_info.lastjumpflag = JUMP_SUCCESS_FLAG; ota_info.lastjumpflag = JUMP_SUCCESS_FLAG;
UpdateOTAFlag(&ota_info); UpdateOTAFlag(&ota_info);
mcuboot.flash_deinit(); mcuboot.flash_deinit();
@ -407,12 +406,12 @@ void ota_entry(void)
switch(ch2) switch(ch2)
{ {
case 0x31: case 0x31:
mcuboot.op_jump(); BootLoaderJumpApp();
break; break;
case 0x32: case 0x32:
mcuboot.flash_init(); mcuboot.flash_init();
memcpy(&ota_info, (const void *)FLAG_FLAH_ADDRESS,sizeof(ota_info_t)); mcuboot.op_flash_read(FLAG_FLAH_ADDRESS, (void*)&ota_info, sizeof(ota_info_t));
/* 此时APP分区还没有有效的固件,需要在bootloader下通过iap烧写出厂固件 */ /* 此时APP分区还没有有效的固件,需要在bootloader下通过iap烧写出厂固件 */
if((ota_info.os.size > APP_FLASH_SIZE) || (calculate_crc32(XIUOS_FLAH_ADDRESS, ota_info.os.size) != ota_info.os.crc32)) if((ota_info.os.size > APP_FLASH_SIZE) || (calculate_crc32(XIUOS_FLAH_ADDRESS, ota_info.os.size) != ota_info.os.crc32))
{ {
@ -425,7 +424,7 @@ void ota_entry(void)
} }
mcuboot.flash_deinit(); mcuboot.flash_deinit();
mcuboot.op_jump(); BootLoaderJumpApp();
break; break;
case 0x33: case 0x33:
@ -436,7 +435,7 @@ void ota_entry(void)
} }
else else
{ {
mcuboot.op_jump(); BootLoaderJumpApp();
} }
} }
} }