Bläddra i källkod

MBIC 코드 최적화
- 불필요한 Printf 문 제거
- Data Recv 할 때 Crc Check 문 저건에 No Error 조건 추가
- MBIC Boot Loader 동작 시 CRC Printf 문 추가
- Flash Init 할 때 현재 Bank 의 Crc 추가
- Factory Set 기능 추가
- MBIC Type 추가
- 불필요한 함수 제거

PYJ 5 år sedan
förälder
incheckning
097641dde5

+ 3 - 0
Bluecell_Inc/Bluecell_operate.h

@@ -625,6 +625,9 @@ enum DATATYPE
625
     Bluecell_TimeSetting,
625
     Bluecell_TimeSetting,
626
     Bluecell_Factory_Set,
626
     Bluecell_Factory_Set,
627
     Bluecell_CarrierOnOff,
627
     Bluecell_CarrierOnOff,
628
+    Bluecell_PCBVersionSet,
629
+    Bluecell_SerialNumberSet,
630
+    Bluecell_ManufactureDateSet,    
628
 };
631
 };
629
 typedef enum{    
632
 typedef enum{    
630
 	DLI_P1_Level_Table_Number = 0x00,
633
 	DLI_P1_Level_Table_Number = 0x00,

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 210 - 698
Bluecell_Src/Bluecell_operate.c


+ 26 - 23
Bluecell_Src/MBIC_Bootloader.c

@@ -250,6 +250,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
250
     switch(cmd){
250
     switch(cmd){
251
         case MBIC_Notice_REQ:
251
         case MBIC_Notice_REQ:
252
             EraseInit = false;
252
             EraseInit = false;
253
+            CRCERR = false;
253
             Download_Option = 0;
254
             Download_Option = 0;
254
             Curr_Download_DataIndex = 0;
255
             Curr_Download_DataIndex = 0;
255
             Prev_Download_DataIndex = 0;
256
             Prev_Download_DataIndex = 0;
@@ -266,7 +267,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
266
             data[MBIC_PAYLOADSTART + index++] = 1;
267
             data[MBIC_PAYLOADSTART + index++] = 1;
267
             Download_Option = data[MBIC_PAYLOADSTART + 4];
268
             Download_Option = data[MBIC_PAYLOADSTART + 4];
268
             /*DOWNLOAD DELAY REQUEST*/
269
             /*DOWNLOAD DELAY REQUEST*/
269
-            data[MBIC_PAYLOADSTART + index++] = 10;
270
+            data[MBIC_PAYLOADSTART + index++] = 3;
270
             /*DOWNLOAD Reserve*/
271
             /*DOWNLOAD Reserve*/
271
             data[MBIC_PAYLOADSTART + index++] = 0;
272
             data[MBIC_PAYLOADSTART + index++] = 0;
272
             data[MBIC_PAYLOADSTART + index++] = 0;
273
             data[MBIC_PAYLOADSTART + index++] = 0;
@@ -374,8 +375,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
374
                                 | Bank1data[MBIC_BOOT_LENGTH + 1] << 16
375
                                 | Bank1data[MBIC_BOOT_LENGTH + 1] << 16
375
                                 | Bank1data[MBIC_BOOT_LENGTH + 2] << 8
376
                                 | Bank1data[MBIC_BOOT_LENGTH + 2] << 8
376
                                 | Bank1data[MBIC_BOOT_LENGTH + 3];
377
                                 | Bank1data[MBIC_BOOT_LENGTH + 3];
377
-                FirmFile_Length += 128;
378
-                Crcret = CRC16_Generate(&Bank1data[MBIC_BOOT_MARK], FirmFile_Length);
378
+                Crcret = CRC16_Generate(&Bank1data[MBIC_BOOT_MARK], FirmFile_Length + 128);
379
                 printf("Bank 1 CRC Calc\r\n");                
379
                 printf("Bank 1 CRC Calc\r\n");                
380
             }
380
             }
381
             else {
381
             else {
@@ -383,15 +383,16 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
383
                                 | Bank2data[MBIC_BOOT_LENGTH + 1] << 16
383
                                 | Bank2data[MBIC_BOOT_LENGTH + 1] << 16
384
                                 | Bank2data[MBIC_BOOT_LENGTH + 2] << 8
384
                                 | Bank2data[MBIC_BOOT_LENGTH + 2] << 8
385
                                 | Bank2data[MBIC_BOOT_LENGTH + 3];   
385
                                 | Bank2data[MBIC_BOOT_LENGTH + 3];   
386
-                FirmFile_Length += 128;
387
-                Crcret = CRC16_Generate(&Bank2data[MBIC_BOOT_MARK], FirmFile_Length);
386
+                Crcret = CRC16_Generate(&Bank2data[MBIC_BOOT_MARK], FirmFile_Length + 128);
388
                 printf("Bank 2 CRC Calc\r\n");
387
                 printf("Bank 2 CRC Calc\r\n");
389
             }
388
             }
390
-            RecvCrc = data[MBIC_PAYLOADSTART] << 8 | data[MBIC_PAYLOADSTART + 1];
391
-
392
-            printf("FirmFile_Length : %x \r\n",FirmFile_Length + 128);
393
-            printf("FILE CRC RET : %x \r\n",Crcret);
394
-        
389
+            RecvCrc = data[MBIC_PAYLOADSTART + 4] << 8 | data[MBIC_PAYLOADSTART + 5];
390
+            
391
+            printf("FirmFile_Length : %d Byte \r\n",((FirmFile_Length  * 1024) + 128));
392
+            printf("FILE CRC RET : %x  : Recv CRC : %x \r\n",Crcret,RecvCrc);
393
+            if(RecvCrc != Crcret){
394
+                CRCERR = true; // CRC ERR Occur 
395
+            }
395
             data[MBIC_PAYLOADSTART + index++] = ((Crcret & 0xFF00) >> 8);
396
             data[MBIC_PAYLOADSTART + index++] = ((Crcret & 0xFF00) >> 8);
396
             data[MBIC_PAYLOADSTART + index++] = ((Crcret & 0x00FF));
397
             data[MBIC_PAYLOADSTART + index++] = ((Crcret & 0x00FF));
397
 #if 0 // PYJ.2020.06.29_BEGIN -- 
398
 #if 0 // PYJ.2020.06.29_BEGIN -- 
@@ -423,23 +424,23 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
423
 //              bluecell_Currdatastatus.CPUVERSION3 = Bank2data[MBIC_BOOT_VERSION + 2]; 
424
 //              bluecell_Currdatastatus.CPUVERSION3 = Bank2data[MBIC_BOOT_VERSION + 2]; 
424
 //              printf("Bank2data[MBIC_BOOT_VERSION] : %d \r\n",Bank2data[MBIC_BOOT_VERSION + 2]);
425
 //              printf("Bank2data[MBIC_BOOT_VERSION] : %d \r\n",Bank2data[MBIC_BOOT_VERSION + 2]);
425
 //          }   
426
 //          }   
426
-          bluecell_Currdatastatus.CPU_Bank1_Image_Version1 = Bank1data[MBIC_BOOT_VERSION];
427
-          bluecell_Currdatastatus.CPU_Bank1_Image_Version2 = Bank1data[MBIC_BOOT_VERSION + 1];
428
-          bluecell_Currdatastatus.CPU_Bank1_Image_Version3 = Bank1data[MBIC_BOOT_VERSION + 2];
427
+            bluecell_Currdatastatus.CPU_Bank1_Image_Version1 = Bank1data[MBIC_BOOT_VERSION];
428
+            bluecell_Currdatastatus.CPU_Bank1_Image_Version2 = Bank1data[MBIC_BOOT_VERSION + 1];
429
+            bluecell_Currdatastatus.CPU_Bank1_Image_Version3 = Bank1data[MBIC_BOOT_VERSION + 2];
429
 
430
 
430
             bluecell_Currdatastatus.CPU_Bank2_Image_Version1 = Bank2data[MBIC_BOOT_VERSION];
431
             bluecell_Currdatastatus.CPU_Bank2_Image_Version1 = Bank2data[MBIC_BOOT_VERSION];
431
             bluecell_Currdatastatus.CPU_Bank2_Image_Version2 = Bank2data[MBIC_BOOT_VERSION + 1];
432
             bluecell_Currdatastatus.CPU_Bank2_Image_Version2 = Bank2data[MBIC_BOOT_VERSION + 1];
432
             bluecell_Currdatastatus.CPU_Bank2_Image_Version3 = Bank2data[MBIC_BOOT_VERSION + 2];
433
             bluecell_Currdatastatus.CPU_Bank2_Image_Version3 = Bank2data[MBIC_BOOT_VERSION + 2];
433
-            
434
-             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1 = Bank1data[MBIC_BOOT_CREATION_TIME];
434
+
435
+            bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1 = Bank1data[MBIC_BOOT_CREATION_TIME];
435
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2 = Bank1data[MBIC_BOOT_CREATION_TIME + 1];
436
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2 = Bank1data[MBIC_BOOT_CREATION_TIME + 1];
436
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime3 = Bank1data[MBIC_BOOT_CREATION_TIME + 2];         
437
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime3 = Bank1data[MBIC_BOOT_CREATION_TIME + 2];         
437
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime4 = Bank1data[MBIC_BOOT_CREATION_TIME + 3];         
438
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime4 = Bank1data[MBIC_BOOT_CREATION_TIME + 3];         
438
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime5 = Bank1data[MBIC_BOOT_CREATION_TIME + 4];         
439
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime5 = Bank1data[MBIC_BOOT_CREATION_TIME + 4];         
439
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime6 = Bank1data[MBIC_BOOT_CREATION_TIME + 5];   
440
             bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime6 = Bank1data[MBIC_BOOT_CREATION_TIME + 5];   
440
 
441
 
441
-            
442
-             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME];
442
+
443
+            bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME];
443
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime2 = Bank2data[MBIC_BOOT_CREATION_TIME + 1];
444
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime2 = Bank2data[MBIC_BOOT_CREATION_TIME + 1];
444
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime3 = Bank2data[MBIC_BOOT_CREATION_TIME + 2];         
445
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime3 = Bank2data[MBIC_BOOT_CREATION_TIME + 2];         
445
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime4 = Bank2data[MBIC_BOOT_CREATION_TIME + 3];         
446
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime4 = Bank2data[MBIC_BOOT_CREATION_TIME + 3];         
@@ -451,7 +452,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
451
                 tmpstr[i] = Bank1data[MBIC_BOOT_FILENAME + i];
452
                 tmpstr[i] = Bank1data[MBIC_BOOT_FILENAME + i];
452
                 else
453
                 else
453
                  tmpstr[i] = 0x20;
454
                  tmpstr[i] = 0x20;
454
-                printf("%x",tmpstr[i]);
455
+//                printf("%x",tmpstr[i]);
455
             }  
456
             }  
456
             tmpstr = &bluecell_Currdatastatus.CPU_Bank2_Image_Name;
457
             tmpstr = &bluecell_Currdatastatus.CPU_Bank2_Image_Name;
457
             for(int i = 0 ; i< 41; i++){
458
             for(int i = 0 ; i< 41; i++){
@@ -460,11 +461,11 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
460
                 else
461
                 else
461
                  tmpstr[i] = 0x20;
462
                  tmpstr[i] = 0x20;
462
 
463
 
463
-                printf("%x",tmpstr[i]);
464
+//                printf("%x",tmpstr[i]);
464
             }               
465
             }               
465
-            printf("Curr Version : %02x.%02x.%02x \r\n",bluecell_Currdatastatus.CPUVERSION1,bluecell_Currdatastatus.CPUVERSION2,bluecell_Currdatastatus.CPUVERSION3);
466
-            printf("Bank1data Version : %02x.%02x.%02x \r\n", Bank1data[MBIC_BOOT_VERSION + 0], Bank1data[MBIC_BOOT_VERSION + 1], Bank1data[MBIC_BOOT_VERSION + 2]);
467
-            printf("Bank2data Version : %02x.%02x.%02x \r\n", Bank2data[MBIC_BOOT_VERSION + 0], Bank2data[MBIC_BOOT_VERSION + 1], Bank2data[MBIC_BOOT_VERSION + 2]);            
466
+//            printf("Curr Version : %02x.%02x.%02x \r\n",bluecell_Currdatastatus.CPUVERSION1,bluecell_Currdatastatus.CPUVERSION2,bluecell_Currdatastatus.CPUVERSION3);
467
+//            printf("Bank1data Version : %02x.%02x.%02x \r\n", Bank1data[MBIC_BOOT_VERSION + 0], Bank1data[MBIC_BOOT_VERSION + 1], Bank1data[MBIC_BOOT_VERSION + 2]);
468
+//            printf("Bank2data Version : %02x.%02x.%02x \r\n", Bank2data[MBIC_BOOT_VERSION + 0], Bank2data[MBIC_BOOT_VERSION + 1], Bank2data[MBIC_BOOT_VERSION + 2]);            
468
         
469
         
469
         break;
470
         break;
470
         case MBIC_Complete_Notice_REQ_REQ:
471
         case MBIC_Complete_Notice_REQ_REQ:
@@ -472,10 +473,12 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
472
             cmd = MBIC_Complete_Notice_RSP;
473
             cmd = MBIC_Complete_Notice_RSP;
473
             if(CRCERR == false){
474
             if(CRCERR == false){
474
                 data[MBIC_PAYLOADSTART + index++] = 1;  
475
                 data[MBIC_PAYLOADSTART + index++] = 1;  
476
+                printf("Crc Success \r\n");
475
             }else{
477
             }else{
476
                 data[MBIC_PAYLOADSTART + index++] = 0;  
478
                 data[MBIC_PAYLOADSTART + index++] = 0;  
479
+                printf("Crc Failed \r\n");                
477
             }
480
             }
478
-                data[MBIC_PAYLOADSTART + index++] = 1;    
481
+            data[MBIC_PAYLOADSTART + index++] = 1;    
479
             
482
             
480
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME + 0];
483
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME + 0];
481
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime2 = Bank2data[MBIC_BOOT_CREATION_TIME + 1];
484
             bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime2 = Bank2data[MBIC_BOOT_CREATION_TIME + 1];

+ 3 - 3
Bluecell_Src/eeprom.c

@@ -122,9 +122,9 @@ void EEPROM_M24C08_Init(void){
122
 
122
 
123
     
123
     
124
     HAL_Delay(200);
124
     HAL_Delay(200);
125
-    printf("MBIC_ULO_ALC_Atten1_H  %x / MBIC_ULO_ALC_Atten1_L: %x \r\n",bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L);        
126
-    printf("ATT_UL1_H  %x / ATT_UL1_L: %x \r\n",bluecell_Currdatastatus.ATT_UL1_H,bluecell_Currdatastatus.ATT_UL1_L);    
127
-    printf("bluecell_User_UL1_H  %x / bluecell_User_UL1_L: %x \r\n",bluecell_Currdatastatus.bluecell_User_UL1_H,bluecell_Currdatastatus.bluecell_User_UL1_L);
125
+//    printf("MBIC_ULO_ALC_Atten1_H  %x / MBIC_ULO_ALC_Atten1_L: %x \r\n",bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_H,bluecell_Currdatastatus.MBIC_ULO_ALC_Atten1_L);        
126
+//    printf("ATT_UL1_H  %x / ATT_UL1_L: %x \r\n",bluecell_Currdatastatus.ATT_UL1_H,bluecell_Currdatastatus.ATT_UL1_L);    
127
+//    printf("bluecell_User_UL1_H  %x / bluecell_User_UL1_L: %x \r\n",bluecell_Currdatastatus.bluecell_User_UL1_H,bluecell_Currdatastatus.bluecell_User_UL1_L);
128
 
128
 
129
     printf("===========================================================================\r\n");
129
     printf("===========================================================================\r\n");
130
     printf("ATT TableDL 1_Init START ORIGIN TABLE LENGTH  %d / Ref : %d \r\n",Att_DL1.Table_Length,Att_DL1.Table_Ref);
130
     printf("ATT TableDL 1_Init START ORIGIN TABLE LENGTH  %d / Ref : %d \r\n",Att_DL1.Table_Length,Att_DL1.Table_Ref);

+ 66 - 8
Bluecell_Src/flash.c

@@ -95,8 +95,11 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
95
     bluecell_Currdatastatus.CPUVERSION1 = Currdata[MBIC_BOOT_VERSION + 0];
95
     bluecell_Currdatastatus.CPUVERSION1 = Currdata[MBIC_BOOT_VERSION + 0];
96
     bluecell_Currdatastatus.CPUVERSION2 = Currdata[MBIC_BOOT_VERSION + 1];
96
     bluecell_Currdatastatus.CPUVERSION2 = Currdata[MBIC_BOOT_VERSION + 1];
97
     bluecell_Currdatastatus.CPUVERSION3 = Currdata[MBIC_BOOT_VERSION + 2];
97
     bluecell_Currdatastatus.CPUVERSION3 = Currdata[MBIC_BOOT_VERSION + 2];
98
-    for(int i =0; i < 3; i++)
99
-        printf("Bank1data[MBIC_BOOT_VERSION] : %d \r\n",Bank1data[MBIC_BOOT_VERSION + i]);
98
+//    printf("Curr Version : ");
99
+//    for(int i =0; i < 3; i++){
100
+//        printf("%d.",Bank1data[MBIC_BOOT_VERSION + i]);
101
+//    }
102
+//    printf("\r\n");
100
     
103
     
101
     if(bluecell_Currdatastatus.CPUVERSION3  == Bank1data[MBIC_BOOT_VERSION + 2]){
104
     if(bluecell_Currdatastatus.CPUVERSION3  == Bank1data[MBIC_BOOT_VERSION + 2]){
102
         bluecell_Currdatastatus.CPU_Current_Bank = HFR_BANK1_SEL;
105
         bluecell_Currdatastatus.CPU_Current_Bank = HFR_BANK1_SEL;
@@ -138,11 +141,11 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
138
         }
141
         }
139
 
142
 
140
 
143
 
141
-        printf("%c",pdata[i]);
144
+//        printf("%c",pdata[i]);
142
     }
145
     }
143
     printf("\r\n");
146
     printf("\r\n");
144
 
147
 
145
-    printf("20%d Y / %d M / %d D / %d H / %d M / %d S  \r\n",
148
+    printf("Curr Bank  : 20%d Y / %d M / %d D / %d H / %d M / %d S  \r\n",
146
         Currdata[MBIC_BOOT_CREATION_TIME + 0],
149
         Currdata[MBIC_BOOT_CREATION_TIME + 0],
147
         Currdata[MBIC_BOOT_CREATION_TIME + 1],
150
         Currdata[MBIC_BOOT_CREATION_TIME + 1],
148
         Currdata[MBIC_BOOT_CREATION_TIME + 2],
151
         Currdata[MBIC_BOOT_CREATION_TIME + 2],
@@ -150,6 +153,22 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
150
         Currdata[MBIC_BOOT_CREATION_TIME + 4],
153
         Currdata[MBIC_BOOT_CREATION_TIME + 4],
151
         Currdata[MBIC_BOOT_CREATION_TIME + 5]        
154
         Currdata[MBIC_BOOT_CREATION_TIME + 5]        
152
     );
155
     );
156
+    printf("Bank1  : 20%d Y / %d M / %d D / %d H / %d M / %d S  \r\n",
157
+        Bank1data[MBIC_BOOT_CREATION_TIME + 0],
158
+        Bank1data[MBIC_BOOT_CREATION_TIME + 1],
159
+        Bank1data[MBIC_BOOT_CREATION_TIME + 2],
160
+        Bank1data[MBIC_BOOT_CREATION_TIME + 3],
161
+        Bank1data[MBIC_BOOT_CREATION_TIME + 4],
162
+        Bank1data[MBIC_BOOT_CREATION_TIME + 5]        
163
+    );
164
+    printf("Bank2  : 20%d Y / %d M / %d D / %d H / %d M / %d S  \r\n",
165
+        Bank2data[MBIC_BOOT_CREATION_TIME + 0],
166
+        Bank2data[MBIC_BOOT_CREATION_TIME + 1],
167
+        Bank2data[MBIC_BOOT_CREATION_TIME + 2],
168
+        Bank2data[MBIC_BOOT_CREATION_TIME + 3],
169
+        Bank2data[MBIC_BOOT_CREATION_TIME + 4],
170
+        Bank2data[MBIC_BOOT_CREATION_TIME + 5]        
171
+    );    
153
 
172
 
154
     printf("MBIC BANK %d Booting \r\n",bluecell_Currdatastatus.CPU_Current_Bank);    
173
     printf("MBIC BANK %d Booting \r\n",bluecell_Currdatastatus.CPU_Current_Bank);    
155
 
174
 
@@ -181,9 +200,31 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
181
     }
200
     }
182
 #endif // PYJ.2019.03.27_END -- 
201
 #endif // PYJ.2019.03.27_END -- 
183
     uint32_t crcret = 0,FileCrc = 0;
202
     uint32_t crcret = 0,FileCrc = 0;
203
+    uint32_t currcrcret = 0,currFileCrc = 0;
204
+    
184
     int32_t CrcLength = 0;
205
     int32_t CrcLength = 0;
185
  
206
  
186
 
207
 
208
+    currFileCrc = 
209
+    ((Currdata[MBIC_BOOT_CRC] << 24 ) 
210
+    | Currdata[MBIC_BOOT_CRC + 1]<<16 
211
+    | Currdata[MBIC_BOOT_CRC + 2]<<8   
212
+    | Currdata[MBIC_BOOT_CRC + 3]);
213
+    CrcLength=
214
+    ((Currdata[MBIC_BOOT_LENGTH] << 24 ) 
215
+    | Currdata[MBIC_BOOT_LENGTH + 1]<<16 
216
+    | Currdata[MBIC_BOOT_LENGTH + 2]<<8   
217
+    | Currdata[MBIC_BOOT_LENGTH + 3]);       
218
+     if(CrcLength > 0 && CrcLength <= 0x1FFFF )
219
+        currcrcret = crc32(&Currdata[MBIC_BOOT_DATA], CrcLength);
220
+    printf("File CRC : %x CrcLength : %d \r\n",currFileCrc,CrcLength);
221
+    if(currcrcret != currFileCrc){
222
+        printf("CRC ERROR : %x , File CRC : %x \r\n",currcrcret,currFileCrc);
223
+    }
224
+    else{
225
+        printf("CRC SUCCESS  : %x , File CRC : %x \r\n",currcrcret,currFileCrc);  
226
+    }
227
+    
187
 
228
 
188
 
229
 
189
     
230
     
@@ -199,6 +240,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
199
     | Bank1data[MBIC_BOOT_LENGTH + 3]);
240
     | Bank1data[MBIC_BOOT_LENGTH + 3]);
200
     if(CrcLength > 0 && CrcLength <= 0x1FFFF )
241
     if(CrcLength > 0 && CrcLength <= 0x1FFFF )
201
         crcret = crc32(&Bank1data[MBIC_BOOT_DATA], CrcLength);
242
         crcret = crc32(&Bank1data[MBIC_BOOT_DATA], CrcLength);
243
+        printf("File CRC : %x CrcLength : %d \r\n",FileCrc,CrcLength);
202
     if(crcret != FileCrc){
244
     if(crcret != FileCrc){
203
         bluecell_Currdatastatus.CPU_Bank1_Image_Version1 = 0xFF;
245
         bluecell_Currdatastatus.CPU_Bank1_Image_Version1 = 0xFF;
204
         bluecell_Currdatastatus.CPU_Bank1_Image_Version2 = 0xFF;
246
         bluecell_Currdatastatus.CPU_Bank1_Image_Version2 = 0xFF;
@@ -238,6 +280,10 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
238
         printf("CRC ERROR : %x , File CRC : %x \r\n",crcret,FileCrc);
280
         printf("CRC ERROR : %x , File CRC : %x \r\n",crcret,FileCrc);
239
     }
281
     }
