1.软升级改到uboot下
This commit is contained in:
parent
0a4ce6f506
commit
7ce822975c
|
@ -1436,7 +1436,8 @@ CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
|
||||||
# CONFIG_GPIO_WATCHDOG is not set
|
# CONFIG_GPIO_WATCHDOG is not set
|
||||||
# CONFIG_XILINX_WATCHDOG is not set
|
# CONFIG_XILINX_WATCHDOG is not set
|
||||||
# CONFIG_ZIIRAVE_WATCHDOG is not set
|
# CONFIG_ZIIRAVE_WATCHDOG is not set
|
||||||
# CONFIG_NA51055_WATCHDOG is not set
|
CONFIG_NA51055_WATCHDOG=y
|
||||||
|
# CONFIG_NA51055_WATCHDOG_EXTERNAL_RESET is not set
|
||||||
# CONFIG_CADENCE_WATCHDOG is not set
|
# CONFIG_CADENCE_WATCHDOG is not set
|
||||||
# CONFIG_FTWDT010_WATCHDOG is not set
|
# CONFIG_FTWDT010_WATCHDOG is not set
|
||||||
# CONFIG_DW_WATCHDOG is not set
|
# CONFIG_DW_WATCHDOG is not set
|
||||||
|
|
|
@ -127,12 +127,35 @@ int board_eth_init(bd_t *bis)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_NVT_IVOT_SOC_FW_UPDATE_SUPPORT
|
#ifdef CONFIG_NVT_IVOT_SOC_FW_UPDATE_SUPPORT
|
||||||
|
|
||||||
|
#define MAKEFOURCC(ch0, ch1, ch2, ch3) ((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) | ((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24 ))
|
||||||
|
#define WDT_REG_ADDR(ofs) (IOADDR_WDT_REG_BASE+(ofs))
|
||||||
|
#define WDT_GETREG(ofs) INW(WDT_REG_ADDR(ofs))
|
||||||
|
#define WDT_SETREG(ofs,value) OUTW(WDT_REG_ADDR(ofs), (value))
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
WDT_OTA_STS_INVALID = 0,
|
||||||
|
WDT_OTA_STS_LOADER_DETECTING_FW,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_OPEN_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_READ_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_NO_NEED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_UNKNOWN,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_OK, /* uboot stage ok */
|
||||||
|
WDT_OTA_STS_LINUX_TRIGGER, /* linux stage trigger ota */
|
||||||
|
} WDT_OTA_STS;
|
||||||
|
|
||||||
|
#define WDT_OTA_MAKEFOURCC(sts) MAKEFOURCC('O','T','A', sts)
|
||||||
|
#define WDT_OTA_SET_STS(sts) WDT_SETREG(0x84, WDT_OTA_MAKEFOURCC(sts))
|
||||||
|
#define WDT_OTA_GET_STS() WDT_GETREG(0x84)
|
||||||
|
|
||||||
static int nvt_handle_fw_abin(void)
|
static int nvt_handle_fw_abin(void)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
char cmdline[1024] = {0};
|
char cmdline[1024] = {0};
|
||||||
char buf[1024] = {0};
|
char buf[1024] = {0};
|
||||||
int ota_upgrade_sts = 0;
|
int ota_upgrade_sts = 0;
|
||||||
|
int is_ota = (WDT_OTA_GET_STS() == WDT_OTA_MAKEFOURCC(WDT_OTA_STS_LOADER_DETECTING_FW)) ? 1 : 0;
|
||||||
|
|
||||||
/* To handle firmware update */
|
/* To handle firmware update */
|
||||||
ret = nvt_fw_update(false);
|
ret = nvt_fw_update(false);
|
||||||
|
@ -140,19 +163,38 @@ static int nvt_handle_fw_abin(void)
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
case ERR_NVT_UPDATE_FAILED:
|
case ERR_NVT_UPDATE_FAILED:
|
||||||
printf("%sUpdate fail %s\r\n", ANSI_COLOR_RED, ANSI_COLOR_RESET);
|
printf("%sUpdate fail %s\r\n", ANSI_COLOR_RED, ANSI_COLOR_RESET);
|
||||||
|
|
||||||
|
if(is_ota)
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_UBOOT_UPDATE_FAILED);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
case ERR_NVT_UPDATE_OPENFAILED:
|
case ERR_NVT_UPDATE_OPENFAILED:
|
||||||
printf("Open SD fail:%s No SD device? %s\r\n", ANSI_COLOR_YELLOW, ANSI_COLOR_RESET);
|
printf("Open SD fail:%s No SD device? %s\r\n", ANSI_COLOR_YELLOW, ANSI_COLOR_RESET);
|
||||||
|
|
||||||
|
if(is_ota)
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_UBOOT_UPDATE_OPEN_FAILED);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ERR_NVT_UPDATE_READ_FAILED:
|
case ERR_NVT_UPDATE_READ_FAILED:
|
||||||
printf("%sRead SD fail %s\r\n", ANSI_COLOR_RED, ANSI_COLOR_RESET);
|
printf("%sRead SD fail %s\r\n", ANSI_COLOR_RED, ANSI_COLOR_RESET);
|
||||||
|
|
||||||
|
if(is_ota)
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_UBOOT_UPDATE_READ_FAILED);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
case ERR_NVT_UPDATE_NO_NEED:
|
case ERR_NVT_UPDATE_NO_NEED:
|
||||||
printf("%sNo need to update (%s) %s\r\n", ANSI_COLOR_YELLOW, get_nvt_bin_name(NVT_BIN_NAME_TYPE_FW), ANSI_COLOR_RESET);
|
printf("%sNo need to update (%s) %s\r\n", ANSI_COLOR_YELLOW, get_nvt_bin_name(NVT_BIN_NAME_TYPE_FW), ANSI_COLOR_RESET);
|
||||||
|
|
||||||
|
if(is_ota)
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_UBOOT_UPDATE_NO_NEED);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
if(is_ota)
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_UBOOT_UPDATE_UNKNOWN);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ret = nvt_fdt_init(true);
|
ret = nvt_fdt_init(true);
|
||||||
|
@ -162,6 +204,9 @@ static int nvt_handle_fw_abin(void)
|
||||||
} else{
|
} else{
|
||||||
printf("%s%s:%d Update successfully %s\r\n", ANSI_COLOR_YELLOW, __FUNCTION__, __LINE__, ANSI_COLOR_RESET);
|
printf("%s%s:%d Update successfully %s\r\n", ANSI_COLOR_YELLOW, __FUNCTION__, __LINE__, ANSI_COLOR_RESET);
|
||||||
ota_upgrade_sts = 1;
|
ota_upgrade_sts = 1;
|
||||||
|
|
||||||
|
if(is_ota)
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_UBOOT_UPDATE_OK);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* To handle bootargs expanding for the kernel /proc/cmdline and uboot mtdids env setting
|
* To handle bootargs expanding for the kernel /proc/cmdline and uboot mtdids env setting
|
||||||
|
@ -175,6 +220,7 @@ static int nvt_handle_fw_abin(void)
|
||||||
if (ota_upgrade_sts == 1) {
|
if (ota_upgrade_sts == 1) {
|
||||||
strcat(cmdline, "ota_flag=0x1");
|
strcat(cmdline, "ota_flag=0x1");
|
||||||
}
|
}
|
||||||
|
|
||||||
env_set("bootargs",cmdline);
|
env_set("bootargs",cmdline);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -970,6 +970,7 @@
|
||||||
#define SF_CAM_UP_FILE "S530.tar.bz2"
|
#define SF_CAM_UP_FILE "S530.tar.bz2"
|
||||||
#define SF_CAM_UP_FILE_PATH "/mnt/sd/S530.tar.bz2"
|
#define SF_CAM_UP_FILE_PATH "/mnt/sd/S530.tar.bz2"
|
||||||
#define SF_CAMERA_GPS_INFO_FILENAME SF_SD_ROOT"/gps.txt"
|
#define SF_CAMERA_GPS_INFO_FILENAME SF_SD_ROOT"/gps.txt"
|
||||||
|
#define SF_UBOOT_UPDATA_FW ENABLE
|
||||||
//////////////////////sf end///////////////////////////////
|
//////////////////////sf end///////////////////////////////
|
||||||
|
|
||||||
/*******************************************************************************************
|
/*******************************************************************************************
|
||||||
|
|
|
@ -158,7 +158,7 @@ INT32 System_GetBootFirstMode(void)
|
||||||
{
|
{
|
||||||
return PRIMARY_MODE_PHOTO;
|
return PRIMARY_MODE_PHOTO;
|
||||||
}
|
}
|
||||||
else if((PWR_ON_SETUP != PowerOnMode) || (sf_get_fw_update()))
|
else if((PWR_ON_SETUP != PowerOnMode) /*|| (sf_get_fw_update())*/)
|
||||||
{
|
{
|
||||||
return PRIMARY_MODE_TRANSCODE;
|
return PRIMARY_MODE_TRANSCODE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -329,6 +329,24 @@ typedef enum {
|
||||||
UIAPPPHOTO_FRAME_CMD_MAX
|
UIAPPPHOTO_FRAME_CMD_MAX
|
||||||
} UIAPPPHOTO_FRAME_CMD;
|
} UIAPPPHOTO_FRAME_CMD;
|
||||||
|
|
||||||
|
#define IOADDR_WDT_REG_BASE (0xF0050000)
|
||||||
|
#define WDT_REG_ADDR(ofs) (IOADDR_WDT_REG_BASE+(ofs))
|
||||||
|
#define WDT_DATA_OFS 0x84
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
WDT_OTA_STS_INVALID = 0,
|
||||||
|
WDT_OTA_STS_LOADER_DETECTING_FW,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_OPEN_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_READ_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_NO_NEED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_UNKNOWN,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_OK,
|
||||||
|
WDT_OTA_STS_LINUX_TRIGGER,
|
||||||
|
} WDT_OTA_STS;
|
||||||
|
|
||||||
|
#define WDT_OTA_MAKEFOURCC(sts) MAKEFOURCC('O','T','A', sts)
|
||||||
|
|
||||||
typedef struct _PhotoFrameDataType {
|
typedef struct _PhotoFrameDataType {
|
||||||
UINT32 offset;
|
UINT32 offset;
|
||||||
UINT32 size;
|
UINT32 size;
|
||||||
|
|
|
@ -4037,6 +4037,10 @@ INT32 PhotoExe_OnNR(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
||||||
|
|
||||||
INT32 PhotoExe_OnFocusEnd(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
INT32 PhotoExe_OnFocusEnd(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
|
||||||
{
|
{
|
||||||
|
extern UIMenuStoreInfo currentInfo;
|
||||||
|
currentInfo.OtaFlag = WDT_OTA_MAKEFOURCC(WDT_OTA_STS_LINUX_TRIGGER);
|
||||||
|
|
||||||
|
Save_MenuInfo();
|
||||||
|
|
||||||
return NVTEVT_CONSUME;
|
return NVTEVT_CONSUME;
|
||||||
}
|
}
|
||||||
|
|
|
@ -581,6 +581,62 @@ static BOOL cmd_photo_trigger_cap(unsigned char argc, char **argv)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL cmd_photo_ota_trigger(unsigned char argc, char **argv)
|
||||||
|
{
|
||||||
|
UINT32 uiUserData = WDT_OTA_MAKEFOURCC(WDT_OTA_STS_LINUX_TRIGGER);
|
||||||
|
char cmd[128]={0};
|
||||||
|
|
||||||
|
Ux_PostEvent(NVTEVT_ALGMSG_FOCUSEND, 0);
|
||||||
|
|
||||||
|
sprintf(cmd, "mem w %x %x",WDT_REG_ADDR(WDT_DATA_OFS),uiUserData);
|
||||||
|
system(cmd);
|
||||||
|
system("watchdog -T 1 -t 5 /dev/watchdog");
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL cmd_photo_ota_result(unsigned char argc, char **argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
system("devmem 0xF0050084 32 > /tmp/ota_sts");
|
||||||
|
|
||||||
|
FILE* fd = fopen("/tmp/ota_sts", "r");
|
||||||
|
char buf[16];
|
||||||
|
UINT32 ota_mask = 0x00FFFFFF; /* mask status */
|
||||||
|
UINT32 ota_prefix = WDT_OTA_MAKEFOURCC(WDT_OTA_STS_UBOOT_UPDATE_OK) & ota_mask; /* OTA */
|
||||||
|
|
||||||
|
if(fd){
|
||||||
|
|
||||||
|
buf[11] = '\0';
|
||||||
|
fread(buf, 10, 1, fd);
|
||||||
|
DBG_DUMP("ota_sts_str = %s\n", buf);
|
||||||
|
|
||||||
|
UINT32 ota_sts = strtoul(buf, NULL, 16);
|
||||||
|
|
||||||
|
DBG_DUMP("ota_sts = %08X , masked = %08X\n", ota_sts, ota_sts & ota_mask);
|
||||||
|
|
||||||
|
/* OTA success */
|
||||||
|
if(ota_sts == WDT_OTA_MAKEFOURCC(WDT_OTA_STS_UBOOT_UPDATE_OK)){
|
||||||
|
DBG_DUMP("update ok!\n");
|
||||||
|
}
|
||||||
|
/* not OTA */
|
||||||
|
else if(ota_sts == 0x0){
|
||||||
|
DBG_DUMP("not ota\n");
|
||||||
|
}
|
||||||
|
/* OTA wrong status */
|
||||||
|
else if ((ota_sts & ota_mask) == ota_prefix){
|
||||||
|
DBG_DUMP("ota error!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DBG_ERR("/tmp/ota_sts not found!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static SXCMD_BEGIN(uiphoto_cmd_tbl, "uiphoto_cmd_tbl")
|
static SXCMD_BEGIN(uiphoto_cmd_tbl, "uiphoto_cmd_tbl")
|
||||||
SXCMD_ITEM("fd %", cmd_fd, "fd off/on, indxe value 0 ~ 1")
|
SXCMD_ITEM("fd %", cmd_fd, "fd off/on, indxe value 0 ~ 1")
|
||||||
SXCMD_ITEM("ev %", cmd_ev, "ev -2 ~ +2, index value 0 ~ 12")
|
SXCMD_ITEM("ev %", cmd_ev, "ev -2 ~ +2, index value 0 ~ 12")
|
||||||
|
@ -604,6 +660,8 @@ SXCMD_ITEM("quefull %", cmd_quefull, "ui queue full")
|
||||||
SXCMD_ITEM("dumpfdb", cmd_photo_dumpfdb, "dump filedb 0")
|
SXCMD_ITEM("dumpfdb", cmd_photo_dumpfdb, "dump filedb 0")
|
||||||
SXCMD_ITEM("photo %", cmd_photo, "photo mode setting")
|
SXCMD_ITEM("photo %", cmd_photo, "photo mode setting")
|
||||||
SXCMD_ITEM("cap", cmd_photo_trigger_cap, "trigger cap")
|
SXCMD_ITEM("cap", cmd_photo_trigger_cap, "trigger cap")
|
||||||
|
SXCMD_ITEM("ota_trigger %", cmd_photo_ota_trigger, "ota trigger")
|
||||||
|
SXCMD_ITEM("ota_result %", cmd_photo_ota_result, "ota result")
|
||||||
|
|
||||||
SXCMD_END()
|
SXCMD_END()
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ static HD_RESULT _TranscodeExe_CommPool_Init(void)
|
||||||
/* src image yuv buffer */
|
/* src image yuv buffer */
|
||||||
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + _TranscodeExe_Get_Max_Cap_Buf_Size();
|
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + _TranscodeExe_Get_Max_Cap_Buf_Size();
|
||||||
#if HUNTING_CAMERA_MCU == ENABLE
|
#if (HUNTING_CAMERA_MCU == ENABLE) && (SF_UBOOT_UPDATA_FW != ENABLE)
|
||||||
if(sf_get_fw_update())
|
if(sf_get_fw_update())
|
||||||
{
|
{
|
||||||
mem_cfg.pool_info[id].blk_cnt = 0;
|
mem_cfg.pool_info[id].blk_cnt = 0;
|
||||||
|
@ -124,7 +124,7 @@ static HD_RESULT _TranscodeExe_CommPool_Init(void)
|
||||||
id++;
|
id++;
|
||||||
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
|
||||||
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + _TranscodeExe_Get_Target_Buf_Size();
|
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + _TranscodeExe_Get_Target_Buf_Size();
|
||||||
#if HUNTING_CAMERA_MCU == ENABLE
|
#if (HUNTING_CAMERA_MCU == ENABLE) && (SF_UBOOT_UPDATA_FW != ENABLE)
|
||||||
if(sf_get_fw_update())
|
if(sf_get_fw_update())
|
||||||
{
|
{
|
||||||
mem_cfg.pool_info[id].blk_cnt = 0;
|
mem_cfg.pool_info[id].blk_cnt = 0;
|
||||||
|
|
|
@ -136,4 +136,6 @@ void sf_set_wifi_socket(int fd);
|
||||||
int sf_get_wifi_socket(void);
|
int sf_get_wifi_socket(void);
|
||||||
BOOL sf_cmd_para_printf(unsigned char argc, char **argv);
|
BOOL sf_cmd_para_printf(unsigned char argc, char **argv);
|
||||||
BOOL cmd_blu_switch(unsigned char argc, char **argv);
|
BOOL cmd_blu_switch(unsigned char argc, char **argv);
|
||||||
|
BOOL sf_ota_trigger(void);
|
||||||
|
BOOL sf_ota_result(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2067,11 +2067,73 @@ static UINT32 sf_fwupdate(void)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL sf_ota_trigger(void)
|
||||||
|
{
|
||||||
|
UINT32 uiUserData = WDT_OTA_MAKEFOURCC(WDT_OTA_STS_LINUX_TRIGGER);
|
||||||
|
char cmd[128]={0};
|
||||||
|
|
||||||
|
Ux_PostEvent(NVTEVT_ALGMSG_FOCUSEND, 0);
|
||||||
|
|
||||||
|
sprintf(cmd, "mem w %x %x",WDT_REG_ADDR(WDT_DATA_OFS),uiUserData);
|
||||||
|
system(cmd);
|
||||||
|
system("watchdog -T 1 -t 5 /dev/watchdog");
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL sf_ota_result(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
system("devmem 0xF0050084 32 > /tmp/ota_sts");
|
||||||
|
|
||||||
|
FILE* fd = fopen("/tmp/ota_sts", "r");
|
||||||
|
char buf[16];
|
||||||
|
UINT32 ota_mask = 0x00FFFFFF; /* mask status */
|
||||||
|
UINT32 ota_prefix = WDT_OTA_MAKEFOURCC(WDT_OTA_STS_UBOOT_UPDATE_OK) & ota_mask; /* OTA */
|
||||||
|
|
||||||
|
if(fd){
|
||||||
|
|
||||||
|
buf[11] = '\0';
|
||||||
|
fread(buf, 10, 1, fd);
|
||||||
|
DBG_DUMP("ota_sts_str = %s\n", buf);
|
||||||
|
|
||||||
|
UINT32 ota_sts = strtoul(buf, NULL, 16);
|
||||||
|
|
||||||
|
DBG_DUMP("ota_sts = %08X , masked = %08X\n", ota_sts, ota_sts & ota_mask);
|
||||||
|
|
||||||
|
/* OTA success */
|
||||||
|
if(ota_sts == WDT_OTA_MAKEFOURCC(WDT_OTA_STS_UBOOT_UPDATE_OK)){
|
||||||
|
DBG_DUMP("update ok!\n");
|
||||||
|
sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0);
|
||||||
|
sf_set_send_statu(FALSE);
|
||||||
|
}
|
||||||
|
/* not OTA */
|
||||||
|
else if(ota_sts == 0x0){
|
||||||
|
DBG_DUMP("not ota\n");
|
||||||
|
}
|
||||||
|
/* OTA wrong status */
|
||||||
|
else if ((ota_sts & ota_mask) == ota_prefix){
|
||||||
|
DBG_DUMP("ota error!\n");
|
||||||
|
sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR);
|
||||||
|
sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0);
|
||||||
|
sf_set_send_statu(FALSE);
|
||||||
|
vos_util_delay_ms(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DBG_ERR("/tmp/ota_sts not found!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
void* sf_sys_do_upgrade(void *arg)
|
void* sf_sys_do_upgrade(void *arg)
|
||||||
{
|
{
|
||||||
//int s32Ret = 0;
|
//int s32Ret = 0;
|
||||||
|
#if !SF_UBOOT_UPDATA_FW
|
||||||
UIMenuStoreInfo *puiPara = sf_ui_para_get();
|
UIMenuStoreInfo *puiPara = sf_ui_para_get();
|
||||||
|
#endif
|
||||||
SLOGW("Begin to do Upgrade!\n");
|
SLOGW("Begin to do Upgrade!\n");
|
||||||
|
|
||||||
//if(sf_is_enough_power_to_update() == FALSE)
|
//if(sf_is_enough_power_to_update() == FALSE)
|
||||||
|
@ -2085,6 +2147,9 @@ void* sf_sys_do_upgrade(void *arg)
|
||||||
sf_sys_status_led_set(SF_LED_SYS_STATE_UPDATE);
|
sf_sys_status_led_set(SF_LED_SYS_STATE_UPDATE);
|
||||||
vos_util_delay_ms(500);
|
vos_util_delay_ms(500);
|
||||||
|
|
||||||
|
#if SF_UBOOT_UPDATA_FW
|
||||||
|
sf_ota_trigger();
|
||||||
|
#else
|
||||||
//BKG_PostEvent(NVTEVT_BKW_FW_UPDATE);
|
//BKG_PostEvent(NVTEVT_BKW_FW_UPDATE);
|
||||||
if(0 != sf_fwupdate()){
|
if(0 != sf_fwupdate()){
|
||||||
sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR);
|
sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR);
|
||||||
|
@ -2095,6 +2160,7 @@ void* sf_sys_do_upgrade(void *arg)
|
||||||
Save_MenuInfo();
|
Save_MenuInfo();
|
||||||
//sync();
|
//sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0);
|
sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0);
|
||||||
sf_set_send_statu(FALSE);
|
sf_set_send_statu(FALSE);
|
||||||
//if(PWR_ON_SETUP == sf_cardv_convert_power_on_mode())
|
//if(PWR_ON_SETUP == sf_cardv_convert_power_on_mode())
|
||||||
|
@ -2102,6 +2168,7 @@ void* sf_sys_do_upgrade(void *arg)
|
||||||
vos_util_delay_ms(1000);
|
vos_util_delay_ms(1000);
|
||||||
Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
|
Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
//sf_set_fw_update(0);
|
//sf_set_fw_update(0);
|
||||||
|
@ -2443,7 +2510,8 @@ void sf_save_camera_info(void)
|
||||||
}*/
|
}*/
|
||||||
sf_get_wifi_ssid(wifissid);
|
sf_get_wifi_ssid(wifissid);
|
||||||
|
|
||||||
SF_SPRINTF(temp, "IMEI:%s\r\nSoftwareVER:%s\r\nModuleVER:%s\r\nMcuVER:%s\r\nICCID:%s\r\nSSID:%s\r\n", puiPara->ModuleImei, localver, puiPara->ModuleSubver, mcuver, puiPara->SimIccid, wifissid);
|
SF_SPRINTF(temp, "IMEI:%s\r\nSoftwareVER:%s\r\nModuleVER:%s\r\nMcuVER:%s\r\nICCID:%s\r\nICCID-A:%s\r\nICCID-V:%s\r\nSSID:%s\r\nBLE:%s\r\n",
|
||||||
|
puiPara->ModuleImei, localver, puiPara->ModuleSubver, mcuver, puiPara->SimIccid, puiPara->SimIccid, puiPara->SimIccid, wifissid,puiPara->BluSsid);
|
||||||
|
|
||||||
if(access((char*)SF_CAMERA_INFO_FILENAME, F_OK) == 0)
|
if(access((char*)SF_CAMERA_INFO_FILENAME, F_OK) == 0)
|
||||||
{
|
{
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -27,7 +27,7 @@
|
||||||
- @b FALSE: special key is NOT pressed
|
- @b FALSE: special key is NOT pressed
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
typedef BOOL (*LDR_SPECIAL_KEY_CB)(void);
|
typedef BOOL (*LDR_SPECIAL_KEY_CB)(UINT32 ota_flag);
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -141,6 +141,7 @@ static UINT32 g_rtos_size = 0;
|
||||||
#define PATH_PARTITION_NUTTX "partition_nuttx"
|
#define PATH_PARTITION_NUTTX "partition_nuttx"
|
||||||
#define PATH_PARTITION_TEEOS "partition_teeos"
|
#define PATH_PARTITION_TEEOS "partition_teeos"
|
||||||
#define PATH_PARTITION_RTOS "partition_rtos"
|
#define PATH_PARTITION_RTOS "partition_rtos"
|
||||||
|
#define PATH_PARTITION_SYS "partition_sys"
|
||||||
#define PROPERTY_REG "reg"
|
#define PROPERTY_REG "reg"
|
||||||
#define PROPERTY_LABEL "label"
|
#define PROPERTY_LABEL "label"
|
||||||
#define PROPERTY_PARTITION_NAME "partition_name"
|
#define PROPERTY_PARTITION_NAME "partition_name"
|
||||||
|
@ -149,6 +150,7 @@ static DRAM_PARTITION g_dram_partition = {0};
|
||||||
static EMB_PARTITION g_emb_uboot = {0};
|
static EMB_PARTITION g_emb_uboot = {0};
|
||||||
static EMB_PARTITION g_emb_teeos = {0};
|
static EMB_PARTITION g_emb_teeos = {0};
|
||||||
static EMB_PARTITION g_emb_rtos = {0};
|
static EMB_PARTITION g_emb_rtos = {0};
|
||||||
|
static EMB_PARTITION g_emb_sys = {0};
|
||||||
#else // NO FDT_SUPPORT
|
#else // NO FDT_SUPPORT
|
||||||
// refer to met-tbl.dtsi /nvt_memory_cfg
|
// refer to met-tbl.dtsi /nvt_memory_cfg
|
||||||
static DRAM_PARTITION g_dram_partition = {
|
static DRAM_PARTITION g_dram_partition = {
|
||||||
|
@ -691,12 +693,15 @@ _THUMB2 int bl_flash_open(void)
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//int_strg_obj->flash_installIdentifyCB(nor_identify);
|
//int_strg_obj->flash_installIdentifyCB(nor_identify);
|
||||||
|
|
||||||
|
debug_msg("flash_open\r\n");
|
||||||
er = int_strg_obj->flash_open();
|
er = int_strg_obj->flash_open();
|
||||||
if (er < 0) {
|
if (er < 0) {
|
||||||
debug_err("flash open fail\r\n");
|
debug_err("flash open fail\r\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug_msg("flash_open end\r\n");
|
||||||
|
|
||||||
//OUTREG32(NAND_TABLE_VERSION_ADDR, INREG32(uiStorageVersion));
|
//OUTREG32(NAND_TABLE_VERSION_ADDR, INREG32(uiStorageVersion));
|
||||||
|
|
||||||
//if (er == E_OK) {
|
//if (er == E_OK) {
|
||||||
|
@ -714,7 +719,6 @@ _THUMB2 int bl_flash_open(void)
|
||||||
} else {
|
} else {
|
||||||
g_uiStartBlkUpdateFW = StartNandBlkUpdateFW;
|
g_uiStartBlkUpdateFW = StartNandBlkUpdateFW;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_is_flash_open = TRUE;
|
g_is_flash_open = TRUE;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1786,6 +1790,318 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************/
|
||||||
|
|
||||||
|
//#define VER_STR_MAX 32
|
||||||
|
//#define CHAR char
|
||||||
|
//#define FL_IndexInfoMAX 216
|
||||||
|
//#define NVT_MAX_BSS_DESC (64)
|
||||||
|
//#define NVT_WIFIIPC_MAC_ADDR_LEN (6)
|
||||||
|
//#define NVT_MESH_ID_LEN 32
|
||||||
|
//
|
||||||
|
//#define NVT_WSC_MAX_SSID_LEN (64)
|
||||||
|
//#define NVT_MAX_WEP_KEY_LEN (26)
|
||||||
|
//#define NVT_MAX_NETWORK_KEY_LEN (64)
|
||||||
|
//#define NVT_PIN_LEN (8)
|
||||||
|
//#define NVT_MAX_DEVICE_NAME_LEN (32)
|
||||||
|
//
|
||||||
|
//#define SF_TIMER_MAX_NUMBER 2
|
||||||
|
//typedef struct sf_PARA_TIME_S
|
||||||
|
//{
|
||||||
|
// UINT16 Year;
|
||||||
|
// UINT16 Mon;
|
||||||
|
// UINT16 Day;
|
||||||
|
//
|
||||||
|
// UINT16 Hour;
|
||||||
|
// UINT16 Min;
|
||||||
|
// UINT16 Sec;
|
||||||
|
//} SF_PARA_TIME_S;
|
||||||
|
//
|
||||||
|
//typedef struct sf_WORKTIME_S
|
||||||
|
//{
|
||||||
|
// SF_PARA_TIME_S StartTime;
|
||||||
|
// SF_PARA_TIME_S StopTime;
|
||||||
|
//} SF_WORKTIME_S;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// typedef struct _UIMenuUIMenuStoreInfo {
|
||||||
|
// UINT32 OtaFlag;
|
||||||
|
// //Common
|
||||||
|
// CHAR strMakerString[VER_STR_MAX];
|
||||||
|
// CHAR strModelString[VER_STR_MAX];
|
||||||
|
// CHAR strSoftwareVer[VER_STR_MAX];
|
||||||
|
// CHAR strMakeNote[VER_STR_MAX];
|
||||||
|
// CHAR strImageDescription[VER_STR_MAX];
|
||||||
|
// UINT32 uhInfoSize;
|
||||||
|
// UINT32 UIParameter[FL_IndexInfoMAX];
|
||||||
|
// UINT32 ulmodeIndex ; //Record Last Mode Index
|
||||||
|
// UINT32 cbYear;
|
||||||
|
// UINT32 cbMonth;
|
||||||
|
// UINT32 cbDay;
|
||||||
|
// UINT32 cbFileID;
|
||||||
|
// UINT32 ubLanguageIndex;
|
||||||
|
// //photo menu
|
||||||
|
// UINT32 ubAFWindowIndex;
|
||||||
|
// UINT32 ubAFBeamIndex;
|
||||||
|
// UINT32 ubContAF;
|
||||||
|
// UINT32 ubAEmode;
|
||||||
|
// UINT32 ubQviewIndex;
|
||||||
|
// UINT32 ubDzoom;
|
||||||
|
// UINT32 ubBlinkDet;
|
||||||
|
// UINT32 ubSlowShutter;
|
||||||
|
// UINT32 ubContshotIndex;
|
||||||
|
// UINT32 ubTimelapseIndex;
|
||||||
|
// UINT32 ubDatePrint;
|
||||||
|
// UINT32 ubPanModeIndex;
|
||||||
|
// UINT32 ubFlashIndex;
|
||||||
|
// UINT32 ubEVIndex;
|
||||||
|
// UINT32 ubSizeIndex;
|
||||||
|
// UINT32 ubQualityIndex;
|
||||||
|
// UINT32 ubWBIndex;
|
||||||
|
// UINT32 ubColorIndex;
|
||||||
|
// UINT32 ubISOIndex;
|
||||||
|
// UINT32 ubFDIndex ;
|
||||||
|
// UINT32 ubSharpnessIndex;
|
||||||
|
// UINT32 ubPhotoDispMode;
|
||||||
|
//
|
||||||
|
// //wifi
|
||||||
|
// CHAR strSSID[NVT_WSC_MAX_SSID_LEN];
|
||||||
|
// CHAR strPASSPHRASE[NVT_MAX_WEP_KEY_LEN];
|
||||||
|
//
|
||||||
|
// CHAR strSSID_hotspot_1[NVT_WSC_MAX_SSID_LEN];
|
||||||
|
// CHAR strPASSPHRASE_hotspot_1[NVT_MAX_WEP_KEY_LEN];
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// //============Sifar==============///Payton
|
||||||
|
// SF_PARA_TIME_S TimelapseTime;
|
||||||
|
// SF_WORKTIME_S WorkTime[SF_TIMER_MAX_NUMBER];
|
||||||
|
// SF_PARA_TIME_S PirDelayTime;
|
||||||
|
// SF_PARA_TIME_S DailyReportTime;
|
||||||
|
// SF_PARA_TIME_S DailyReportTime2;
|
||||||
|
//
|
||||||
|
// SF_PARA_TIME_S TimeSend1;
|
||||||
|
// SF_PARA_TIME_S TimeSend2;
|
||||||
|
// SF_PARA_TIME_S TimeSend3;
|
||||||
|
// SF_PARA_TIME_S TimeSend4;
|
||||||
|
//
|
||||||
|
// //#2023/02/10#Payton - begin
|
||||||
|
// CHAR CamNameSwitch;/*ON/OFF ,cam name off*/
|
||||||
|
// CHAR CamMode;/* 0 Photo / 1 Video / 2 PIC+Video*/
|
||||||
|
// CHAR FlashLed;/* 0 High / 1 Low */
|
||||||
|
// CHAR ImgSize;/* 24M/12M/8M/5M */
|
||||||
|
// CHAR NightMode;/* Max.Range/Balanced/Min.Blur */
|
||||||
|
// CHAR Multishot;/*1P/2P/3P/4P/5P*/
|
||||||
|
// CHAR MultiShotIntevel;/*0s/1s/2s*/
|
||||||
|
// CHAR SendMulti;/*OFF/ON*/
|
||||||
|
// CHAR VideoSize;/*FHD-1080P/HD-720P/WVGA*/
|
||||||
|
// CHAR VideoTimeMenu;/*5/10/15/20/30/40/50/59*/
|
||||||
|
// CHAR VideoLenth;
|
||||||
|
// CHAR PirSwitch;/*OFF/ON*/
|
||||||
|
// CHAR PirSensitivity;/*High/Middle/Low*/
|
||||||
|
// CHAR PirDelaySwitch;/*OFF/ON*/
|
||||||
|
// CHAR TimelapseSwitch;/*OFF/ON*/
|
||||||
|
// CHAR WorkTime1Switch;/*OFF/ON*/
|
||||||
|
// CHAR WorkTime2Switch;/*OFF/ON*/
|
||||||
|
// CHAR SimAutoSwitch;/*Auto/Manual*/
|
||||||
|
// CHAR SendMaxNum;/*Unlimited/1~99*/
|
||||||
|
// CHAR GprsMode;/*Daily/Instant*/
|
||||||
|
// CHAR DailyReportSwitch;/*OFF/ON*/
|
||||||
|
// CHAR ReDailyReport;
|
||||||
|
// CHAR DailyReportTestSwitch;
|
||||||
|
// CHAR SimPinFlag;/*ON*/
|
||||||
|
// CHAR GpsSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR Language;
|
||||||
|
// CHAR DateStyle;/*YY/MM/DD-(CN) / MM/DD/YY-(US) / DD/MM/YY-(EU)*/
|
||||||
|
// CHAR StampSwitch;/*0:OFF;1:ON*///FL_DATE_STAMP
|
||||||
|
// CHAR BatteryType;/*Alkaline/NI-MH/LI*/
|
||||||
|
// CHAR SdLoopSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR PwdSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR SendPhotoSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR SendVideoSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR SendPicSize;/*Small/Bigger/Original*/
|
||||||
|
// CHAR SendMultishotIndex1;/*OFF/ON*/
|
||||||
|
// CHAR SendMultishotIndex2;/*OFF/ON*/
|
||||||
|
// CHAR SendMultishotIndex3;/*OFF/ON*/
|
||||||
|
// CHAR SendMultishotIndex4;/*OFF/ON*/
|
||||||
|
// CHAR SendMultishotIndex5;/*OFF/ON*/
|
||||||
|
// CHAR DateAuto;/*Auto/Manual*/
|
||||||
|
// CHAR NTPZoneS;
|
||||||
|
// CHAR NTPZoneH;
|
||||||
|
// CHAR NTPZoneM;
|
||||||
|
// CHAR DigitPirSensitivity;/*9\7\5*/
|
||||||
|
// CHAR DigitPirCnt;
|
||||||
|
// CHAR DigitPirWindowTime;
|
||||||
|
// CHAR CamArmDiable;
|
||||||
|
// CHAR DebugMode;/*0:OFF;1:ON*/
|
||||||
|
// CHAR AutoOffSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR AutoLogSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR RawSwitch;/*0:OFF;1:ON*/
|
||||||
|
// //ProfLogSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR GprsSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR GpsSendFlag;/*dp need send flag;*/
|
||||||
|
// CHAR FristSendDailyAndGps;
|
||||||
|
// CHAR NetGeneration;/*0:NO 1:xx 2:2G 3:3G 4:4G*/
|
||||||
|
// CHAR NeedTimeSyncStartUp;
|
||||||
|
// CHAR NetWorkNeedSearch;
|
||||||
|
// //SmsNumber;
|
||||||
|
// CHAR QLogSwitch;/*0:OFF;1:ON*/
|
||||||
|
// CHAR GpsAntiTheftSwitch;
|
||||||
|
// CHAR BatteryLogSwitch;
|
||||||
|
//
|
||||||
|
// ////////////S530////////
|
||||||
|
// CHAR GpsNumber;
|
||||||
|
// CHAR TimeSend1Switch;/*OFF/ON*/
|
||||||
|
// CHAR TimeSend2Switch;/*OFF/ON*/
|
||||||
|
// CHAR TimeSend3Switch;/*OFF/ON*/
|
||||||
|
// CHAR TimeSend4Switch;/*OFF/ON*/
|
||||||
|
// CHAR SendType;
|
||||||
|
// CHAR PicUpDailyReport;
|
||||||
|
// ///////////////////////
|
||||||
|
//
|
||||||
|
// CHAR CamNameStr[13];
|
||||||
|
// CHAR PwdStr[7];
|
||||||
|
// CHAR Latitude[16];
|
||||||
|
// CHAR Longitude[16];
|
||||||
|
// CHAR Sim4gApn[40];
|
||||||
|
// CHAR Sim4gUsr[40];
|
||||||
|
// CHAR Sim4gPwd[20];/* */
|
||||||
|
// CHAR SimPinStr[8];/* */
|
||||||
|
// CHAR MmsMmsc[50];
|
||||||
|
// CHAR MmsApn[40];
|
||||||
|
// CHAR MmsProxy[40];
|
||||||
|
// CHAR MmsPort[6];
|
||||||
|
// CHAR MmsUsr[40];
|
||||||
|
// CHAR MmsPwd[20];
|
||||||
|
// CHAR ModuleImei[20];
|
||||||
|
// CHAR ModuleVer[50];
|
||||||
|
// CHAR ModuleSubver[50];
|
||||||
|
// CHAR AcmIp[60];
|
||||||
|
// CHAR AcmPort[5];
|
||||||
|
// CHAR WebIp[70];
|
||||||
|
// CHAR OperatorCode[8];
|
||||||
|
// CHAR SimIccid[21];
|
||||||
|
// CHAR ServiceProvider[64];
|
||||||
|
// UINT8 SimSignal;
|
||||||
|
// UINT8 SimType;
|
||||||
|
// UINT8 FtpSwitch;/*FTP/OFF/FTPS*/
|
||||||
|
// UINT8 FtpIp[40];
|
||||||
|
// UINT8 FtpPort[5];
|
||||||
|
// UINT8 FtpUsr[40];
|
||||||
|
// UINT8 FtpPwd[20];
|
||||||
|
//
|
||||||
|
// UINT8 FtpsIp[40];
|
||||||
|
// UINT8 FtpsPort[5];
|
||||||
|
// UINT8 FtpsUsr[40];
|
||||||
|
// UINT8 FtpsPwd[20];
|
||||||
|
//
|
||||||
|
// UINT8 OtaFtpIp[40];
|
||||||
|
// UINT8 OtaFtpPort[5];
|
||||||
|
// UINT8 OtaFtpUserName[40];
|
||||||
|
// UINT8 OtaFtpPassWord[40];
|
||||||
|
//
|
||||||
|
// UINT8 WifiSwitch;
|
||||||
|
// UINT8 WifiMode;
|
||||||
|
// UINT8 WifiApPWD[16];
|
||||||
|
// UINT8 Zoom;
|
||||||
|
// UINT32 FileKey;
|
||||||
|
//
|
||||||
|
// UINT32 x1;
|
||||||
|
// UINT32 x2;
|
||||||
|
// UINT32 x3;
|
||||||
|
// UINT32 x4;
|
||||||
|
// UINT32 x5;
|
||||||
|
// UINT32 x6;
|
||||||
|
// //============Sifar==============///Payton
|
||||||
|
//
|
||||||
|
// } UIMenuStoreInfo;
|
||||||
|
|
||||||
|
_THUMB2 static void *bl_get_sys_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/)
|
||||||
|
{
|
||||||
|
#if (FDT_SUPPORT)
|
||||||
|
if (bl_get_partition(p_fdt, PATH_PARTITION_SYS, &g_emb_sys, p_id) != 0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
*p_id = NVTPACK_IDX_RTOS;
|
||||||
|
#endif
|
||||||
|
g_emb_sys.EmbType = 0x12;
|
||||||
|
return &g_emb_sys;
|
||||||
|
}
|
||||||
|
|
||||||
|
_THUMB2 static int bl_load_sys_from_flash(unsigned char *p_fdt, unsigned char *p_tmp)
|
||||||
|
{
|
||||||
|
int er;
|
||||||
|
int sys_partition_id;
|
||||||
|
DRAM_PARTITION *p_dram_partition = NULL;
|
||||||
|
unsigned int blk_size = int_strg_obj->flash_getBlockSize();
|
||||||
|
EMB_PARTITION *p_emb_partition_sys = bl_get_sys_partition(p_fdt, &sys_partition_id);
|
||||||
|
|
||||||
|
if (p_emb_partition_sys == NULL) {
|
||||||
|
debug_err("null p_emb_partition_sys\r\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION);
|
||||||
|
if (p_dram_partition == NULL) {
|
||||||
|
debug_err("null p_dram_partition\r\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((er = int_strg_obj->flash_readSectors(p_emb_partition_sys->PartitionOffset / blk_size, p_emb_partition_sys->PartitionSize, p_tmp, NAND_RW_FIRMWARE)) < 0) {
|
||||||
|
debug_err_var("bl_load_sys_from_flash,er=", er);
|
||||||
|
bl_displayErrMsg(RWErrorMsg); // read sys failed
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// UIMenuStoreInfo* info = (UIMenuStoreInfo*)p_tmp;
|
||||||
|
|
||||||
|
// debug_err_var("FL_PHOTO_SIZE=", info->UIParameter[1]);
|
||||||
|
// debug_err_var("OtaFlag=", info->OtaFlag);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* assume ota_flag is read from partition_sys and in the first word */
|
||||||
|
_THUMB2 static UINT32 bl_check_ota_flag(void)
|
||||||
|
{
|
||||||
|
int er;
|
||||||
|
unsigned char *p_fdt = NULL;
|
||||||
|
DRAM_PARTITION *p_dram_partition = NULL;
|
||||||
|
unsigned char *p_tmp = (unsigned char *)SDRAM_Start_FW;
|
||||||
|
|
||||||
|
// open flash
|
||||||
|
if (bl_flash_open() != 0) {
|
||||||
|
debug_msg("flash open failed\r\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if (FDT_SUPPORT)
|
||||||
|
// load fdt
|
||||||
|
er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer.
|
||||||
|
if (er != 0) {
|
||||||
|
bl_displayErrMsg("load fdt failed\r\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION);
|
||||||
|
if (p_dram_partition == NULL) {
|
||||||
|
debug_err("null p_dram_partition\r\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
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");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT32* ota_flag = (UINT32*)p_tmp;
|
||||||
|
debug_msg_var("ota_flag=", *ota_flag);
|
||||||
|
|
||||||
|
return (*ota_flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************************/
|
||||||
|
|
||||||
_THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp)
|
_THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp)
|
||||||
{
|
{
|
||||||
int er;
|
int er;
|
||||||
|
@ -2890,6 +3206,8 @@ _THUMB2 UINT32 bl_mainFlow(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT32 ota_flag = bl_check_ota_flag();
|
||||||
|
|
||||||
#if !(USB_WRITELOADER || UART_UPDATE)
|
#if !(USB_WRITELOADER || UART_UPDATE)
|
||||||
if (bl_load_rtos_from_uart(uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH, &adjusted_addr, &adjusted_size) == 0) {
|
if (bl_load_rtos_from_uart(uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH, &adjusted_addr, &adjusted_size) == 0) {
|
||||||
//specail case, load small rtos from uart
|
//specail case, load small rtos from uart
|
||||||
|
@ -2929,7 +3247,7 @@ _THUMB2 UINT32 bl_mainFlow(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#if 1
|
#if 1
|
||||||
else if ((gSpecialKeyCallBack()) && (gCardDetectCallBack())) {
|
else if ((gSpecialKeyCallBack(ota_flag)) && (gCardDetectCallBack())) {
|
||||||
if (card_open() == TRUE && fat_initFAT(uiheapBufferAddr, FAT_HEAP_BUFFER_SIZE) == TRUE) {
|
if (card_open() == TRUE && fat_initFAT(uiheapBufferAddr, FAT_HEAP_BUFFER_SIZE) == TRUE) {
|
||||||
#if UPDATE_SIM_CODE
|
#if UPDATE_SIM_CODE
|
||||||
BOOL bWDTInit = UTL_canUpdateSecKey();
|
BOOL bWDTInit = UTL_canUpdateSecKey();
|
||||||
|
@ -3115,7 +3433,7 @@ _THUMB2 UINT32 bl_mainFlow(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) &&
|
else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack(ota_flag)) &&
|
||||||
((gCardDetectCallBack != NULL) || (gCardDetectCallBack() == FALSE))) {
|
((gCardDetectCallBack != NULL) || (gCardDetectCallBack() == FALSE))) {
|
||||||
debug_msg("No card inserted\r\n");
|
debug_msg("No card inserted\r\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,39 @@ void debug_disable_msg(void) {}
|
||||||
- @b TRUE: Special key(s) is(are) pressed
|
- @b TRUE: Special key(s) is(are) pressed
|
||||||
- @b FALSE: Otherwise
|
- @b FALSE: Otherwise
|
||||||
*/
|
*/
|
||||||
static BOOL prj_isSpecialKeyPressed(void)
|
|
||||||
|
static BOOL prj_is_WDT_OTA(void)
|
||||||
|
{
|
||||||
|
static UINT32 ota_sts = WDT_OTA_MAKEFOURCC(WDT_OTA_STS_INVALID);
|
||||||
|
|
||||||
|
/* only update once */
|
||||||
|
if(ota_sts == WDT_OTA_MAKEFOURCC(WDT_OTA_STS_INVALID))
|
||||||
|
ota_sts = WDT_OTA_READ_STS();
|
||||||
|
|
||||||
|
debug_msg_var("ota_sts = ", ota_sts);
|
||||||
|
|
||||||
|
if(ota_sts == WDT_OTA_MAKEFOURCC(WDT_OTA_STS_LINUX_TRIGGER)){
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_LOADER_DETECTING_FW);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Read ota flag in the flash */
|
||||||
|
static BOOL prj_is_Flash_OTA(UINT32 ota_flag)
|
||||||
|
{
|
||||||
|
if(ota_flag == WDT_OTA_MAKEFOURCC(WDT_OTA_STS_LINUX_TRIGGER)){
|
||||||
|
WDT_OTA_SET_STS(WDT_OTA_STS_LOADER_DETECTING_FW);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL prj_isSpecialKeyPressed(UINT32 ota_flag)
|
||||||
{
|
{
|
||||||
// Detect key example, must press shutter2 and playback mode keys
|
// Detect key example, must press shutter2 and playback mode keys
|
||||||
// OUT_0: DGPIO 0
|
// OUT_0: DGPIO 0
|
||||||
|
@ -123,7 +155,7 @@ static BOOL prj_isSpecialKeyPressed(void)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if(!(gpio_getPin(GPIO_SPECIAL_KEY2)))
|
else if(!(gpio_getPin(GPIO_SPECIAL_KEY2)) || prj_is_WDT_OTA() || prj_is_Flash_OTA(ota_flag))
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}else {
|
}else {
|
||||||
|
|
|
@ -70,7 +70,26 @@
|
||||||
#define STORAGE_EXT_TYPE (STORAGE_EXT_SDIO1)
|
#define STORAGE_EXT_TYPE (STORAGE_EXT_SDIO1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*************************************************************
|
||||||
|
* OTA
|
||||||
|
************************************************************/
|
||||||
|
#include "nvtpack.h"
|
||||||
|
#define WDT_OTA_MAKEFOURCC(sts) MAKEFOURCC('O','T','A', sts)
|
||||||
|
#define WDT_DATA (WDT_REG_BASE_ADDR + 0x84)
|
||||||
|
#define WDT_OTA_READ_STS() INREG32(WDT_DATA)
|
||||||
|
#define WDT_OTA_SET_STS(sts) OUTREG32(WDT_DATA, WDT_OTA_MAKEFOURCC(sts))
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
WDT_OTA_STS_INVALID = 0,
|
||||||
|
WDT_OTA_STS_LOADER_DETECTING_FW,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_OPEN_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_READ_FAILED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_NO_NEED,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_UNKNOWN,
|
||||||
|
WDT_OTA_STS_UBOOT_UPDATE_OK,
|
||||||
|
WDT_OTA_STS_LINUX_TRIGGER,
|
||||||
|
} WDT_OTA_STS;
|
||||||
|
|
||||||
// Card detect GPIO offset
|
// Card detect GPIO offset
|
||||||
#if (CARD_DETECT_PIN == _CARD_DETECT_TYPE_1_)
|
#if (CARD_DETECT_PIN == _CARD_DETECT_TYPE_1_)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user