|
|
@@ -26,6 +26,7 @@ uint8_t meta_erase_flag = 0;
|
|
|
uint8_t meta_write_complete_flag = 0;
|
|
|
uint8_t get_head_over_flag = 0;
|
|
|
|
|
|
+
|
|
|
get_md_msg _msg = {0};
|
|
|
|
|
|
|
|
|
@@ -310,8 +311,6 @@ uint8_t md5_check(uint32_t addr,uint32_t lenth,uint32_t* md5)
|
|
|
|
|
|
int main(void)
|
|
|
{
|
|
|
- //SystemInit();
|
|
|
- //systick_config();
|
|
|
InitLED();
|
|
|
InitKey();
|
|
|
InitTimer();
|
|
|
@@ -319,7 +318,7 @@ int main(void)
|
|
|
eMBInit(MB_RTU, CurrentAddr, 0, 115200, MB_PAR_NONE);
|
|
|
eMBEnable();
|
|
|
flash_get_meta(&meta_data);
|
|
|
- Fwdgt_Init();
|
|
|
+ //Fwdgt_Init();
|
|
|
|
|
|
//read data and
|
|
|
uint8_t app1_checum = 0xFF;
|
|
|
@@ -327,7 +326,7 @@ int main(void)
|
|
|
|
|
|
if(meta_data.operation_flag == 0x0)
|
|
|
{
|
|
|
-
|
|
|
+#if (!USE_ONE_APP)
|
|
|
if(meta_data.rom_addr == PROGRAME_APP1 || meta_data.rom_addr == PROGRAME_APP2)
|
|
|
{
|
|
|
if(meta_data.app1_rom_addr == PROGRAME_APP1)
|
|
|
@@ -453,6 +452,27 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+#else
|
|
|
+ if(meta_data.rom_addr == PROGRAME_APP1)
|
|
|
+ {
|
|
|
+ if(meta_data.app1_rom_addr == PROGRAME_APP1)
|
|
|
+ {
|
|
|
+ app1_checum = md5_check(meta_data.app1_rom_addr,meta_data.app1_size,meta_data.app1_md5);
|
|
|
+ if(app1_checum == 0)
|
|
|
+ {
|
|
|
+ if(meta_data.errno != NOERROR && meta_data.error_count >= MAX_ERROR_COUNT)
|
|
|
+ {
|
|
|
+ //upgrade
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ UserJumpToApplication(meta_data.rom_addr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+#endif
|
|
|
}else
|
|
|
{
|
|
|
//wait to upgrade
|
|
|
@@ -462,10 +482,11 @@ int main(void)
|
|
|
while(1)
|
|
|
{
|
|
|
eMBPoll();
|
|
|
- Fwdgt_reload();
|
|
|
+ //Fwdgt_reload();
|
|
|
if(flash_flag)
|
|
|
{
|
|
|
LEDFlicker2();
|
|
|
+ upgrade_count += 3;
|
|
|
flash_flag = 0;
|
|
|
}
|
|
|
ModBus_CMD();
|
|
|
@@ -481,11 +502,16 @@ int main(void)
|
|
|
start_addr =PROGRAME_APP1;
|
|
|
erase_size = PROGRAME_APP1_SIZE;
|
|
|
md_status = UPGRADE_STATUS_ERASE_PROGRAME;
|
|
|
- }else if(_msg.patition == SECOND){
|
|
|
+ }
|
|
|
+#if (!USE_ONE_APP)
|
|
|
+ else if(_msg.patition == SECOND){
|
|
|
start_addr = PROGRAME_APP2;
|
|
|
erase_size = PROGRAME_APP2_SIZE;
|
|
|
- md_status = UPGRADE_STATUS_ERASE_PROGRAME;
|
|
|
- }else{
|
|
|
+ md_status = UPGRADE_STATUS_ERASE_PROGRAME;
|
|
|
+
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ else{
|
|
|
md_status = UPGRADE_STATUS_IDE;
|
|
|
get_head_over_flag = 0;
|
|
|
}
|
|
|
@@ -495,7 +521,6 @@ int main(void)
|
|
|
break;
|
|
|
case UPGRADE_STATUS_ERASE_PROGRAME:
|
|
|
{
|
|
|
- uint32_t data = *(uint32_t*)(PROGRAME_APP1);
|
|
|
if(programe_erase_flag == 0)
|
|
|
{
|
|
|
my_addr = start_addr;
|
|
|
@@ -539,7 +564,9 @@ int main(void)
|
|
|
meta_data.app1_version = _msg.version;
|
|
|
memcpy(meta_data.app1_md5,_msg.md5,32);
|
|
|
meta_data.app1_size = _msg.size;
|
|
|
- } else if(meta_data.partition == SECOND)
|
|
|
+ }
|
|
|
+#if (!USE_ONE_APP)
|
|
|
+ else if(meta_data.partition == SECOND)
|
|
|
{
|
|
|
meta_data.rom_addr =PROGRAME_APP2;
|
|
|
meta_data.app2_partition = _msg.patition;
|
|
|
@@ -547,7 +574,9 @@ int main(void)
|
|
|
meta_data.app2_version = _msg.version;
|
|
|
memcpy(meta_data.app2_md5,_msg.md5,32);
|
|
|
meta_data.app2_size = _msg.size;
|
|
|
- }else
|
|
|
+ }
|
|
|
+#endif
|
|
|
+ else
|
|
|
{
|
|
|
// errno
|
|
|
md_status = UPGRADE_STATUS_IDE;
|