240
     else{
282
     else{
283
+        if(currcrcret == crcret){
284
+            if(bluecell_Currdatastatus.CPU_Bank_Select == 5)
285
+                bluecell_Currdatastatus.CPU_Current_Bank = HFR_BANK1_SEL;
286
+        }
241
         printf("CRC SUCCESS  : %x , File CRC : %x \r\n",crcret,FileCrc);  
287
         printf("CRC SUCCESS  : %x , File CRC : %x \r\n",crcret,FileCrc);  
242
         bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1 = Bank1data[MBIC_BOOT_CREATION_TIME + 0];
288
         bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1 = Bank1data[MBIC_BOOT_CREATION_TIME + 0];
243
         bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2 = Bank1data[MBIC_BOOT_CREATION_TIME + 1];
289
         bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2 = Bank1data[MBIC_BOOT_CREATION_TIME + 1];
@@ -276,6 +322,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
276
     | Bank2data[MBIC_BOOT_LENGTH + 3]);       
322
     | Bank2data[MBIC_BOOT_LENGTH + 3]);       
277
      if(CrcLength > 0 && CrcLength <= 0x1FFFF )
323
      if(CrcLength > 0 && CrcLength <= 0x1FFFF )
278
         crcret = crc32(&Bank2data[MBIC_BOOT_DATA], CrcLength);
324
         crcret = crc32(&Bank2data[MBIC_BOOT_DATA], CrcLength);
325
+         printf("File CRC : %x CrcLength : %d \r\n",FileCrc,CrcLength);
279
     if(crcret != FileCrc){
326
     if(crcret != FileCrc){
280
    
327
    
281
    
328
    
@@ -309,6 +356,13 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
309
         printf("CRC ERROR : %x , File CRC : %x \r\n",crcret,FileCrc);
356
         printf("CRC ERROR : %x , File CRC : %x \r\n",crcret,FileCrc);
310
     }
357
     }
311
     else{
358
     else{
359
+        if(currcrcret == crcret){
360
+            if(bluecell_Currdatastatus.CPU_Bank_Select == 6)
361
+                bluecell_Currdatastatus.CPU_Current_Bank = HFR_BANK2_SEL;
362
+
363
+        }
364
+
365
+        
312
         printf("CRC SUCCESS  : %x , File CRC : %x \r\n",crcret,FileCrc);  
366
         printf("CRC SUCCESS  : %x , File CRC : %x \r\n",crcret,FileCrc);  
313
         bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME + 0];
367
         bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME + 0];
314
         bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime2 = Bank2data[MBIC_BOOT_CREATION_TIME + 1];
368
         bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime2 = Bank2data[MBIC_BOOT_CREATION_TIME + 1];
@@ -323,7 +377,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
323
         pdata = & bluecell_Currdatastatus.CPU_Bank2_Image_Name;
377
         pdata = & bluecell_Currdatastatus.CPU_Bank2_Image_Name;
324
         for(int i = 0 ; i< 41; i++){
378
         for(int i = 0 ; i< 41; i++){
325
             if(i < 32){
379
             if(i < 32){
326
-                 pdata[i] = Currdata[MBIC_BOOT_FILENAME + i];
380
+                 pdata[i] = Bank2data[MBIC_BOOT_FILENAME + i];
327
             }
381
             }
328
             else{
382
             else{
329
              pdata[i] = 0x20;
383
              pdata[i] = 0x20;
@@ -332,10 +386,14 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
332
    
386
    
333
    
387
    
334
     }
388
     }
389
+
390
+printf("Bank Sel : %d  CurrBank : %d \r\n",bluecell_Currdatastatus.CPU_Bank_Select,bluecell_Currdatastatus.CPU_Current_Bank);
391
+
392
+        
335
     
393
     
336
-           pdata = & bluecell_Currdatastatus.CPU_Bank2_Image_Version1;
337
-            for(int i = 0; i < 41; i++)
338
-                printf("pdata : %x ",pdata[i]);
394
+//           pdata = & bluecell_Currdatastatus.CPU_Bank2_Image_Version1;
395
+//            for(int i = 0; i < 41; i++)
396
+//                printf("pdata : %x ",pdata[i]);
339
 
397
 
340
 }
398
 }
341
 
399
 

+ 3 - 3
Bluecell_Src/uart.c

