forked from xuos/xiuos
mover version rollback function for OTA to tool dir
This commit is contained in:
parent
33abc16c67
commit
078f4babf1
|
@ -414,8 +414,7 @@ void InitBoardHardware()
|
|||
KPrintf("start kernel...\n");
|
||||
|
||||
#ifdef TOOL_USING_OTA
|
||||
FLASH_Init();
|
||||
//跳转成功将对应跳转失败标志设置
|
||||
FLASH_DeInit();
|
||||
//跳转成功设置lastjumpflag为JUMP_SUCCESS_FLAG
|
||||
app_clear_jumpflag();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -123,7 +123,7 @@ static void UpdateApplication(void)
|
|||
ota_info_t ota_info; // 定义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分区版本不同,才可以进行升级
|
||||
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;
|
||||
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;
|
||||
UpdateOTAFlag(&ota_info);
|
||||
|
@ -267,13 +267,12 @@ static void BootLoaderJumpApp(void)
|
|||
{
|
||||
ota_info_t ota_info;
|
||||
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)
|
||||
{
|
||||
mcuboot.print_string("\r\n------Bootloader false, begin backup!------\r\n");
|
||||
BackupVersion();
|
||||
|
||||
BackupVersion();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -320,7 +319,7 @@ static void app_ota(void)
|
|||
mcuboot.flash_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;
|
||||
UpdateOTAFlag(&ota_info);
|
||||
size = mcuboot.download_by_serial(DOWN_FLAH_ADDRESS);
|
||||
|
@ -359,7 +358,7 @@ void app_clear_jumpflag(void)
|
|||
mcuboot.flash_init();
|
||||
//跳转成功设置lastjumpflag为JUMP_SUCCESS_FLAG
|
||||
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;
|
||||
UpdateOTAFlag(&ota_info);
|
||||
mcuboot.flash_deinit();
|
||||
|
@ -407,12 +406,12 @@ void ota_entry(void)
|
|||
switch(ch2)
|
||||
{
|
||||
case 0x31:
|
||||
mcuboot.op_jump();
|
||||
BootLoaderJumpApp();
|
||||
break;
|
||||
|
||||
case 0x32:
|
||||
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烧写出厂固件 */
|
||||
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.op_jump();
|
||||
BootLoaderJumpApp();
|
||||
break;
|
||||
|
||||
case 0x33:
|
||||
|
@ -436,7 +435,7 @@ void ota_entry(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
mcuboot.op_jump();
|
||||
BootLoaderJumpApp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue