liyi 1 год назад
Родитель
Сommit
b80e90bd0f

+ 17 - 0
control/bootloader/boot/Modbus/BARE/port/port.c

@@ -117,6 +117,14 @@ extern uint8_t md_status;
 //uint16_t swap_buff[MAX_LENTH] = {0};
 
 
+extern uint8_t programe_erase_flag 				  ;
+extern uint8_t programe_write_complete_flag  ;
+extern uint8_t meta_erase_flag 					;
+extern uint8_t meta_write_complete_flag ;
+extern uint8_t get_head_over_flag ;
+
+
+
 eMBErrorCode
 eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegisterMode eMode )
 {
@@ -179,6 +187,15 @@ eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegi
 										}
 									}
 									break;
+									case MD_WRITE_Reset:
+									{
+										md_status = UPGRADE_STATUS_IDE;
+										meta_write_complete_flag = 0;   // 
+										meta_erase_flag = 0;
+										get_head_over_flag = 0;
+										programe_erase_flag = 0;
+										programe_write_complete_flag = 0;										
+									}
 									default:
 										eStatus = MB_ENOREG;
 										break;

Разница между файлами не показана из-за своего большого размера
+ 25239 - 110043
control/bootloader/boot/USER/JLinkLog.txt


Разница между файлами не показана из-за своего большого размера
+ 209 - 209
control/bootloader/boot/USER/bootloader.uvguix.Gowon


+ 10 - 10
control/bootloader/boot/USER/bootloader.uvoptx

@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>14</nTsel>
+        <nTsel>4</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,28 +114,28 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>BIN\CMSIS_AGDI_V8M.DLL</pMon>
+        <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
         <SetRegEntry>
           <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name></Name>
+          <Key>JL2CM3</Key>
+          <Name>-U69545260 -O206 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BF11477) -L00(0) -TO65536 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32E23x.FLM -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
-          <Key>CMSIS_AGDI_V8M</Key>
-          <Name>-X"CMSIS-DAP V2" -UAC3439AC896FF419BDC8F8E9 -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(0BF11477) -L00(0) -TO65536 -TC10000000 -TT10000000 -TP20 -TDS8003 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC4000 -FN1 -FF0GD32E23x.FLM -FS08000000 -FL05000 -FP0($$Device:GD32E235CB$Flash\GD32E23x.FLM)</Name>
+          <Key>UL2V8M</Key>
+          <Name>-U-O206 -O206 -S0 -C0 -P00 -TO65536 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7  -FN1 -FC1000 -FD20000000 -FF0GD32E23x -FL010000 -FS08000000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
-          <Key>UL2V8M</Key>
-          <Name>-U-O206 -O206 -S0 -C0 -P00 -TO65536 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7  -FN1 -FC1000 -FD20000000 -FF0GD32E23x -FL020000 -FS08000000 -FP0($$Device:GD32E235CB$Flash\GD32E23x.FLM)</Name>
+          <Key>CMSIS_AGDI_V8M</Key>
+          <Name>-U-O206 -O206 -S0 -C0 -P00 -TO65536 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7  -FN1 -FC1000 -FD20000000 -FF0GD32E23x -FL010000 -FS08000000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
-          <Key>JL2CM3</Key>
-          <Name>-U69545328 -O206 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BF11477) -L00(0) -TO65536 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32E23x.FLM -FS08000000 -FL05000 -FP0($$Device:GD32E235CB$Flash\GD32E23x.FLM)</Name>
+          <Key>DLGUARM</Key>
+          <Name>?</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>

+ 10 - 10
control/bootloader/boot/USER/bootloader.uvprojx

@@ -14,16 +14,16 @@
       <uAC6>1</uAC6>
       <TargetOption>
         <TargetCommonOption>
-          <Device>GD32E235CB</Device>
+          <Device>GD32E230C8</Device>
           <Vendor>GigaDevice</Vendor>
           <PackID>GigaDevice.GD32E23x_DFP.2.2.1</PackID>
           <PackURL>http://gd32mcu.com/data/documents/pack/</PackURL>
-          <Cpu>IRAM(0x20000000,0x0004000) IROM(0x08000000,0x0020000) CPUTYPE("Cortex-M23") CLOCK(12000000) ELITTLE</Cpu>
+          <Cpu>IRAM(0x20000000,0x0002000) IROM(0x08000000,0x0010000) CPUTYPE("Cortex-M23") CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
-          <FlashDriverDll>UL2V8M(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32E23x -FS08000000 -FL020000 -FP0($$Device:GD32E235CB$Flash\GD32E23x.FLM))</FlashDriverDll>
+          <FlashDriverDll>UL2V8M(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32E23x -FS08000000 -FL010000 -FP0($$Device:GD32E230C8$Flash\GD32E23x.FLM))</FlashDriverDll>
           <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:GD32E235CB$Device\Include\gd32e23x.h</RegisterFile>
+          <RegisterFile>$$Device:GD32E230C8$Device\Include\gd32e23x.h</RegisterFile>
           <MemoryEnv></MemoryEnv>
           <Cmp></Cmp>
           <Asm></Asm>
@@ -33,7 +33,7 @@
           <SLE66CMisc></SLE66CMisc>
           <SLE66AMisc></SLE66AMisc>
           <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:GD32E235CB$SVD\GD32E23x.svd</SFDFile>