@@ -110,8 +110,8 @@ void GetDataFromUartQueue(UART_HandleTypeDef *huart)
110
             if(uart_buf[0] == 0xbe){
110
             if(uart_buf[0] == 0xbe){
111
                 Length = uart_buf[BLUECELL_LENGTH_H] << 8  |  uart_buf[BLUECELL_LENGTH_L] ;
111
                 Length = uart_buf[BLUECELL_LENGTH_H] << 8  |  uart_buf[BLUECELL_LENGTH_L] ;
112
                 CrcChk = uart_buf[Length + 1] << 8 | uart_buf[Length  + 2] ;
112
                 CrcChk = uart_buf[Length + 1] << 8 | uart_buf[Length  + 2] ;
113
-         //       if(CRC16_Check(&uart_buf[BLUECELL_TYPE], Length,CrcChk))
114
-            	Bluecell_Operate(uart_buf);
113
+                if(CRC16_Check(&uart_buf[BLUECELL_TYPE], Length,CrcChk) == NO_ERROR)
114
+                  	Bluecell_Operate(uart_buf);
115
             }else if(uart_buf[0] == MBIC_PREAMBLE0
115
             }else if(uart_buf[0] == MBIC_PREAMBLE0
116
                    &&uart_buf[1] == MBIC_PREAMBLE1
116
                    &&uart_buf[1] == MBIC_PREAMBLE1
117
                    &&uart_buf[2] == MBIC_PREAMBLE2
117
                    &&uart_buf[2] == MBIC_PREAMBLE2
@@ -121,7 +121,7 @@ void GetDataFromUartQueue(UART_HandleTypeDef *huart)
121
                {
121
                {
122
                     Length = ((uart_buf[MBIC_LENGTH_0] << 8) | uart_buf[MBIC_LENGTH_1]);
122
                     Length = ((uart_buf[MBIC_LENGTH_0] << 8) | uart_buf[MBIC_LENGTH_1]);
123
                     CrcChk = ((uart_buf[MBIC_PAYLOADSTART + Length ] << 8) | (uart_buf[MBIC_PAYLOADSTART + Length + 1]));
123
                     CrcChk = ((uart_buf[MBIC_PAYLOADSTART + Length ] << 8) | (uart_buf[MBIC_PAYLOADSTART + Length + 1]));
124
-                    if(CRC16_Check(&uart_buf[MBIC_PAYLOADSTART], Length,CrcChk))
124
+                    if(CRC16_Check(&uart_buf[MBIC_PAYLOADSTART], Length,CrcChk) == NO_ERROR)
125
                         MBIC_Operate(uart_buf);
125
                         MBIC_Operate(uart_buf);
126
                     else
126
                     else
127
                       printf("CRC ERROR \r\n");
127
                       printf("CRC ERROR \r\n");

+ 2 - 0
Src/main.c

@@ -281,6 +281,7 @@ int main(void)
281
         int32_t CrcLength = 0;
281
         int32_t CrcLength = 0;
282
         
282
         
283
         
283
         
284
+#if 0 // PYJ.2020.07.13_BEGIN -- 
284
         
285
         
285
         CurrApiAddress = FLASH_MBICUSER_START_ADDR;
286
         CurrApiAddress = FLASH_MBICUSER_START_ADDR;
286
            Bank1Address = FLASH_USER_BANK1_START_ADDR;
287
            Bank1Address = FLASH_USER_BANK1_START_ADDR;
@@ -317,6 +318,7 @@ int main(void)
317
         if(CrcLength > 0 && CrcLength <= 0x1FFFF )
318
         if(CrcLength > 0 && CrcLength <= 0x1FFFF )
318
          crcret = CRC16_Generate(Bank2data, CrcLength );
319
          crcret = CRC16_Generate(Bank2data, CrcLength );
319
         printf("Bank 2 Crc ret : %x  Length : %x :  %d  \r\n", crcret,CrcLength,CrcLength );
320
         printf("Bank 2 Crc ret : %x  Length : %x :  %d  \r\n", crcret,CrcLength,CrcLength );
321
+#endif // PYJ.2020.07.13_END -- 
320
 
322
 
321
   PE43711_PinInit();
323
   PE43711_PinInit();
322
   EEPROM_M24C08_Init();
324
   EEPROM_M24C08_Init();