1.修复loader升级问题
This commit is contained in:
parent
7dd8eef490
commit
90f03df218
|
@ -2065,46 +2065,48 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char
|
||||||
// debug_err_var("OtaFlag=", info->OtaFlag);
|
// debug_err_var("OtaFlag=", info->OtaFlag);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/* assume ota_flag is read from partition_sys and in the first word */
|
||||||
|
_THUMB2 static UINT32 bl_check_ota_flag(UINT32 buf_fdt, UINT32 buf_size)
|
||||||
|
{
|
||||||
|
int er;
|
||||||
|
unsigned char *p_fdt = NULL;
|
||||||
|
DRAM_PARTITION *p_dram_partition = NULL;
|
||||||
|
unsigned char *p_tmp = (unsigned char *)SDRAM_Start_FW;
|
||||||
|
|
||||||
/* assume ota_flag is read from partition_sys and in the first word */
|
// open flash
|
||||||
_THUMB2 static UINT32 bl_check_ota_flag(void)
|
if (bl_flash_open() != 0) {
|
||||||
{
|
debug_msg("flash open failed\r\n");
|
||||||
int er;
|
return 0;
|
||||||
unsigned char *p_fdt = NULL;
|
}
|
||||||
DRAM_PARTITION *p_dram_partition = NULL;
|
|
||||||
unsigned char *p_tmp = (unsigned char *)SDRAM_Start_FW;
|
|
||||||
|
|
||||||
// open flash
|
#if (FDT_SUPPORT)
|
||||||
if (bl_flash_open() != 0) {
|
// load fdt
|
||||||
debug_msg("flash open failed\r\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if (FDT_SUPPORT)
|
debug_msg_var("buf_fdt=", buf_fdt);
|
||||||
// load fdt
|
debug_msg_var("buf_size=", buf_size);
|
||||||
er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer.
|
er = bl_load_fdt_from_flash((unsigned char *)buf_fdt, buf_size, &p_fdt); // dtb size less than 32MB to be safer.
|
||||||
if (er != 0) {
|
if (er != 0) {
|
||||||
debug_err("load fdt failed\r\n");
|
debug_err("load fdt failed\r\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION);
|
p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION);
|
||||||
if (p_dram_partition == NULL) {
|
if (p_dram_partition == NULL) {
|
||||||
debug_err("null p_dram_partition\r\n");
|
debug_err("null p_dram_partition\r\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(bl_load_sys_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp)){
|
if(bl_load_sys_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp)){
|
||||||
debug_err("bl_load_sys_from_flash failed\r\n");
|
debug_err("bl_load_sys_from_flash failed\r\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32* ota_flag = (UINT32*)p_tmp;
|
UINT32* ota_flag = (UINT32*)p_tmp;
|
||||||
debug_msg_var("ota_flag=", *ota_flag);
|
debug_msg_var("ota_flag=", *ota_flag);
|
||||||
|
|
||||||
return (*ota_flag);
|
return (*ota_flag);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/***********************************************************************************/
|
/***********************************************************************************/
|
||||||
|
|
||||||
|
@ -3129,7 +3131,8 @@ _THUMB2 UINT32 bl_mainFlow(void)
|
||||||
UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE;
|
UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE;
|
||||||
UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000;
|
UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000;
|
||||||
UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW;
|
UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW;
|
||||||
|
UINT32 uiOTABufferAddr = uiUpdateBootloaderBufAddr + 0xA000;
|
||||||
|
UINT32 uiOTABufferSize = 0x10000 * 2; /* 2 blks */
|
||||||
// UART initial sequence
|
// UART initial sequence
|
||||||
//uart_openSystemUART();
|
//uart_openSystemUART();
|
||||||
// rtc reset shutdown timer
|
// rtc reset shutdown timer
|
||||||
|
@ -3215,7 +3218,7 @@ _THUMB2 UINT32 bl_mainFlow(void)
|
||||||
UINT32 ota_flag = 0;
|
UINT32 ota_flag = 0;
|
||||||
if(gsfSpecialKeyCallBack(0))
|
if(gsfSpecialKeyCallBack(0))
|
||||||
{
|
{
|
||||||
ota_flag = bl_check_ota_flag();
|
ota_flag = bl_check_ota_flag(uiOTABufferAddr, uiOTABufferSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !(USB_WRITELOADER || UART_UPDATE)
|
#if !(USB_WRITELOADER || UART_UPDATE)
|
||||||
|
@ -3299,15 +3302,19 @@ _THUMB2 UINT32 bl_mainFlow(void)
|
||||||
if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) {
|
if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) {
|
||||||
uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log
|
uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log
|
||||||
uiUpdateFileLen = adjusted_size;
|
uiUpdateFileLen = adjusted_size;
|
||||||
} else {
|
|
||||||
bl_displayErrMsg("invalid firmware");
|
|
||||||
}
|
|
||||||
#if UPDATE_EMU_CODE
|
#if UPDATE_EMU_CODE
|
||||||
uiLoaderFunc |= FUNC_UPDATE_FW;
|
uiLoaderFunc |= FUNC_UPDATE_FW;
|
||||||
#else
|
#else
|
||||||
uiLoaderFunc |= FUNC_RUN_CARD;
|
uiLoaderFunc |= FUNC_RUN_CARD;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
} else {
|
||||||
|
debug_err("invalid firmware");
|
||||||
|
uiLoaderFunc |= FUNC_RUN_FLASH;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
fat_close_rootfile();
|
fat_close_rootfile();
|
||||||
debug_msg("\r\n"); // for line end RRRRRRR....
|
debug_msg("\r\n"); // for line end RRRRRRR....
|
||||||
|
|
Loading…
Reference in New Issue
Block a user