+          <SFDFile>$$Device:GD32E230C8$SVD\GD32E23x.svd</SFDFile>
           <bCustSvd>0</bCustSvd>
           <UseEnv>0</UseEnv>
           <BinPath></BinPath>
@@ -246,12 +246,12 @@
               <IRAM>
                 <Type>0</Type>
                 <StartAddress>0x20000000</StartAddress>
-                <Size>0x4000</Size>
+                <Size>0x2000</Size>
               </IRAM>
               <IROM>
                 <Type>1</Type>
                 <StartAddress>0x8000000</StartAddress>
-                <Size>0x20000</Size>
+                <Size>0x10000</Size>
               </IROM>
               <XRAM>
                 <Type>0</Type>
@@ -301,7 +301,7 @@
               <OCR_RVCT9>
                 <Type>0</Type>
                 <StartAddress>0x20000000</StartAddress>
-                <Size>0x4000</Size>
+                <Size>0x2000</Size>
               </OCR_RVCT9>
               <OCR_RVCT10>
                 <Type>0</Type>
@@ -313,7 +313,7 @@
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>2</Optim>
+            <Optim>7</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>1</OneElfS>
@@ -337,7 +337,7 @@
             <v6Rtti>0</v6Rtti>
             <VariousControls>
               <MiscControls></MiscControls>
-              <Define>GD32E235</Define>
+              <Define>GD32E230</Define>
               <Undefine></Undefine>
               <IncludePath>..\CORE\Include;..\CORE\Source\ARM;..\GD32_FW\Include;..\HARDWARE\Fwdgt;..\HARDWARE\Key;..\HARDWARE\Led;..\HARDWARE\Timer;..\Modbus\ascii;..\Modbus\BARE\port;..\Modbus\include;..\Modbus\rtu;..\Modbus\tcp;..\USER;..\HARDWARE\Timer;..\HARDWARE\Flash;..\HARDWARE\Md5</IncludePath>
             </VariousControls>

+ 24 - 0
control/bootloader/boot/USER/cfg.h

@@ -5,6 +5,13 @@
 
 
 
+#define USE_ONE_APP    1
+
+
+
+#if (!USE_ONE_APP)
+
+
 #define BOOT_LOADER              					((uint32_t)(0x08000000))	      	//boot loadr addr
 #define BOOT_LOADER_SIZE									(20*1024)													//boot loade size
 
@@ -20,6 +27,19 @@
 #define PROGRAME_APP2											((uint32_t)(0x08011C00))					//App2 Rom Start addr
 #define PROGRAME_APP2_SIZE								(50*1024)													//App2 programe Max size
 
+#else
+
+#define BOOT_LOADER              					((uint32_t)(0x08000000))	      	//boot loadr addr
+#define BOOT_LOADER_SIZE									(15*1024)													//boot loade size
+
+#define META_DATA 				 								((uint32_t)(0x08003C00))					//meta data addr
+#define META_DATA_SIZE     								(1*1024)													//meta data size
+
+#define PROGRAME_APP1			 								((uint32_t)(0x08004000))					//App1 Rom Start addr
+#define PROGRAME_APP1_SIZE								(48*1024)													//App1 programe Max size
+
+#endif
+
 #define VERSION                          		"V1.0.0.0"
 
 #define MODBUS_HEAD                        	"GOWONE_UPGRADE"
@@ -54,6 +74,10 @@
 
 
 
+
+
+
+
 #define UNIQU_1                       			0x1FFFF7AC
 #define UNIQU_2                       			0x1FFFF7B0
 #define UNIQU_3                       			0x1FFFF7B4

+ 40 - 11
control/bootloader/boot/USER/main.c

@@ -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;

BIN
control/bootloader/tool/bootloader.bin


+ 20 - 0
control/bootloader/tool/cfg.h

@@ -5,6 +5,13 @@
 
 
 
+#define USE_ONE_APP    1
+
+
+
+#if (!USE_ONE_APP)
+
+
 #define BOOT_LOADER              					((uint32_t)(0x08000000))	      	//boot loadr addr
 #define BOOT_LOADER_SIZE									(20*1024)													//boot loade size
 
@@ -20,6 +27,19 @@
 #define PROGRAME_APP2											((uint32_t)(0x08011C00))					//App2 Rom Start addr
 #define PROGRAME_APP2_SIZE								(50*1024)													//App2 programe Max size
 
+#else
+
+#define BOOT_LOADER              					((uint32_t)(0x08000000))	      	//boot loadr addr
+#define BOOT_LOADER_SIZE									(15*1024)													//boot loade size
+
+#define META_DATA 				 								((uint32_t)(0x08003C00))					//meta data addr
+#define META_DATA_SIZE     								(1*1024)													//meta data size
+
+#define PROGRAME_APP1			 								((uint32_t)(0x08004000))					//App1 Rom Start addr
+#define PROGRAME_APP1_SIZE								(38*1024)													//App1 programe Max size
+
+#endif
+
 #define VERSION                          		"V1.0.0.0"
 
 #define MODBUS_HEAD                        	"GOWONE_UPGRADE"

BIN
control/bootloader/tool/mb.exe