Pārlūkot izejas kodu

Flash 주소 변경 / Table Write 시 Load 하도록 수정 / Flash Init 추가 /

PYJ 5 gadi atpakaļ
vecāks
revīzija
36c942f0e6

+ 1 - 0
Bluecell_Inc/Bluecell_operate.h

@@ -604,6 +604,7 @@ enum DATATYPE
604
     BLuecell_ATT_ALC2,
604
     BLuecell_ATT_ALC2,
605
     BLuecell_ATT_ALC3,
605
     BLuecell_ATT_ALC3,
606
     BLuecell_ATT_ALC4,   
606
     BLuecell_ATT_ALC4,   
607
+    Bluecell_BankSelect,
607
 };
608
 };
608
 typedef enum{    
609
 typedef enum{    
609
 	DLI_P1_Level_Table_Number = 0x00,
610
 	DLI_P1_Level_Table_Number = 0x00,

+ 6 - 6
Bluecell_Inc/flash.h

@@ -11,23 +11,23 @@
11
 #include "main.h"
11
 #include "main.h"
12
 #include "CRC.h"
12
 #include "CRC.h"
13
 
13
 
14
-#define FLASH_USER_BANK_NUM ((uint32_t)0x08005000) - 150
14
+#define FLASH_USER_BANK_NUM ((uint32_t)0x08008000) - 150
15
 
15
 
16
-#define FLASH_MBICUSER_START_ADDR (uint32_t)((0x08005000) - 128)
16
+#define FLASH_MBICUSER_START_ADDR (uint32_t)((0x08008000) - 128)
17
 #define FLASH_MBICUSER_END_ADDR FLASH_MBICUSER_START_ADDR + ((uint32_t)0xFFFF)
17
 #define FLASH_MBICUSER_END_ADDR FLASH_MBICUSER_START_ADDR + ((uint32_t)0xFFFF)
18
 
18
 
19
 
19
 
20
-#define FLASH_USER_START_ADDR ((uint32_t)0x08005000)
20
+#define FLASH_USER_START_ADDR ((uint32_t)0x08008000)
21
 #define FLASH_USER_END_ADDR     FLASH_USER_START_ADDR + ((uint32_t)0x000FFFF)   /* End @ of user Flash area */
21
 #define FLASH_USER_END_ADDR     FLASH_USER_START_ADDR + ((uint32_t)0x000FFFF)   /* End @ of user Flash area */
22
-#define APPLICATION_ADDRESS     (uint32_t)0x08005000      /* Start user code address: ADDR_FLASH_PAGE_8 */
22
+#define APPLICATION_ADDRESS     (uint32_t)0x08008000      /* Start user code address: ADDR_FLASH_PAGE_8 */
23
 #define BOOTLOADER_ADDRESS     (uint32_t)0x08000000      /* Start user code address: ADDR_FLASH_PAGE_8 */
23
 #define BOOTLOADER_ADDRESS     (uint32_t)0x08000000      /* Start user code address: ADDR_FLASH_PAGE_8 */
24
 
24
 
25
 
25
 
26
 
26
 
27
-#define FLASH_USER_BANK1_START_ADDR ((uint32_t)0x08025000)
27
+#define FLASH_USER_BANK1_START_ADDR ((uint32_t)0x08028000)
28
 #define FLASH_USER_BANK1_END_ADDR FLASH_USER_BANK1_START_ADDR + ((uint32_t)0x1FF80)   /* End @ of user Flash area */
28
 #define FLASH_USER_BANK1_END_ADDR FLASH_USER_BANK1_START_ADDR + ((uint32_t)0x1FF80)   /* End @ of user Flash area */
29
 
29
 
30
-#define FLASH_USER_BANK2_START_ADDR ((uint32_t)0x08045000)
30
+#define FLASH_USER_BANK2_START_ADDR ((uint32_t)0x08048000)
31
 #define FLASH_USER_BANK2_END_ADDR FLASH_USER_BANK2_START_ADDR + ((uint32_t)0x1FF80)
31
 #define FLASH_USER_BANK2_END_ADDR FLASH_USER_BANK2_START_ADDR + ((uint32_t)0x1FF80)
32
 
32
 
33
 
33
 

+ 222 - 39
Bluecell_Src/Bluecell_operate.c

@@ -25,7 +25,7 @@ extern void Uart1_Data_Send(uint8_t* data,uint16_t size);
25
 extern HAL_StatusTypeDef EEPROM_M24C08_Zerowrite(uint8_t devid,uint16_t Address);
25
 extern HAL_StatusTypeDef EEPROM_M24C08_Zerowrite(uint8_t devid,uint16_t Address);
26
 extern uint8_t Chksum_Create(uint8_t *data);
26
 extern uint8_t Chksum_Create(uint8_t *data);
27
 extern uint16_t CRC16_Generate(uint8_t* buf_ptr, int len);
27
 extern uint16_t CRC16_Generate(uint8_t* buf_ptr, int len);
28
-extern void MBIC_APIFLASH_Func(uint8_t* data,uint32_t size);
28
+extern uint8_t MBIC_APIFLASH_Func(uint8_t* data,uint32_t size);
29
 
29
 
30
 /***************************************************************************************/
30
 /***************************************************************************************/
31
 /*                                  Extern Valuable                                    */
31
 /*                                  Extern Valuable                                    */
@@ -1539,100 +1539,124 @@ void Bluecell_TableSave(uint8_t* data,uint8_t type){
1539
         case DLI_P1_ATT_Accuracy_Table_Number: 
1539
         case DLI_P1_ATT_Accuracy_Table_Number: 
1540
             Bluecell_DataCopy(&Att_DL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1540
             Bluecell_DataCopy(&Att_DL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1541
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE)              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
1541
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE)              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
1542
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_BASE)              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
1542
             break;
1543
             break;
1543
         case DLI_P2_ATT_Accuracy_Table_Number: 
1544
         case DLI_P2_ATT_Accuracy_Table_Number: 
1544
             Bluecell_DataCopy(&Att_DL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1545
             Bluecell_DataCopy(&Att_DL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1545
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL1_TABLE_ADDRESDS),&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
1546
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL1_TABLE_ADDRESDS),&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
1547
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL1_TABLE_ADDRESDS),&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
1548
+
1546
 //            printf("ADDRESS : %d \r\n",EEPROM_ATT_DL1_TABLE_ADDRESDS );
1549
 //            printf("ADDRESS : %d \r\n",EEPROM_ATT_DL1_TABLE_ADDRESDS );
1547
             break;
1550
             break;
1548
         case DLI_P3_ATT_Accuracy_Table_Number: 
1551
         case DLI_P3_ATT_Accuracy_Table_Number: 
1549
             Bluecell_DataCopy(&Att_DL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1552
             Bluecell_DataCopy(&Att_DL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1550
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL2_TABLE_ADDRESDS),&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1553
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL2_TABLE_ADDRESDS),&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1554
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL2_TABLE_ADDRESDS),&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1551
             break;
1555
             break;
1552
         case DLI_P4_ATT_Accuracy_Table_Number: 
1556
         case DLI_P4_ATT_Accuracy_Table_Number: 
1553
             Bluecell_DataCopy(&Att_DL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1557
             Bluecell_DataCopy(&Att_DL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1554
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL3_TABLE_ADDRESDS),&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1558
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL3_TABLE_ADDRESDS),&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1559
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL3_TABLE_ADDRESDS),&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));        
1555
             break;
1560
             break;
1556
         case ULO_P1_ATT_Accuracy_Table_Number: 
1561
         case ULO_P1_ATT_Accuracy_Table_Number: 
1557
             Bluecell_DataCopy(&Att_UL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1562
             Bluecell_DataCopy(&Att_UL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1558
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL4_TABLE_ADDRESDS),&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1563
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_DL4_TABLE_ADDRESDS),&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1564
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_DL4_TABLE_ADDRESDS),&Att_UL1.Table_0_0_dBm,sizeof(ATT_TABLE_st));        
1559
             break;
1565
             break;
1560
         case ULO_P2_ATT_Accuracy_Table_Number: 
1566
         case ULO_P2_ATT_Accuracy_Table_Number: 
1561
             Bluecell_DataCopy(&Att_UL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1567
             Bluecell_DataCopy(&Att_UL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1562
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL1_TABLE_ADDRESDS),&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1568
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL1_TABLE_ADDRESDS),&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1569
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL1_TABLE_ADDRESDS),&Att_UL2.Table_0_0_dBm,sizeof(ATT_TABLE_st));        
1563
             break;
1570
             break;
1564
         case ULO_P3_ATT_Accuracy_Table_Number: 
1571
         case ULO_P3_ATT_Accuracy_Table_Number: 
1565
             Bluecell_DataCopy(&Att_UL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1572
             Bluecell_DataCopy(&Att_UL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1566
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL2_TABLE_ADDRESDS),&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1573
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL2_TABLE_ADDRESDS),&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1574
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL2_TABLE_ADDRESDS),&Att_UL3.Table_0_0_dBm,sizeof(ATT_TABLE_st));        
1567
             break;
1575
             break;
1568
         case ULO_P4_ATT_Accuracy_Table_Number: 
1576
         case ULO_P4_ATT_Accuracy_Table_Number: 
1569
             Bluecell_DataCopy(&Att_UL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1577
             Bluecell_DataCopy(&Att_UL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1570
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL3_TABLE_ADDRESDS),&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1578
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL3_TABLE_ADDRESDS),&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1579
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL3_TABLE_ADDRESDS),&Att_UL4.Table_0_0_dBm,sizeof(ATT_TABLE_st));
1571
             break;
1580
             break;
1572
         case DLI_P1_Level_Table_Number: 
1581
         case DLI_P1_Level_Table_Number: 
1573
             Bluecell_DataCopy(&Det_DL1.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1582
             Bluecell_DataCopy(&Det_DL1.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1574
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1583
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1584
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_ATT_UL4_TABLE_ADDRESDS),&Det_DL1.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));        
1575
             break;
1585
             break;
1576
         case DLI_P2_Level_Table_Number: 
1586
         case DLI_P2_Level_Table_Number: 
1577
             Bluecell_DataCopy(&Det_DL2.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1587
             Bluecell_DataCopy(&Det_DL2.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1578
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL1_TABLE_ADDRESDS),&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1588
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL1_TABLE_ADDRESDS),&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1589
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL1_TABLE_ADDRESDS),&Det_DL2.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));        
1579
             break;
1590
             break;
1580
         case DLI_P3_Level_Table_Number: 
1591
         case DLI_P3_Level_Table_Number: 
1581
             Bluecell_DataCopy(&Det_DL3.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1592
             Bluecell_DataCopy(&Det_DL3.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1582
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL2_TABLE_ADDRESDS),&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1593
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL2_TABLE_ADDRESDS),&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1594
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL2_TABLE_ADDRESDS),&Det_DL3.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));        
1583
             break;
1595
             break;
1584
         case DLI_P4_Level_Table_Number: 
1596
         case DLI_P4_Level_Table_Number: 
1585
             Bluecell_DataCopy(&Det_DL4.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1597
             Bluecell_DataCopy(&Det_DL4.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1586
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL3_TABLE_ADDRESDS),&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1598
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL3_TABLE_ADDRESDS),&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));
1599
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL3_TABLE_ADDRESDS),&Det_DL4.Table_Det5_dBm_H,sizeof(DET_TABLEDL_st));        
1587
             break;
1600
             break;
1588
         case ULO_P1_Level_Table_Number: 
1601
         case ULO_P1_Level_Table_Number: 
1589
             Bluecell_DataCopy(&Det_UL1.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1602
             Bluecell_DataCopy(&Det_UL1.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1590
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL4_TABLE_ADDRESDS),&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1603
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_DL4_TABLE_ADDRESDS),&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1604
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_DL4_TABLE_ADDRESDS),&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1591
             break;
1605
             break;
1592
         case ULO_P2_Level_Table_Number: 
1606
         case ULO_P2_Level_Table_Number: 
1593
             Bluecell_DataCopy(&Det_UL2.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1607
             Bluecell_DataCopy(&Det_UL2.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1594
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL1_TABLE_ADDRESDS),&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1608
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL1_TABLE_ADDRESDS),&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1609
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL1_TABLE_ADDRESDS),&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));                    
1595
         break;
1610
         break;
1596
         case ULO_P3_Level_Table_Number: 
1611
         case ULO_P3_Level_Table_Number: 
1597
             Bluecell_DataCopy(&Det_UL3.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1612
             Bluecell_DataCopy(&Det_UL3.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1598
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL2_TABLE_ADDRESDS),&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1613
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL2_TABLE_ADDRESDS),&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1614
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL2_TABLE_ADDRESDS),&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));                    
1599
             break;
1615
             break;
1600
         case ULO_P4_Level_Table_Number: 
1616
         case ULO_P4_Level_Table_Number: 
1601
             Bluecell_DataCopy(&Det_UL4.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1617
             Bluecell_DataCopy(&Det_UL4.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1602
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL3_TABLE_ADDRESDS),&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1618
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL3_TABLE_ADDRESDS),&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));            
1619
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL3_TABLE_ADDRESDS),&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st));                    
1603
             break;
1620
             break;
1604
         case DLI_P1_ATT_Temp_guarantee_Table_Number:
1621
         case DLI_P1_ATT_Temp_guarantee_Table_Number:
1605
             Bluecell_DataCopy(&Temp_DL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1622
             Bluecell_DataCopy(&Temp_DL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1606
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL4_TABLE_ADDRESDS),&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1623
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_DET_UL4_TABLE_ADDRESDS),&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1624
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_DET_UL4_TABLE_ADDRESDS),&Temp_DL1.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1607
             break;
1625
             break;
1608
         case DLI_P2_ATT_Temp_guarantee_Table_Number:
1626
         case DLI_P2_ATT_Temp_guarantee_Table_Number:
1609
             Bluecell_DataCopy(&Temp_DL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1627
             Bluecell_DataCopy(&Temp_DL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1610
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL1_TABLE_ADDRESDS),&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1628
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL1_TABLE_ADDRESDS),&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1629
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL1_TABLE_ADDRESDS),&Temp_DL2.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1611
             break;
1630
             break;
1612
         case DLI_P3_ATT_Temp_guarantee_Table_Number:
1631
         case DLI_P3_ATT_Temp_guarantee_Table_Number:
1613
             Bluecell_DataCopy(&Temp_DL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1632
             Bluecell_DataCopy(&Temp_DL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1614
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL2_TABLE_ADDRESDS),&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1633
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL2_TABLE_ADDRESDS),&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1615
-            
1634
+            EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL2_TABLE_ADDRESDS),&Temp_DL3.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1616
             break;
1635
             break;
1617
         case DLI_P4_ATT_Temp_guarantee_Table_Number:
1636
         case DLI_P4_ATT_Temp_guarantee_Table_Number:
1618
             Bluecell_DataCopy(&Temp_DL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1637
             Bluecell_DataCopy(&Temp_DL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1619
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL3_TABLE_ADDRESDS),&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1638
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL3_TABLE_ADDRESDS),&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st));                    
1639
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL3_TABLE_ADDRESDS),&Temp_DL4.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1620
             break;
1640
             break;
1621
         case ULO_P1_ATT_Temp_guarantee_Table_Number:
1641
         case ULO_P1_ATT_Temp_guarantee_Table_Number:
1622
             Bluecell_DataCopy(&Temp_UL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1642
             Bluecell_DataCopy(&Temp_UL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1623
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL4_TABLE_ADDRESDS),&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1643
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL4_TABLE_ADDRESDS),&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1644
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_DL4_TABLE_ADDRESDS),&Temp_UL1.Table_1_Temp,sizeof(TEMP_TABLE_st));                                    
1624
             break;
1645
             break;
1625
         case ULO_P2_ATT_Temp_guarantee_Table_Number:
1646
         case ULO_P2_ATT_Temp_guarantee_Table_Number:
1626
             Bluecell_DataCopy(&Temp_UL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1647
             Bluecell_DataCopy(&Temp_UL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1627
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL1_TABLE_ADDRESDS),&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1648
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL1_TABLE_ADDRESDS),&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1649
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL1_TABLE_ADDRESDS),&Temp_UL2.Table_1_Temp,sizeof(TEMP_TABLE_st));                                    
1628
             break;
1650
             break;
1629
         case ULO_P3_ATT_Temp_guarantee_Table_Number:
1651
         case ULO_P3_ATT_Temp_guarantee_Table_Number:
1630
             Bluecell_DataCopy(&Temp_UL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1652
             Bluecell_DataCopy(&Temp_UL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1631
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL2_TABLE_ADDRESDS),&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1653
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL2_TABLE_ADDRESDS),&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st));                            
1654
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL2_TABLE_ADDRESDS),&Temp_UL3.Table_1_Temp,sizeof(TEMP_TABLE_st));                                    
1632
             break;
1655
             break;
1633
         case ULO_P4_ATT_Temp_guarantee_Table_Number:
1656
         case ULO_P4_ATT_Temp_guarantee_Table_Number:
1634
             Bluecell_DataCopy(&Temp_UL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1657
             Bluecell_DataCopy(&Temp_UL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1635
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL3_TABLE_ADDRESDS),&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st));                                
1658
             EEPROM_M24C08_write(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL3_TABLE_ADDRESDS),&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st));                                
1659
+            EEPROM_M24C08_Read(EEPROM_M24C08_ID ,(EEPROM_TEMP_UL3_TABLE_ADDRESDS),&Temp_UL4.Table_1_Temp,sizeof(TEMP_TABLE_st));                                        
1636
             break;
1660
             break;
1637
     }
1661
     }
1638
     
1662
     
@@ -2034,6 +2058,7 @@ bool Bluecell_Operate(uint8_t* data){
2034
   int16_t tempdata = 0;
2058
   int16_t tempdata = 0;
2035
   int16_t CurrAtten = 0;
2059
   int16_t CurrAtten = 0;
2036
   uint8_t i = 0;
2060
   uint8_t i = 0;
2061
+  uint16_t Crcret = 0;
2037
   switch(datatype){
2062
   switch(datatype){
2038
     case BLUECELL_SOFTWARERESET:
2063
     case BLUECELL_SOFTWARERESET:
2039
         NVIC_SystemReset();
2064
         NVIC_SystemReset();
@@ -2048,6 +2073,7 @@ bool Bluecell_Operate(uint8_t* data){
2048
         printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);  
2073
         printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);  
2049
         CurrAtten = bluecell_Currdatastatus.ATT_DL1_H << 8 | bluecell_Currdatastatus.ATT_DL1_L;
2074
         CurrAtten = bluecell_Currdatastatus.ATT_DL1_H << 8 | bluecell_Currdatastatus.ATT_DL1_L;
2050
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2075
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2076
+        DL_PrevIwillgiveAtten[AGC_Alarm_DL1_Index] = 0;
2051
         /*
2077
         /*
2052
             Atten Ctrl Function
2078
             Atten Ctrl Function
2053
         */
2079
         */
@@ -2060,7 +2086,7 @@ bool Bluecell_Operate(uint8_t* data){
2060
         printf("bluecell_Currdatastatus.ATT_DL2_L : %x\r\n",bluecell_Currdatastatus.ATT_DL2_L);        
2086
         printf("bluecell_Currdatastatus.ATT_DL2_L : %x\r\n",bluecell_Currdatastatus.ATT_DL2_L);        
2061
         CurrAtten = bluecell_Currdatastatus.ATT_DL2_H << 8 | bluecell_Currdatastatus.ATT_DL2_L;
2087
         CurrAtten = bluecell_Currdatastatus.ATT_DL2_H << 8 | bluecell_Currdatastatus.ATT_DL2_L;
2062
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2088
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2063
-        
2089
+        DL_PrevIwillgiveAtten[AGC_Alarm_DL2_Index] = 0;
2064
 
2090
 
2065
         /*
2091
         /*
2066
             Atten Ctrl Function
2092
             Atten Ctrl Function
@@ -2072,6 +2098,7 @@ bool Bluecell_Operate(uint8_t* data){
2072
         bluecell_Currdatastatus.ATT_DL3_L = data[BLUECELL_DATA + i++];
2098
         bluecell_Currdatastatus.ATT_DL3_L = data[BLUECELL_DATA + i++];
2073
         CurrAtten = bluecell_Currdatastatus.ATT_DL3_H << 8 | bluecell_Currdatastatus.ATT_DL3_L;
2099
         CurrAtten = bluecell_Currdatastatus.ATT_DL3_H << 8 | bluecell_Currdatastatus.ATT_DL3_L;
2074
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2100
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2101
+        DL_PrevIwillgiveAtten[AGC_Alarm_DL3_Index] = 0;
2075
 
2102
 
2076
         /*
2103
         /*
2077
             Atten Ctrl Function
2104
             Atten Ctrl Function
@@ -2083,7 +2110,7 @@ bool Bluecell_Operate(uint8_t* data){
2083
         bluecell_Currdatastatus.ATT_DL4_L = data[BLUECELL_DATA + i++];
2110
         bluecell_Currdatastatus.ATT_DL4_L = data[BLUECELL_DATA + i++];
2084
         CurrAtten = bluecell_Currdatastatus.ATT_DL4_H << 8 | bluecell_Currdatastatus.ATT_DL4_L;
2111
         CurrAtten = bluecell_Currdatastatus.ATT_DL4_H << 8 | bluecell_Currdatastatus.ATT_DL4_L;
2085
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2112
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2086
-
2113
+        DL_PrevIwillgiveAtten[AGC_Alarm_DL4_Index] = 0;    
2087
         /*
2114
         /*
2088
             Atten Ctrl Function
2115
             Atten Ctrl Function
2089
         */
2116
         */
@@ -2159,6 +2186,7 @@ bool Bluecell_Operate(uint8_t* data){
2159
 //		printf("ret : %f ,tmp %f \r\n",ret,tmp );
2186
 //		printf("ret : %f ,tmp %f \r\n",ret,tmp );
2160
 		break;
2187
 		break;
2161
 	case ATT_DL1_PATH 		 :
2188
 	case ATT_DL1_PATH 		 :
2189
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2162
         if(data[BLUECELL_DATA]==0){
2190
         if(data[BLUECELL_DATA]==0){
2163
             HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK        
2191
             HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK        
2164
             printf("ATT_DL1_PATH OFF\r\n");
2192
             printf("ATT_DL1_PATH OFF\r\n");
@@ -2173,6 +2201,22 @@ bool Bluecell_Operate(uint8_t* data){
2173
             printf("ATT_DL1_PATH ON\r\n");
2201
             printf("ATT_DL1_PATH ON\r\n");
2174
         }
2202
         }
2175
         bluecell_Currdatastatus.ATT_DL1_PATH = data[BLUECELL_DATA];
2203
         bluecell_Currdatastatus.ATT_DL1_PATH = data[BLUECELL_DATA];
2204
+#else
2205
+        bluecell_Currdatastatus.ATT_DL1_PATH = data[BLUECELL_DATA]; 
2206
+        bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1 = 0;
2207
+        bluecell_Prevdatastatus.DLI_Shutdown_Retry_Count1 = 0xFF;
2208
+        if(data[BLUECELL_DATA]==0){
2209
+            HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK        
2210
+            DL_PathUserHandl[0] = true;
2211
+        }
2212
+        else{
2213
+            bluecell_Prevdatastatus.ATT_DL1_H = 0xFF;
2214
+            bluecell_Prevdatastatus.ATT_DL1_L =0xFF;
2215
+            DL_PathUserHandl[0] = false;                    
2216
+            HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_SET);//CLOCK
2217
+        }                
2218
+        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2219
+#endif // PYJ.2020.06.27_END -- 
2176
 	
2220
 	
2177
 
2221
 
2178
 		break;
2222
 		break;
@@ -2204,6 +2248,7 @@ bool Bluecell_Operate(uint8_t* data){
2204
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2248
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2205
 		break;
2249
 		break;
2206
 	case ATT_DL2_PATH		 :
2250
 	case ATT_DL2_PATH		 :
2251
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2207
         if(data[BLUECELL_DATA]==0){
2252
         if(data[BLUECELL_DATA]==0){
2208
             HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK
2253
             HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK
2209
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2 = 0;            
2254
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2 = 0;            
@@ -2215,6 +2260,23 @@ bool Bluecell_Operate(uint8_t* data){
2215
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2260
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2216
         }
2261
         }
2217
         bluecell_Currdatastatus.ATT_DL2_PATH = data[BLUECELL_DATA];
2262
         bluecell_Currdatastatus.ATT_DL2_PATH = data[BLUECELL_DATA];
2263
+#else
2264
+        bluecell_Currdatastatus.ATT_DL2_PATH = data[BLUECELL_DATA]; 
2265
+        bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2 = 0;
2266
+        bluecell_Prevdatastatus.DLI_Shutdown_Retry_Count2 = 0xFF;
2267
+        if(data[BLUECELL_DATA]==0){
2268
+            HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK        
2269
+            DL_PathUserHandl[1] = true;
2270
+        }
2271
+        else{
2272
+            bluecell_Prevdatastatus.ATT_DL2_H = 0xFF;
2273
+            bluecell_Prevdatastatus.ATT_DL2_L =0xFF;
2274
+            DL_PathUserHandl[1] = false;                    
2275
+            HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_SET);//CLOCK
2276
+        }                
2277
+        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2278
+
2279
+#endif // PYJ.2020.06.27_END -- 
2218
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2280
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2219
 		break;
2281
 		break;
2220
 
2282
 
@@ -2245,6 +2307,7 @@ bool Bluecell_Operate(uint8_t* data){
2245
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2307
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2246
 		break;
2308
 		break;
2247
 	case ATT_DL3_PATH :
2309
 	case ATT_DL3_PATH :
2310
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2248
         if(data[BLUECELL_DATA]==0){
2311
         if(data[BLUECELL_DATA]==0){
2249
             HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK
2312
             HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK
2250
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3 = 0;
2313
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3 = 0;
@@ -2256,6 +2319,23 @@ bool Bluecell_Operate(uint8_t* data){
2256
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2319
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2257
         }
2320
         }
2258
         bluecell_Currdatastatus.ATT_DL3_PATH = data[BLUECELL_DATA];
2321
         bluecell_Currdatastatus.ATT_DL3_PATH = data[BLUECELL_DATA];
2322
+#else
2323
+        bluecell_Currdatastatus.ATT_DL3_PATH = data[BLUECELL_DATA]; 
2324
+        bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3 = 0;
2325
+        bluecell_Prevdatastatus.DLI_Shutdown_Retry_Count3 = 0xFF;
2326
+        if(data[BLUECELL_DATA]==0){
2327
+            HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK        
2328
+            DL_PathUserHandl[2] = true;
2329
+        }
2330
+        else{
2331
+            bluecell_Prevdatastatus.ATT_DL3_H = 0xFF;
2332
+            bluecell_Prevdatastatus.ATT_DL3_L =0xFF;
2333
+            DL_PathUserHandl[2] = false;                    
2334
+            HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_SET);//CLOCK
2335
+        }                
2336
+        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2337
+
2338
+#endif // PYJ.2020.06.27_END -- 
2259
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2339
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2260
 		break;
2340
 		break;
2261
 	case ATT_UL3_PATH :
2341
 	case ATT_UL3_PATH :
@@ -2299,6 +2379,7 @@ bool Bluecell_Operate(uint8_t* data){
2299
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2379
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2300
 		break;
2380
 		break;
2301
 	case ATT_UL4_PATH:
2381
 	case ATT_UL4_PATH:
2382
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2302
         if(data[BLUECELL_DATA]==0){
2383
         if(data[BLUECELL_DATA]==0){
2303
             HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK
2384
             HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK
2304
             bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 = 0;
2385
             bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 = 0;
@@ -2310,6 +2391,23 @@ bool Bluecell_Operate(uint8_t* data){
2310
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2391
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2311
         }
2392
         }
2312
         bluecell_Currdatastatus.ATT_UL4_PATH = data[BLUECELL_DATA];
2393
         bluecell_Currdatastatus.ATT_UL4_PATH = data[BLUECELL_DATA];
2394
+#else
2395
+        bluecell_Currdatastatus.ATT_DL4_PATH = data[BLUECELL_DATA]; 
2396
+        bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4 = 0;
2397
+        bluecell_Prevdatastatus.DLI_Shutdown_Retry_Count4 = 0xFF;
2398
+        if(data[BLUECELL_DATA]==0){
2399
+            HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK        
2400
+            DL_PathUserHandl[3] = true;
2401
+        }
2402
+        else{
2403
+            bluecell_Prevdatastatus.ATT_DL4_H = 0xFF;
2404
+            bluecell_Prevdatastatus.ATT_DL4_L =0xFF;
2405
+            DL_PathUserHandl[3] = false;                    
2406
+            HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_SET);//CLOCK
2407
+        }                
2408
+        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2409
+
2410
+#endif // PYJ.2020.06.27_END -- 
2313
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2411
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2314
 		break;
2412
 		break;
2315
 	case ATT_SelfTest4 :
2413
 	case ATT_SelfTest4 :
@@ -2328,9 +2426,9 @@ bool Bluecell_Operate(uint8_t* data){
2328
     case ATT_TableGet:
2426
     case ATT_TableGet:
2329
         Bluecell_TableLoad(data, data[BLUECELL_DATA]);
2427
         Bluecell_TableLoad(data, data[BLUECELL_DATA]);
2330
         data[BLUECELL_TYPE] = ATT_TableGet;
2428
         data[BLUECELL_TYPE] = ATT_TableGet;
2331
-
2332
-        data[data[BLUECELL_LENGTH_L] + 1] = ((CRC16_Generate(&data[BLUECELL_TYPE], data[BLUECELL_LENGTH_L]) & 0xFF00) >> 8);
2333
-        data[data[BLUECELL_LENGTH_L] + 2] = CRC16_Generate(&data[BLUECELL_TYPE], data[BLUECELL_LENGTH_L]) & 0x00FF;        
2429
+        Crcret = CRC16_Generate(&data[BLUECELL_TYPE], data[BLUECELL_LENGTH_L]);
2430
+        data[data[BLUECELL_LENGTH_L] + 1] = ((Crcret & 0xFF00) >> 8);
2431
+        data[data[BLUECELL_LENGTH_L] + 2] = (Crcret & 0x00FF);
2334
         data[data[BLUECELL_LENGTH_L] + 3] = 0xEB;
2432
         data[data[BLUECELL_LENGTH_L] + 3] = 0xEB;
2335
         
2433
         
2336
         Bluecell_StructCpy(&Txdata[0],&data[0],data[BLUECELL_LENGTH_L] + 4);
2434
         Bluecell_StructCpy(&Txdata[0],&data[0],data[BLUECELL_LENGTH_L] + 4);
@@ -2698,6 +2796,11 @@ bool Bluecell_Operate(uint8_t* data){
2698
         CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2796
         CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2699
 
2797
 
2700
         break;
2798
         break;
2799
+    case Bluecell_BankSelect:
2800
+        bluecell_Currdatastatus.CPU_Bank_Select = data[BLUECELL_DATA + i++];
2801
+        printf("bluecell_Currdatastatus.CPU_Bank_Select : %d \r\n",bluecell_Currdatastatus.CPU_Bank_Select);
2802
+        break;
2803
+           
2701
   }
2804
   }
2702
   
2805
   
2703
   if(datatype != Bluecell_StatusReq
2806
   if(datatype != Bluecell_StatusReq
@@ -3843,6 +3946,7 @@ bool MBIC_Operate(uint8_t* data){
3843
             case  DLI_Gain_Atten1                         :
3946
             case  DLI_Gain_Atten1                         :
3844
                 bluecell_Currdatastatus.ATT_DL1_H = data[MBIC_PAYLOADSTART + 3]; 
3947
                 bluecell_Currdatastatus.ATT_DL1_H = data[MBIC_PAYLOADSTART + 3]; 
3845
                 bluecell_Currdatastatus.ATT_DL1_L = data[MBIC_PAYLOADSTART + 4]; 
3948
                 bluecell_Currdatastatus.ATT_DL1_L = data[MBIC_PAYLOADSTART + 4]; 
3949
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL1_Index] = 0;
3846
                 printf("bluecell_Currdatastatus.ATT_DL1_H : %x\r\n",bluecell_Currdatastatus.ATT_DL1_H);
3950
                 printf("bluecell_Currdatastatus.ATT_DL1_H : %x\r\n",bluecell_Currdatastatus.ATT_DL1_H);
3847
                 printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);              
3951
                 printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);              
3848
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3952
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
@@ -3850,6 +3954,7 @@ bool MBIC_Operate(uint8_t* data){
3850
             case  DLI_Gain_Atten2                         :
3954
             case  DLI_Gain_Atten2                         :
3851
                 bluecell_Currdatastatus.ATT_DL2_H = data[MBIC_PAYLOADSTART + 3]; 
3955
                 bluecell_Currdatastatus.ATT_DL2_H = data[MBIC_PAYLOADSTART + 3]; 
3852
                 bluecell_Currdatastatus.ATT_DL2_L = data[MBIC_PAYLOADSTART + 4]; 
3956
                 bluecell_Currdatastatus.ATT_DL2_L = data[MBIC_PAYLOADSTART + 4]; 
3957
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL2_Index] = 0;
3853
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3958
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3854
                 printf("bluecell_Currdatastatus.ATT_DL2_H : %x\r\n",bluecell_Currdatastatus.ATT_DL2_H);
3959
                 printf("bluecell_Currdatastatus.ATT_DL2_H : %x\r\n",bluecell_Currdatastatus.ATT_DL2_H);
3855
                 printf("bluecell_Currdatastatus.ATT_DL2_L : %x\r\n",bluecell_Currdatastatus.ATT_DL2_L); 
3960
                 printf("bluecell_Currdatastatus.ATT_DL2_L : %x\r\n",bluecell_Currdatastatus.ATT_DL2_L); 
@@ -3858,12 +3963,14 @@ bool MBIC_Operate(uint8_t* data){
3858
             case  DLI_Gain_Atten3                         :
3963
             case  DLI_Gain_Atten3                         :
3859
                 bluecell_Currdatastatus.ATT_DL3_H = data[MBIC_PAYLOADSTART + 3]; 
3964
                 bluecell_Currdatastatus.ATT_DL3_H = data[MBIC_PAYLOADSTART + 3]; 
3860
                 bluecell_Currdatastatus.ATT_DL3_L = data[MBIC_PAYLOADSTART + 4]; 
3965
                 bluecell_Currdatastatus.ATT_DL3_L = data[MBIC_PAYLOADSTART + 4]; 
3966
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL3_Index] = 0;
3861
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3967
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3862
 
3968
 
3863
                 break;
3969
                 break;
3864
             case  DLI_Gain_Atten4                         :
3970
             case  DLI_Gain_Atten4                         :
3865
                 bluecell_Currdatastatus.ATT_DL4_H = data[MBIC_PAYLOADSTART + 3]; 
3971
                 bluecell_Currdatastatus.ATT_DL4_H = data[MBIC_PAYLOADSTART + 3]; 
3866
                 bluecell_Currdatastatus.ATT_DL4_L = data[MBIC_PAYLOADSTART + 4]; 
3972
                 bluecell_Currdatastatus.ATT_DL4_L = data[MBIC_PAYLOADSTART + 4]; 
3973
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL4_Index] = 0;
3867
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3974
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3868
 
3975
 
3869
                 break;
3976
                 break;
@@ -5448,6 +5555,28 @@ void ALC_Package_Operate(uint8_t*ULO_ADC_Level,uint8_t* ULO_Level,DET_TABLEUL_st
5448
 
5555
 
5449
 
5556
 
5450
 }
5557
 }
5558
+void UL_Curr_Level(uint8_t*ULO_ADC_Level,uint8_t* ULO_Level,DET_TABLEUL_st*      UL_Table,uint8_t TableIndex){
5559
+double ret = 0;
5560
+double ResdBm = 0;
5561
+int16_t ResultData = 0;
5562
+
5563
+
5564
+    ret  =  ((ULO_ADC_Level[ULO_ALC_H] << 8 | ULO_ADC_Level[ULO_ALC_L]) * 0.001);
5565
+    /*Curr UL Value*/
5566
+    ResdBm = AutoControl_ADC_Compare(ret,&UL_Table->Table_Det_15_dBm_H,UL_Table->Table_Length * 2,&ALC_Table_ref[TableIndex].DET_UL_0);
5567
+    //ret 현재 Voltage 값 출력
5568
+    //ret 에 따른 현재 DBM 구현
5569
+    ResultData = ResdBm;
5570
+    ULO_Level[ULO_ALC_H] = (ResultData & 0xFF00) >> 8;
5571
+    ULO_Level[ULO_ALC_L] = (ResultData & 0x00FF);
5572
+//    printf("============ALC_OFF======START================\r\n");
5573
+//    printf("Current UL ADC VALUE : %f \r\n",ret);
5574
+//    printf("ResdBm : UL1 : %f \r\n",ResdBm);
5575
+//    printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_H : %x \r\n",ResultData,ULO_Level[ULO_ALC_H]);
5576
+//    printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,ULO_Level[ULO_ALC_L]);            
5577
+//    printf("==================END================\r\n");
5578
+}
5579
+
5451
 void ALC_Function(){ //DL 
5580
 void ALC_Function(){ //DL 
5452
     //double Volt_Calc_val = 3.3 / 4095;
5581
     //double Volt_Calc_val = 3.3 / 4095;
5453
     //double tempret = 0;
5582
     //double tempret = 0;
@@ -5939,7 +6068,7 @@ void ALC_Function(){ //DL
5939
 #endif // PYJ.2020.05.22_END -- 
6068
 #endif // PYJ.2020.05.22_END -- 
5940
             ALCTimerCnt = 0;
6069
             ALCTimerCnt = 0;
5941
         }else{
6070
         }else{
5942
-#if 1 // PYJ.2020.06.21_BEGIN -- 
6071
+#if 0 // PYJ.2020.06.21_BEGIN -- 
5943
             ALC_Table = &ALC_Table_ref[ALC_Table_UL1_Ref_Index].DET_UL_0;
6072
             ALC_Table = &ALC_Table_ref[ALC_Table_UL1_Ref_Index].DET_UL_0;
5944
             ret  = bluecell_Currdatastatus.ULO_P1_Level1_H << 8;
6073
             ret  = bluecell_Currdatastatus.ULO_P1_Level1_H << 8;
5945
             ret += bluecell_Currdatastatus.ULO_P1_Level1_L;   
6074
             ret += bluecell_Currdatastatus.ULO_P1_Level1_L;   
@@ -5961,10 +6090,28 @@ void ALC_Function(){ //DL
5961
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_L);            
6090
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_L);            
5962
             printf("==================END================\r\n");
6091
             printf("==================END================\r\n");
5963
 #endif // PYJ.2020.06.20_END -- 
6092
 #endif // PYJ.2020.06.20_END -- 
6093
+#else
6094
+            UL_Curr_Level(&bluecell_Currdatastatus.ULO_P1_Level1_H,
6095
+                          &bluecell_Currdatastatus.ULO_Level1_H,
6096
+                          &Det_UL1.Table_Det_15_dBm_H,
6097
+                           ALC_Alarm_UL1_Index);
6098
+            UL_Curr_Level(&bluecell_Currdatastatus.ULO_P2_Level2_H,
6099
+                          &bluecell_Currdatastatus.ULO_Level2_H,
6100
+                          &Det_UL2.Table_Det_15_dBm_H,
6101
+                           ALC_Alarm_UL2_Index);
6102
+            UL_Curr_Level(&bluecell_Currdatastatus.ULO_P3_Level3_H,
6103
+                          &bluecell_Currdatastatus.ULO_Level3_H,
6104
+                          &Det_UL3.Table_Det_15_dBm_H,
6105
+                           ALC_Alarm_UL3_Index);
6106
+            UL_Curr_Level(&bluecell_Currdatastatus.ULO_P4_Level4_H,
6107
+                          &bluecell_Currdatastatus.ULO_Level4_H,
6108
+                          &Det_UL4.Table_Det_15_dBm_H,
6109
+                           ALC_Alarm_UL4_Index);            
6110
+
5964
 
6111
 
5965
 #endif // PYJ.2020.06.21_END -- 
6112
 #endif // PYJ.2020.06.21_END -- 
5966
 
6113
 
5967
-#if 1 // PYJ.2020.06.22_BEGIN -- 
6114
+#if 0 // PYJ.2020.06.22_BEGIN -- 
5968
             ret  = bluecell_Currdatastatus.ULO_P2_Level2_H << 8;
6115
             ret  = bluecell_Currdatastatus.ULO_P2_Level2_H << 8;
5969
             ret += bluecell_Currdatastatus.ULO_P2_Level2_L;   
6116
             ret += bluecell_Currdatastatus.ULO_P2_Level2_L;   
5970
             ret *= 0.001;
6117
             ret *= 0.001;
@@ -5994,7 +6141,7 @@ void ALC_Function(){ //DL
5994
 #endif // PYJ.2020.06.21_END -- 
6141
 #endif // PYJ.2020.06.21_END -- 
5995
 
6142
 
5996
 #if 1 // PYJ.2020.06.20_BEGIN -- 
6143
 #if 1 // PYJ.2020.06.20_BEGIN -- 
5997
-#if 1 // PYJ.2020.06.21_BEGIN -- 
6144
+#if 0 // PYJ.2020.06.21_BEGIN -- 
5998
             ALC_Table = &ALC_Table_ref[ALC_Table_UL3_Ref_Index].DET_UL_0;
6145
             ALC_Table = &ALC_Table_ref[ALC_Table_UL3_Ref_Index].DET_UL_0;
5999
 
6146
 
6000
             ret  = bluecell_Currdatastatus.ULO_P3_Level3_H << 8;
6147
             ret  = bluecell_Currdatastatus.ULO_P3_Level3_H << 8;
@@ -6006,14 +6153,6 @@ void ALC_Function(){ //DL
6006
             ResultData = ResdBm;
6153
             ResultData = ResdBm;
6007
             bluecell_Currdatastatus.ULO_Level3_H = ((int16_t)ResultData & 0xFF00) >> 8;
6154
             bluecell_Currdatastatus.ULO_Level3_H = ((int16_t)ResultData & 0xFF00) >> 8;
6008
             bluecell_Currdatastatus.ULO_Level3_L = ((int16_t)ResultData & 0x00FF);
6155
             bluecell_Currdatastatus.ULO_Level3_L = ((int16_t)ResultData & 0x00FF);
6009
-#if 0 // PYJ.2020.06.21_BEGIN -- 
6010
-                        printf("=========ALC_OFF=========START================\r\n");
6011
-                        printf("Current UL ADC VALUE : %f \r\n",ret);
6012
-                        printf("ResdBm : UL3 : %f \r\n",ResdBm);
6013
-                        printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_H);
6014
-                        printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_L);            
6015
-                        printf("==================END================\r\n");
6016
-#endif // PYJ.2020.06.21_END --             
6017
 #if 0 // PYJ.2020.06.21_BEGIN -- 
6156
 #if 0 // PYJ.2020.06.21_BEGIN -- 
6018
             printf("=========ALC_OFF=========START================\r\n");
6157
             printf("=========ALC_OFF=========START================\r\n");
6019
             printf("Current UL ADC VALUE : %f \r\n",ret);
6158
             printf("Current UL ADC VALUE : %f \r\n",ret);
@@ -6021,7 +6160,7 @@ void ALC_Function(){ //DL
6021
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_H);
6160
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_H);
6022
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_L);            
6161
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_L);            
6023
             printf("==================END================\r\n");
6162
             printf("==================END================\r\n");
6024
-#endif // PYJ.2020.06.21_END -- 
6163
+#endif // PYJ.2020.06.21_END --             
6025
 
6164
 
6026
 #if 1 // PYJ.2020.06.22_BEGIN -- 
6165
 #if 1 // PYJ.2020.06.22_BEGIN -- 
6027
             ALC_Table = &ALC_Table_ref[ALC_Table_UL4_Ref_Index].DET_UL_0;
6166
             ALC_Table = &ALC_Table_ref[ALC_Table_UL4_Ref_Index].DET_UL_0;
@@ -6036,6 +6175,15 @@ void ALC_Function(){ //DL
6036
             bluecell_Currdatastatus.ULO_Level4_H = ((int16_t)ResultData & 0xFF00) >> 8;
6175
             bluecell_Currdatastatus.ULO_Level4_H = ((int16_t)ResultData & 0xFF00) >> 8;
6037
             bluecell_Currdatastatus.ULO_Level4_L = ((int16_t)ResultData & 0x00FF);            
6176
             bluecell_Currdatastatus.ULO_Level4_L = ((int16_t)ResultData & 0x00FF);            
6038
 #endif // PYJ.2020.06.22_END -- 
6177
 #endif // PYJ.2020.06.22_END -- 
6178
+#if 0 // PYJ.2020.06.21_BEGIN -- 
6179
+            printf("=========ALC_OFF=========START================\r\n");
6180
+            printf("Current UL ADC VALUE : %f \r\n",ret);
6181
+            printf("ResdBm : U4 : %f \r\n",ResdBm);
6182
+            printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level4_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level4_H);
6183
+            printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level4_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level4_L);            
6184
+            printf("==================END================\r\n");
6185
+#endif // PYJ.2020.06.21_END --  
6186
+
6039
 #endif // PYJ.2020.06.21_END -- 
6187
 #endif // PYJ.2020.06.21_END -- 
6040
 #endif // PYJ.2020.06.20_END -- 
6188
 #endif // PYJ.2020.06.20_END -- 
6041
 
6189
 
@@ -6093,12 +6241,12 @@ void AGC_Alarm_Check(uint8_t Path_Index,double AGC_Det,uint8_t* AGC_Table,uint16
6093
 
6241
 
6094
 }
6242
 }
6095
 typedef enum{
6243
 typedef enum{
6096
-    DLI_ALC_H = 0,
6097
-    DLI_ALC_L,
6244
+    DLI_AGC_H = 0,
6245
+    DLI_AGC_L,
6098
 };
6246
 };
6099
 
6247
 
6100
-#if 0 // PYJ.2020.06.27_BEGIN -- 
6101
-void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tableindex,uint8_t* DLI_ADC_Level,uint8_t* DLI_Level,uint8_t,DET_TABLEDL_st* DL_Table){
6248
+#if 1 // PYJ.2020.06.27_BEGIN -- 
6249
+void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tableindex,uint8_t* DLI_ADC_Level,uint8_t* DLI_Level,DET_TABLEDL_st* DL_Table){
6102
         double ret = 0;
6250
         double ret = 0;
6103
         int8_t ResdBm = 0;
6251
         int8_t ResdBm = 0;
6104
         
6252
         
@@ -6108,17 +6256,17 @@ void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tablei
6108
         int16_t IwillgiveAtten = 0;
6256
         int16_t IwillgiveAtten = 0;
6109
         int16_t ResultData = 0;
6257
         int16_t ResultData = 0;
6110
         int8_t* AGC_Table;// = &AGC_Table_ref[MBIC_Table_DL1_INDEX].DET_DL_0;
6258
         int8_t* AGC_Table;// = &AGC_Table_ref[MBIC_Table_DL1_INDEX].DET_DL_0;
6111
-
6112
-
6113
-        
6259
+        Limitdata = Threshold[DLI_AGC_H] << 8;
6260
+        Limitdata += Threshold[DLI_AGC_L];
6261
+        Limitdata *= 0.1; 
6114
 
6262
 
6115
         AGC_Table = &AGC_Table_ref[Tableindex].DET_DL_0;
6263
         AGC_Table = &AGC_Table_ref[Tableindex].DET_DL_0;
6116
-        ret  = DLI_ADC_Level[DLI_ALC_H] << 8;
6117
-        ret += DLI_ADC_Level[DLI_ALC_L];   
6264
+        ret  = DLI_ADC_Level[DLI_AGC_H] << 8;
6265
+        ret += DLI_ADC_Level[DLI_AGC_L];
6118
         ret *= 0.001;
6266
         ret *= 0.001;
6119
         ResdBm = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&DL_Table->Table_Det5_dBm_H,DL_Table->Table_Length * 2,AGC_Table));
6267
         ResdBm = (int8_t)Bluecell_TestPro(AGC_AutoControl_ADC_Compare(ret,&DL_Table->Table_Det5_dBm_H,DL_Table->Table_Length * 2,AGC_Table));
6120
-        DLI_Level[DLI_ALC_H] = ((int16_t)ResdBm & 0xFF00) >> 8;
6121
-        DLI_Level[DLI_ALC_L] = ((int16_t)ResdBm & 0x00FF);
6268
+        DLI_Level[DLI_AGC_H] = ((int16_t)ResdBm & 0xFF00) >> 8;
6269
+        DLI_Level[DLI_AGC_L] = ((int16_t)ResdBm & 0x00FF);
6122
         for(i = 0; i < sizeof(AGC_dBm_t); i++){
6270
         for(i = 0; i < sizeof(AGC_dBm_t); i++){
6123
             if(AGC_Table[i] == ResdBm)
6271
             if(AGC_Table[i] == ResdBm)
6124
                 break;
6272
                 break;
@@ -6126,20 +6274,20 @@ void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tablei
6126
         IwillgiveAtten = AGC_Calc(Limitdata,ResdBm);
6274
         IwillgiveAtten = AGC_Calc(Limitdata,ResdBm);
6127
         IwillgiveAtten *= -1;
6275
         IwillgiveAtten *= -1;
6128
 //        printf("==================================\r\n");
6276
 //        printf("==================================\r\n");
6129
-//        printf("Current DL1 ADC VALUE : %f \r\n",ret);
6130
-//        printf("ResdBm : DL1 : %d \r\n",ResdBm);
6131
-//        printf("I WILL GIVE YOU ATTEN  : %d\r\n",IwillgiveAtten);            
6132
-//        printf("AGC  : %d\r\n",Limitdata);            
6277
+//        printf("Current DL% ADC VALUE : %f \r\n",Tableindex+1,ret);
6278
+//        printf("ResdBm : DL% : %d \r\n",Tableindex+1,ResdBm);
6279
+//        printf("I WILL GIVE YOU ATTEN  : %d\r\n",IwillgiveAtten);
6280
+//        printf("AGC  : %d\r\n",Limitdata);
6133
 
6281
 
6134
 
6282
 
6135
         if(ResdBm > Limitdata &&  DL_PrevIwillgiveAtten[Tableindex] > IwillgiveAtten){
6283
         if(ResdBm > Limitdata &&  DL_PrevIwillgiveAtten[Tableindex] > IwillgiveAtten){
6136
 //            printf("IwillgiveAtten : %d \r\n",IwillgiveAtten);
6284
 //            printf("IwillgiveAtten : %d \r\n",IwillgiveAtten);
6137
             DL_PrevIwillgiveAtten[Tableindex] = IwillgiveAtten;
6285
             DL_PrevIwillgiveAtten[Tableindex] = IwillgiveAtten;
6138
-            IwillgiveAtten = (DL_AGC_StartAtten[Tableindex]/10) + IwillgiveAtten;
6286
+            IwillgiveAtten = (DL_AGC_StartAtten[Tableindex]*0.1) + IwillgiveAtten;
6139
 //            printf("WILLATTEN RET : %d \r\n",IwillgiveAtten);
6287
 //            printf("WILLATTEN RET : %d \r\n",IwillgiveAtten);
6140
-            AGC_Alarm_Check(AGC_Alarm_DL1_Index,ret,&Det_DL1.Table_Det5_dBm_H,IwillgiveAtten);
6141
-            DL_MainAtten[DLI_ALC_H] = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
6142
-            DL_MainAtten[DLI_ALC_L] = (((IwillgiveAtten * 10) & 0x00FF));     
6288
+            AGC_Alarm_Check(AGC_Alarm_DL1_Index,ret,&DL_Table->Table_Det5_dBm_H,IwillgiveAtten);
6289
+            DL_MainAtten[DLI_AGC_H] = (((IwillgiveAtten * 10) & 0xFF00) >> 8) ;
6290
+            DL_MainAtten[DLI_AGC_L] = (((IwillgiveAtten * 10) & 0x00FF));     
6143
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6291
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6144
         }
6292
         }
6145
 
6293
 
@@ -6234,6 +6382,7 @@ void AGC_Function(){//DL
6234
        bluecell_Currdatastatus.ATT_DL2_L = (((IwillgiveAtten * 10) & 0x00FF));     
6382
        bluecell_Currdatastatus.ATT_DL2_L = (((IwillgiveAtten * 10) & 0x00FF));     
6235
        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6383
        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6236
 #endif // PYJ.2020.06.23_END -- 
6384
 #endif // PYJ.2020.06.23_END -- 
6385
+#if 0 // PYJ.2020.06.27_BEGIN -- 
6237
         AGC_Table = &AGC_Table_ref[MBIC_Table_DL1_INDEX].DET_DL_0;
6386
         AGC_Table = &AGC_Table_ref[MBIC_Table_DL1_INDEX].DET_DL_0;
6238
         ret  = bluecell_Currdatastatus.DLI_P1_Level1_H << 8;
6387
         ret  = bluecell_Currdatastatus.DLI_P1_Level1_H << 8;
6239
         ret += bluecell_Currdatastatus.DLI_P1_Level1_L;   
6388
         ret += bluecell_Currdatastatus.DLI_P1_Level1_L;   
@@ -6264,6 +6413,35 @@ void AGC_Function(){//DL
6264
             bluecell_Currdatastatus.ATT_DL1_L = (((IwillgiveAtten * 10) & 0x00FF));     
6413
             bluecell_Currdatastatus.ATT_DL1_L = (((IwillgiveAtten * 10) & 0x00FF));     
6265
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6414
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6266
         }
6415
         }
6416
+#else
6417
+    AGC_Package_Operate(&bluecell_Currdatastatus.DLI_AGC_Threshold_H,
6418
+                        &bluecell_Currdatastatus.ATT_DL1_H,
6419
+                        AGC_Alarm_DL1_Index,
6420
+                        &bluecell_Currdatastatus.DLI_P1_Level1_H,
6421
+                        &bluecell_Currdatastatus.DLI_Level1_H,
6422
+                        &Det_DL1.Table_Det5_dBm_H                        );
6423
+    AGC_Package_Operate(&bluecell_Currdatastatus.DLI_AGC_Threshold_H,
6424
+                        &bluecell_Currdatastatus.ATT_DL2_H,
6425
+                        AGC_Alarm_DL2_Index,
6426
+                        &bluecell_Currdatastatus.DLI_P2_Level2_H,
6427
+                        &bluecell_Currdatastatus.DLI_Level2_H,
6428
+                        &Det_DL2.Table_Det5_dBm_H                        );
6429
+    AGC_Package_Operate(&bluecell_Currdatastatus.DLI_AGC_Threshold_H,
6430
+                    &bluecell_Currdatastatus.ATT_DL3_H,
6431
+                    AGC_Alarm_DL3_Index,
6432
+                    &bluecell_Currdatastatus.DLI_P3_Level3_H,
6433
+                    &bluecell_Currdatastatus.DLI_Level3_H,
6434
+                    &Det_DL3.Table_Det5_dBm_H                        );
6435
+    AGC_Package_Operate(&bluecell_Currdatastatus.DLI_AGC_Threshold_H,
6436
+                    &bluecell_Currdatastatus.ATT_DL4_H,
6437
+                    AGC_Alarm_DL4_Index,
6438
+                    &bluecell_Currdatastatus.DLI_P4_Level4_H,
6439
+                    &bluecell_Currdatastatus.DLI_Level4_H,
6440
+                    &Det_DL4.Table_Det5_dBm_H                        );    
6441
+
6442
+
6443
+#endif // PYJ.2020.06.27_END -- 
6444
+#if 0 // PYJ.2020.06.27_BEGIN -- 
6267
         AGC_Table = &AGC_Table_ref[MBIC_Table_DL2_INDEX].DET_DL_0;
6445
         AGC_Table = &AGC_Table_ref[MBIC_Table_DL2_INDEX].DET_DL_0;
6268
         ret  = bluecell_Currdatastatus.DLI_P2_Level2_H << 8;
6446
         ret  = bluecell_Currdatastatus.DLI_P2_Level2_H << 8;
6269
         ret += bluecell_Currdatastatus.DLI_P2_Level2_L;   
6447
         ret += bluecell_Currdatastatus.DLI_P2_Level2_L;   
@@ -6359,6 +6537,7 @@ void AGC_Function(){//DL
6359
             bluecell_Currdatastatus.ATT_DL4_L = (((IwillgiveAtten * 10) & 0x00FF));     
6537
             bluecell_Currdatastatus.ATT_DL4_L = (((IwillgiveAtten * 10) & 0x00FF));     
6360
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6538
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6361
         }
6539
         }
6540
+#endif // PYJ.2020.06.27_END -- 
6362
 
6541
 
6363
 
6542
 
6364
 
6543
 
@@ -6864,6 +7043,7 @@ void DLI_ShutdownAlarmCheck()
6864
         {
7043
         {
6865
             /*Shutdown 5sec Alarm*/
7044
             /*Shutdown 5sec Alarm*/
6866
             HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK      
7045
             HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK      
7046
+            printf("SHUTDOWN ON DL 1\r\n");
6867
             bluecell_Currdatastatus.ATT_DL1_PATH = false;
7047
             bluecell_Currdatastatus.ATT_DL1_PATH = false;
6868
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1++;
7048
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1++;
6869
             DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL1_Shutdown_Index] = 0;
7049
             DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL1_Shutdown_Index] = 0;
@@ -6911,6 +7091,7 @@ void DLI_ShutdownAlarmCheck()
6911
         {
7091
         {
6912
         
7092
         
6913
             /*Shutdown 5sec Alarm*/
7093
             /*Shutdown 5sec Alarm*/
7094
+                    printf("SHUTDOWN ON DL 2\r\n");
6914
             HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK      
7095
             HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK      
6915
             bluecell_Currdatastatus.ATT_DL2_PATH = false;
7096
             bluecell_Currdatastatus.ATT_DL2_PATH = false;
6916
              printf("DL SHUTDOWN RECOVERY OPERATE PATH OFF\r\n");
7097
              printf("DL SHUTDOWN RECOVERY OPERATE PATH OFF\r\n");
@@ -6957,6 +7138,7 @@ void DLI_ShutdownAlarmCheck()
6957
         if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL3_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
7138
         if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL3_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
6958
         {
7139
         {
6959
             /*Shutdown 5sec Alarm*/
7140
             /*Shutdown 5sec Alarm*/
7141
+                    printf("SHUTDOWN ON DL 3\r\n");
6960
             HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK      
7142
             HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK      
6961
             bluecell_Currdatastatus.ATT_DL3_PATH = false;
7143
             bluecell_Currdatastatus.ATT_DL3_PATH = false;
6962
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3++;
7144
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3++;
@@ -7003,7 +7185,8 @@ void DLI_ShutdownAlarmCheck()
7003
         if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
7185
         if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
7004
         {
7186
         {
7005
             /*Shutdown 5sec Alarm*/
7187
             /*Shutdown 5sec Alarm*/
7006
-            HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK      
7188
+            HAL_GPIO_WritePin(PATH_EN_DL4_GPIO_Port,PATH_EN_DL4_Pin,GPIO_PIN_RESET);//CLOCK   
7189
+            printf("SHUTDOWN ON DL 4\r\n");
7007
             bluecell_Currdatastatus.ATT_DL4_PATH = false;
7190
             bluecell_Currdatastatus.ATT_DL4_PATH = false;
7008
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4++;
7191
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4++;
7009
             DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] = 0;
7192
             DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] = 0;

+ 84 - 47
Bluecell_Src/MBIC_Bootloader.c

@@ -18,7 +18,7 @@ extern __IO bool EraseInit;
18
 
18
 
19
 extern uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress);
19
 extern uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress);
20
 extern void MBIC_DataErase_Func(uint8_t bank_num);
20
 extern void MBIC_DataErase_Func(uint8_t bank_num);
21
-extern void MBIC_APIFLASH_Func(uint8_t* data,uint32_t size);
21
+extern uint8_t MBIC_APIFLASH_Func(uint8_t* data,uint32_t size,uint8_t bank_num);
22
 extern void MBIC_DataBankWrite(uint8_t BankNum);
22
 extern void MBIC_DataBankWrite(uint8_t BankNum);
23
 
23
 
24
 
24
 
@@ -211,7 +211,21 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
211
     uint32_t TotalFrame = 0;
211
     uint32_t TotalFrame = 0;
212
     uint32_t CurrFrame = 0;
212
     uint32_t CurrFrame = 0;
213
     
213
     
214
+    uint16_t DataLength = 0;
215
+    uint16_t Crcret = 0;
216
+    uint16_t RecvCrc = 0;
214
     uint32_t i = 0 ;
217
     uint32_t i = 0 ;
218
+    uint32_t FirmFile_Length  = 0;
219
+    uint32_t  CurrApiAddress = 0,Bank1Address=0,Bank2Address = 0;
220
+    uint8_t BankNum = 0;
221
+    static bool CRCERR = false;
222
+    CurrApiAddress = FLASH_MBICUSER_START_ADDR;
223
+    Bank1Address = FLASH_USER_BANK1_START_ADDR;
224
+    Bank2Address = FLASH_USER_BANK2_START_ADDR;
225
+
226
+    uint8_t* Currdata = (uint8_t*)CurrApiAddress;
227
+    uint8_t* Bank1data = (uint8_t*)Bank1Address;
228
+    uint8_t* Bank2data = (uint8_t*)Bank2Address;    
215
 #if 0 // PYJ.2020.06.04_BEGIN -- 
229
 #if 0 // PYJ.2020.06.04_BEGIN -- 
216
     uint8_t dataTest[1024] = {
230
     uint8_t dataTest[1024] = {
217
       0x4A,0x54,0x2D,0x4E,0x52,0x44,0x41,0x53,0x20,0x20,0x00,0x00,
231
       0x4A,0x54,0x2D,0x4E,0x52,0x44,0x41,0x53,0x20,0x20,0x00,0x00,
@@ -225,9 +239,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
225
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
239
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
226
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
240
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
227
     };
241
     };
228
-    
229
 #endif // PYJ.2020.06.04_END -- 
242
 #endif // PYJ.2020.06.04_END -- 
230
-    
231
 
243
 
232
 //    printf("RX");
244
 //    printf("RX");
233
 //    for(int i = 0; i < 128; i++)
245
 //    for(int i = 0; i < 128; i++)
@@ -236,6 +248,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
236
         case MBIC_Notice_REQ:
248
         case MBIC_Notice_REQ:
237
             printf("MBIC DOWNLOAD REQUEST \r\n");
249
             printf("MBIC DOWNLOAD REQUEST \r\n");
238
             cmd = MBIC_Notice_RSP;
250
             cmd = MBIC_Notice_RSP;
251
+            CRCERR = false;
239
             /*TOTAL FRAME NUMBER*/
252
             /*TOTAL FRAME NUMBER*/
240
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
253
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
241
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];        
254
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];        
@@ -256,7 +269,8 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
256
            
269
            
257
 //            MBIC_DataBankWrite(1);
270
 //            MBIC_DataBankWrite(1);
258
             //if()
271
             //if()
259
-            MBIC_DataErase_Func(bluecell_Currdatastatus.CPU_Bank_Select);
272
+//            MBIC_DataErase_Func(bluecell_Currdatastatus.CPU_Bank_Select);
273
+//            HAL_Delay(10);
260
 //            printf("ccc\r\n");
274
 //            printf("ccc\r\n");
261
         break;
275
         break;
262
         case MBIC_Download_DATA_REQ:
276
         case MBIC_Download_DATA_REQ:
@@ -264,6 +278,10 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
264
                         |data[MBIC_PAYLOADSTART + 1] << 16
278
                         |data[MBIC_PAYLOADSTART + 1] << 16
265
                         |data[MBIC_PAYLOADSTART + 2] << 8
279
                         |data[MBIC_PAYLOADSTART + 2] << 8
266
                         |data[MBIC_PAYLOADSTART + 3] << 0;
280
                         |data[MBIC_PAYLOADSTART + 3] << 0;
281
+            CurrFrame = data[MBIC_PAYLOADSTART + 4] << 24
282
+                        |data[MBIC_PAYLOADSTART + 5] << 16
283
+                        |data[MBIC_PAYLOADSTART + 6] << 8
284
+                        |data[MBIC_PAYLOADSTART + 7] << 0; 
267
 //            MBIC_FileDataCheck(data);
285
 //            MBIC_FileDataCheck(data);
268
             cmd = MBIC_Download_DATA_RSP;
286
             cmd = MBIC_Download_DATA_RSP;
269
             /*TOTAL FRAME NUMBER*/
287
             /*TOTAL FRAME NUMBER*/
@@ -293,7 +311,20 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
293
 #endif // PYJ.2020.06.24_END -- 
311
 #endif // PYJ.2020.06.24_END -- 
294
 //            printf("Data End\r\n");
312
 //            printf("Data End\r\n");
295
 //            Bank_Flash_write(data,FLASH_USER_BANK1_START_ADDR);
313
 //            Bank_Flash_write(data,FLASH_USER_BANK1_START_ADDR);
296
-              MBIC_APIFLASH_Func(&data[MBIC_PAYLOADSTART + 12],Curr_Download_DataIndex - Prev_Download_DataIndex);
314
+              if(Currdata[MBIC_BOOT_VERSION + 3] == Bank1data[MBIC_BOOT_VERSION + 3]){
315
+                BankNum = HFR_BANK2;
316
+              }else{
317
+                BankNum = HFR_BANK1;
318
+              }
319
+              MBIC_APIFLASH_Func(&data[MBIC_PAYLOADSTART + 12],Curr_Download_DataIndex - Prev_Download_DataIndex,BankNum);
320
+              printf("Bank1data[MBIC_BOOT_MARK] : %d \r\n",Bank1data[MBIC_BOOT_MARK]);
321
+              if(BankNum == HFR_BANK1)
322
+                  Crcret = CRC16_Generate(&Bank1data[MBIC_BOOT_MARK], TotalFrame);
323
+              else
324
+                Crcret = CRC16_Generate(&Bank2data[MBIC_BOOT_MARK], TotalFrame);
325
+                printf("CurrFrame : %d ,FirmFile_Length : %x \r\n",CurrFrame,TotalFrame);
326
+                printf("FILE CRC RET : %x \r\n",Crcret);              
327
+
297
 //            HAL_Delay(100);
328
 //            HAL_Delay(100);
298
             Prev_Download_DataIndex  = Curr_Download_DataIndex + 1;
329
             Prev_Download_DataIndex  = Curr_Download_DataIndex + 1;
299
             break;
330
             break;
@@ -301,62 +332,63 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
301
             EraseInit = true;
332
             EraseInit = true;
302
             cmd = MBIC_Download_Confirm_RSP;
333
             cmd = MBIC_Download_Confirm_RSP;
303
             /*TOTAL FRAME NUMBER*/
334
             /*TOTAL FRAME NUMBER*/
304
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
305
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];        
306
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
307
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];        
335
+            if(BankNum == HFR_BANK1){
336
+                FirmFile_Length = (Bank1data[MBIC_BOOT_LENGTH + 0] << 24)
337
+                                | Bank1data[MBIC_BOOT_LENGTH + 1] << 16
338
+                                | Bank1data[MBIC_BOOT_LENGTH + 2] << 8
339
+                                | Bank1data[MBIC_BOOT_LENGTH + 3];
340
+                Crcret = CRC16_Generate(&Bank1data[MBIC_BOOT_MARK], FirmFile_Length);
341
+            }
342
+            else if(BankNum == HFR_BANK2){
343
+                 FirmFile_Length = (Bank2data[MBIC_BOOT_LENGTH + 0] << 24)
344
+                                | Bank2data[MBIC_BOOT_LENGTH + 1] << 16
345
+                                | Bank2data[MBIC_BOOT_LENGTH + 2] << 8
346
+                                | Bank2data[MBIC_BOOT_LENGTH + 3];           
347
+                Crcret = CRC16_Generate(&Bank2data[MBIC_BOOT_MARK], FirmFile_Length);
348
+            }
349
+            RecvCrc = data[MBIC_PAYLOADSTART] << 8 | data[MBIC_PAYLOADSTART + 1];
350
+
351
+            printf("FirmFile_Length : %x \r\n",FirmFile_Length);
352
+            printf("FILE CRC RET : %x \r\n",Crcret);
353
+        
354
+            data[MBIC_PAYLOADSTART + index++] = ((Crcret & 0xFF00) >> 8);
355
+            data[MBIC_PAYLOADSTART + index++] = ((Crcret & 0x00FF));
356
+            if(Crcret != RecvCrc){
357
+                CRCERR = true;
358
+                printf("CRC ERROR : MBIC : %x / MDOC : %x \r\n",Crcret,RecvCrc);
359
+                data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2] = 0;
360
+            }else{
361
+                CRCERR = false;
362
+                printf("CRC Success : MBIC : %x / MDOC : %x \r\n",Crcret,RecvCrc);
363
+                data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2] = 1;
364
+            }
365
+            
366
+            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3] = 0;        
308
             /*DOWNLOAD OPTION*/        
367
             /*DOWNLOAD OPTION*/        
309
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
310
-            Download_Option = data[MBIC_PAYLOADSTART + 4];
311
-            /*DOWNLOAD DELAY REQUEST*/
312
-            data[MBIC_PAYLOADSTART + index++] = 3;
313
-            /*DOWNLOAD Reserve*/
314
-            data[MBIC_PAYLOADSTART + index++] = 0;
315
-            data[MBIC_PAYLOADSTART + index++] = 0;
368
+            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4] = 0;
316
             data[MBIC_PAYLOADSTART + index++] = 0;
369
             data[MBIC_PAYLOADSTART + index++] = 0;
317
             data[MBIC_PAYLOADSTART + index++] = 0;
370
             data[MBIC_PAYLOADSTART + index++] = 0;
318
             data[MBIC_PAYLOADSTART + index++] = 0;
371
             data[MBIC_PAYLOADSTART + index++] = 0;
319
-            data[MBIC_PAYLOADSTART + index++] = 0;  
372
+
320
         break;
373
         break;
321
         case MBIC_Complete_Notice_REQ_REQ:
374
         case MBIC_Complete_Notice_REQ_REQ:
322
             cmd = MBIC_Complete_Notice_RSP;
375
             cmd = MBIC_Complete_Notice_RSP;
323
-            /*TOTAL FRAME NUMBER*/
324
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
325
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];        
326
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
327
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];        
328
-            /*DOWNLOAD OPTION*/        
329
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
330
-            Download_Option = data[MBIC_PAYLOADSTART + 4];
331
-            /*DOWNLOAD DELAY REQUEST*/
332
-            data[MBIC_PAYLOADSTART + index++] = 3;
333
-            /*DOWNLOAD Reserve*/
334
-            data[MBIC_PAYLOADSTART + index++] = 0;
335
-            data[MBIC_PAYLOADSTART + index++] = 0;
336
-            data[MBIC_PAYLOADSTART + index++] = 0;
337
-            data[MBIC_PAYLOADSTART + index++] = 0;
338
-            data[MBIC_PAYLOADSTART + index++] = 0;
339
-            data[MBIC_PAYLOADSTART + index++] = 0;  
376
+            if(CRCERR == false){
377
+                data[MBIC_PAYLOADSTART + index++] = 1;  
378
+            }else{
379
+                data[MBIC_PAYLOADSTART + index++] = 0;  
380
+            }
381
+                data[MBIC_PAYLOADSTART + index++] = 1;              
340
             break;
382
             break;
341
         case MBIC_Reboot_Notice_REQ:
383
         case MBIC_Reboot_Notice_REQ:
342
             cmd = MBIC_Reboot_Notice_RSP;
384
             cmd = MBIC_Reboot_Notice_RSP;
343
             /*TOTAL FRAME NUMBER*/
385
             /*TOTAL FRAME NUMBER*/
344
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
386
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
345
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];        
346
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
347
-            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];        
387
+            data[MBIC_PAYLOADSTART + index++] = 0;        
348
             /*DOWNLOAD OPTION*/        
388
             /*DOWNLOAD OPTION*/        
389
+            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
390
+            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];            
349
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
391
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
350
-            Download_Option = data[MBIC_PAYLOADSTART + 4];
351
-            /*DOWNLOAD DELAY REQUEST*/
352
-            data[MBIC_PAYLOADSTART + index++] = 3;
353
-            /*DOWNLOAD Reserve*/
354
-            data[MBIC_PAYLOADSTART + index++] = 0;
355
-            data[MBIC_PAYLOADSTART + index++] = 0;
356
-            data[MBIC_PAYLOADSTART + index++] = 0;
357
-            data[MBIC_PAYLOADSTART + index++] = 0;
358
-            data[MBIC_PAYLOADSTART + index++] = 0;
359
-            data[MBIC_PAYLOADSTART + index++] = 0;          
360
             break;
392
             break;
361
         default:
393
         default:
362
             return;
394
             return;
@@ -368,6 +400,11 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
368
         MBIC_Resp[i] = data[i];
400
         MBIC_Resp[i] = data[i];
369
     }
401
     }
370
 //	HAL_UART_Transmit_DMA(&huart1, data,22 + 3 + index);
402
 //	HAL_UART_Transmit_DMA(&huart1, data,22 + 3 + index);
403
+    DataLength = 22 + 3 + index;
404
+     Crcret =CRC16_Generate(&data[MBIC_PAYLOADSTART], DataLength - 25);
405
+    MBIC_Resp[(DataLength - 1) - 2] = (Crcret & 0xFF00) >> 8;  
406
+    MBIC_Resp[(DataLength - 1) - 1] = (Crcret & 0x00FF);       
407
+    
371
     
408
     
372
     Uart1_Data_Send(MBIC_Resp ,22 + 3 + index);
409
     Uart1_Data_Send(MBIC_Resp ,22 + 3 + index);
373
 }
410
 }

+ 13 - 3
Bluecell_Src/eeprom.c

@@ -36,9 +36,11 @@ uint8_t testdata[120];
36
 #define ATTENTABLEDET_UL_REF -15
36
 #define ATTENTABLEDET_UL_REF -15
37
 #define ATTENTABLE_TEMP_REF  -10
37
 #define ATTENTABLE_TEMP_REF  -10
38
 void EEPROM_M24C08_Init(void){
38
 void EEPROM_M24C08_Init(void){
39
+    uint8_t* data = 0;
39
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_WINDOW_STATUS_ADDRESDS,&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st) );
40
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_WINDOW_STATUS_ADDRESDS,&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st) );
40
 
41
 
41
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_BASE              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
42
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_BASE              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
43
+
42
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL1_TABLE_ADDRESDS,&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
44
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL1_TABLE_ADDRESDS,&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
43
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL2_TABLE_ADDRESDS,&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
45
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL2_TABLE_ADDRESDS,&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
44
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL3_TABLE_ADDRESDS,&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
46
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL3_TABLE_ADDRESDS,&Att_DL4.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
@@ -56,7 +58,15 @@ void EEPROM_M24C08_Init(void){
56
 
58
 
57
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_DL4_TABLE_ADDRESDS,&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
59
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_DL4_TABLE_ADDRESDS,&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
58
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_UL1_TABLE_ADDRESDS,&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
60
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_UL1_TABLE_ADDRESDS,&Det_UL2.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
61
+//    data = &Det_UL2.Table_Det_15_dBm_H;
62
+//    for(int i = 0; i < sizeof(DET_TABLEUL_st) ; i ++ ){
63
+//        printf("[%d] %x \r\n",i,data[i]);       
64
+//    }    
59
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_UL2_TABLE_ADDRESDS,&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
65
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_UL2_TABLE_ADDRESDS,&Det_UL3.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
66
+//    data = &Det_UL3.Table_Det_15_dBm_H;
67
+//    for(int i = 0; i < sizeof(DET_TABLEUL_st) ; i ++ ){
68
+//        printf("[%d] %x \r\n",i,data[i]);       
69
+//    }    
60
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_UL3_TABLE_ADDRESDS,&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
70
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_UL3_TABLE_ADDRESDS,&Det_UL4.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
61
 
71
 
62
 
72
 
@@ -94,9 +104,9 @@ void EEPROM_M24C08_Init(void){
94
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2 = 0;        
104
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2 = 0;        
95
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3 = 0;            
105
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3 = 0;            
96
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 = 0;        
106
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 = 0;        
97
-    bluecell_Currdatastatus.CPUVERSION1 =  0;
98
-    bluecell_Currdatastatus.CPUVERSION2 = 0;
99
-    bluecell_Currdatastatus.CPUVERSION3 = 6;
107
+//    bluecell_Currdatastatus.CPUVERSION1 =  0;
108
+//    bluecell_Currdatastatus.CPUVERSION2 = 0;
109
+//    bluecell_Currdatastatus.CPUVERSION3 = 8;
100
     Att_DL1.Table_Length  = ATTENTABLEDLUL_LENGTH;
110
     Att_DL1.Table_Length  = ATTENTABLEDLUL_LENGTH;
101
     Att_DL2.Table_Length  = ATTENTABLEDLUL_LENGTH;
111
     Att_DL2.Table_Length  = ATTENTABLEDLUL_LENGTH;
102
     Att_DL3.Table_Length  = ATTENTABLEDLUL_LENGTH;
112
     Att_DL3.Table_Length  = ATTENTABLEDLUL_LENGTH;

+ 134 - 47
Bluecell_Src/flash.c

@@ -42,18 +42,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
42
     uint8_t* Bank1data = (uint8_t*)Bank1Address;
42
     uint8_t* Bank1data = (uint8_t*)Bank1Address;
43
     uint8_t* Bank2data = (uint8_t*)Bank2Address;
43
     uint8_t* Bank2data = (uint8_t*)Bank2Address;
44
 
44
 
45
-    
46
-    
47
     printf("Flash Init \r\n");
45
     printf("Flash Init \r\n");
48
-    for(int i = 0; i < 6; i++){
49
-        if(Currdata[MBIC_BOOT_CREATION_TIME + i] != Bank1data[MBIC_BOOT_CREATION_TIME + i]){
50
-            ret = HFR_BANK2;
51
-            printf("MBIC BANK2 Booting \r\n");
52
-            break;
53
-        }else{
54
-            ret = HFR_BANK1;
55
-        }
56
-    }
57
     uint8_t* pdata;
46
     uint8_t* pdata;
58
     bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1 = Bank1data[MBIC_BOOT_CREATION_TIME + 0];
47
     bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1 = Bank1data[MBIC_BOOT_CREATION_TIME + 0];
59
     bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2 = Bank1data[MBIC_BOOT_CREATION_TIME + 1];
48
     bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2 = Bank1data[MBIC_BOOT_CREATION_TIME + 1];
@@ -66,13 +55,6 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
66
     bluecell_Currdatastatus.CPU_Bank1_Image_Version2 = Bank1data[MBIC_BOOT_VERSION + 1];
55
     bluecell_Currdatastatus.CPU_Bank1_Image_Version2 = Bank1data[MBIC_BOOT_VERSION + 1];
67
     bluecell_Currdatastatus.CPU_Bank1_Image_Version3 = Bank1data[MBIC_BOOT_VERSION + 2];
56
     bluecell_Currdatastatus.CPU_Bank1_Image_Version3 = Bank1data[MBIC_BOOT_VERSION + 2];
68
 
57
 
69
-    pdata = &bluecell_Currdatastatus.CPU_Bank1_Image_Name;
70
-    printf("BANK1 IMAGE NAME : ");
71
-    for(int i = 0 ; i< 32; i++){
72
-        pdata[i] = Bank1data[MBIC_BOOT_FILENAME + i];
73
-        printf("%c",pdata[i]);
74
-    }
75
-    printf("\r\n");
76
 
58
 
77
 
59
 
78
     bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME + 0];
60
     bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME + 0];
@@ -86,6 +68,36 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
86
     bluecell_Currdatastatus.CPU_Bank2_Image_Version2 = Bank2data[MBIC_BOOT_VERSION + 1];
68
     bluecell_Currdatastatus.CPU_Bank2_Image_Version2 = Bank2data[MBIC_BOOT_VERSION + 1];
87
     bluecell_Currdatastatus.CPU_Bank2_Image_Version3 = Bank2data[MBIC_BOOT_VERSION + 2];
69
     bluecell_Currdatastatus.CPU_Bank2_Image_Version3 = Bank2data[MBIC_BOOT_VERSION + 2];
88
 
70
 
71
+
72
+    
73
+    
74
+    bluecell_Currdatastatus.CPUVERSION1 = Currdata[MBIC_BOOT_VERSION + 0];
75
+    bluecell_Currdatastatus.CPUVERSION2 = Currdata[MBIC_BOOT_VERSION + 1];
76
+    bluecell_Currdatastatus.CPUVERSION3 = Currdata[MBIC_BOOT_VERSION + 2];
77
+    
78
+    if(bluecell_Currdatastatus.CPUVERSION1 == Bank1data[MBIC_BOOT_VERSION + 0]
79
+    &&bluecell_Currdatastatus.CPUVERSION1 == Bank1data[MBIC_BOOT_VERSION + 1]
80
+    &&bluecell_Currdatastatus.CPUVERSION1 == Bank1data[MBIC_BOOT_VERSION + 2]){
81
+        bluecell_Currdatastatus.CPU_Current_Bank = HFR_BANK1_SEL;
82
+    }else if(bluecell_Currdatastatus.CPUVERSION1 == Bank2data[MBIC_BOOT_VERSION + 0]
83
+    &&bluecell_Currdatastatus.CPUVERSION1 == Bank2data[MBIC_BOOT_VERSION + 1]
84
+    &&bluecell_Currdatastatus.CPUVERSION1 == Bank2data[MBIC_BOOT_VERSION + 2]){
85
+        bluecell_Currdatastatus.CPU_Current_Bank = HFR_BANK2_SEL;
86
+    }
87
+    printf("Curr Version : %02x.%02x.%02x \r\n",bluecell_Currdatastatus.CPUVERSION1,bluecell_Currdatastatus.CPUVERSION2,bluecell_Currdatastatus.CPUVERSION3);
88
+    printf("Bank1data Version : %02x.%02x.%02x \r\n", Bank1data[MBIC_BOOT_VERSION + 0], Bank1data[MBIC_BOOT_VERSION + 1], Bank1data[MBIC_BOOT_VERSION + 2]);
89
+    printf("Bank2data Version : %02x.%02x.%02x \r\n", Bank2data[MBIC_BOOT_VERSION + 0], Bank2data[MBIC_BOOT_VERSION + 1], Bank2data[MBIC_BOOT_VERSION + 2]);
90
+    pdata = &bluecell_Currdatastatus.CPU_Bank1_Image_Name;
91
+
92
+    
93
+    printf("BANK1 IMAGE NAME : ");
94
+    for(int i = 0 ; i< 32; i++){
95
+        pdata[i] = Bank1data[MBIC_BOOT_FILENAME + i];
96
+        printf("%c",pdata[i]);
97
+    }
98
+    printf("\r\n");
99
+
100
+    
89
     pdata = & bluecell_Currdatastatus.CPU_Bank2_Image_Name;
101
     pdata = & bluecell_Currdatastatus.CPU_Bank2_Image_Name;
90
     printf("BANK2 IMAGE NAME : ");
102
     printf("BANK2 IMAGE NAME : ");
91
     for(int i = 0 ; i< 32; i++){
103
     for(int i = 0 ; i< 32; i++){
@@ -94,20 +106,6 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
94
     }
106
     }
95
     printf("\r\n");
107
     printf("\r\n");
96
 
108
 
97
-    
98
-    
99
-   if(bluecell_Currdatastatus.CPUVERSION2 != 0){
100
-        bluecell_Currdatastatus.CPUVERSION1 = Currdata[MBIC_BOOT_VERSION + 0] = 0;
101
-        bluecell_Currdatastatus.CPUVERSION2 = Currdata[MBIC_BOOT_VERSION + 1] = 0;
102
-        bluecell_Currdatastatus.CPUVERSION3 = Currdata[MBIC_BOOT_VERSION + 2] = 5;
103
-   }else{
104
-        bluecell_Currdatastatus.CPUVERSION1 = Currdata[MBIC_BOOT_VERSION + 0] = 0;
105
-        bluecell_Currdatastatus.CPUVERSION2 = Currdata[MBIC_BOOT_VERSION + 1] = 0;
106
-        bluecell_Currdatastatus.CPUVERSION3 = Currdata[MBIC_BOOT_VERSION + 2] = 5;
107
-   }
108
-
109
-    
110
-
111
     printf("20%d Y / %d M / %d D / %d H / %d M / %d S  \r\n",
109
     printf("20%d Y / %d M / %d D / %d H / %d M / %d S  \r\n",
112
         Currdata[MBIC_BOOT_CREATION_TIME + 0],
110
         Currdata[MBIC_BOOT_CREATION_TIME + 0],
113
         Currdata[MBIC_BOOT_CREATION_TIME + 1],
111
         Currdata[MBIC_BOOT_CREATION_TIME + 1],
@@ -116,8 +114,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
116
         Currdata[MBIC_BOOT_CREATION_TIME + 4],
114
         Currdata[MBIC_BOOT_CREATION_TIME + 4],
117
         Currdata[MBIC_BOOT_CREATION_TIME + 5]        
115
         Currdata[MBIC_BOOT_CREATION_TIME + 5]        
118
     );
116
     );
119
-    bluecell_Currdatastatus.CPU_Current_Bank = ret;
120
-    
117
+
121
     printf("MBIC BANK %d Booting \r\n",bluecell_Currdatastatus.CPU_Current_Bank);    
118
     printf("MBIC BANK %d Booting \r\n",bluecell_Currdatastatus.CPU_Current_Bank);    
122
 
119
 
123
     
120
     
@@ -442,24 +439,21 @@ void MBIC_DataErase_Func(uint8_t bank_num){
442
     if(bank_num == HFR_BANK2){
439
     if(bank_num == HFR_BANK2){
443
         EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
440
         EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
444
         EraseInitStruct.PageAddress = FLASH_USER_BANK2_START_ADDR;
441
         EraseInitStruct.PageAddress = FLASH_USER_BANK2_START_ADDR;
445
-        EraseInitStruct.NbPages     = (FLASH_USER_BANK2_END_ADDR - FLASH_USER_BANK2_START_ADDR) / FLASH_PAGE_SIZE;
442
+        EraseInitStruct.NbPages     = ((FLASH_USER_BANK2_END_ADDR - FLASH_USER_BANK2_START_ADDR) / FLASH_PAGE_SIZE) + 1;
446
         MBIC_Address = FLASH_USER_BANK2_START_ADDR;
443
         MBIC_Address = FLASH_USER_BANK2_START_ADDR;
447
         printf("I will download Bank2 \r\n");
444
         printf("I will download Bank2 \r\n");
448
         printf("Erase BANK 2 \r\n");
445
         printf("Erase BANK 2 \r\n");
449
     }else{
446
     }else{
450
         EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
447
         EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
451
         EraseInitStruct.PageAddress = FLASH_USER_BANK1_START_ADDR;
448
         EraseInitStruct.PageAddress = FLASH_USER_BANK1_START_ADDR;
452
-        EraseInitStruct.NbPages     = (FLASH_USER_BANK1_END_ADDR - FLASH_USER_BANK1_START_ADDR) / FLASH_PAGE_SIZE;
449
+        EraseInitStruct.NbPages     = ((FLASH_USER_BANK1_END_ADDR - FLASH_USER_BANK1_START_ADDR) / FLASH_PAGE_SIZE) + 1;
453
         MBIC_Address = FLASH_USER_BANK1_START_ADDR;
450
         MBIC_Address = FLASH_USER_BANK1_START_ADDR;
454
         printf("I will download Bank1 \r\n");        
451
         printf("I will download Bank1 \r\n");        
455
         printf("Erase BANK 1 \r\n");        
452
         printf("Erase BANK 1 \r\n");        
456
     }
453
     }
457
-        EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
458
-        EraseInitStruct.PageAddress = FLASH_USER_BANK2_START_ADDR;
459
-        EraseInitStruct.NbPages     = (FLASH_USER_BANK2_END_ADDR - FLASH_USER_BANK2_START_ADDR) / FLASH_PAGE_SIZE;
460
-        MBIC_Address = FLASH_USER_BANK2_START_ADDR;    
461
 #endif // PYJ.2020.06.24_END -- 
454
 #endif // PYJ.2020.06.24_END -- 
462
         printf("NbPages : %x \r\n",EraseInitStruct.NbPages );
455
         printf("NbPages : %x \r\n",EraseInitStruct.NbPages );
456
+        printf("EraseInitStruct.PageAddress : %x \r\n",EraseInitStruct.PageAddress);
463
 
457
 
464
         printf("Erase Start\r\n");
458
         printf("Erase Start\r\n");
465
         if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
459
         if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
@@ -483,17 +477,45 @@ void MBIC_DataErase_Func(uint8_t bank_num){
483
     }
477
     }
484
 
478
 
485
 }
479
 }
480
+uint8_t BuildTimeCheck(){
481
+    uint32_t  CurrApiAddress = 0,Bank1Address=0,Bank2Address = 0;
482
+    uint32_t i = 0;
483
+    uint8_t ret = 0;
484
+    CurrApiAddress = FLASH_MBICUSER_START_ADDR;
485
+    Bank1Address = FLASH_USER_BANK1_START_ADDR;
486
+    Bank2Address = FLASH_USER_BANK2_START_ADDR;
486
 
487
 
488
+    uint8_t* Currdata = (uint8_t*)CurrApiAddress;
489
+    uint8_t* Bank1data = (uint8_t*)Bank1Address;
490
+    uint8_t* Bank2data = (uint8_t*)Bank2Address;
491
+    for(int i = 0 ; i < 6; i++){
492
+        if(Bank1data[MBIC_BOOT_CREATION_TIME + i] == Currdata[MBIC_BOOT_CREATION_TIME + i]){
493
+            ret = HFR_BANK1;
494
+        }else{
495
+            ret = HFR_BANK2;
496
+        }
497
+    }
498
+    return ret;
499
+}
487
 
500
 
488
-void MBIC_APIFLASH_Func(uint8_t* data,uint32_t size){
489
-
501
+uint8_t MBIC_APIFLASH_Func(uint8_t* data,uint32_t size,uint8_t bank_num){
502
+    static FLASH_EraseInitTypeDef EraseInitStruct;
490
     static uint32_t PAGEError = 0;
503
     static uint32_t PAGEError = 0;
491
     static uint32_t DownloadIndex;
504
     static uint32_t DownloadIndex;
492
     static __IO uint32_t data32 = 0 , MemoryProgramStatus = 0;
505
     static __IO uint32_t data32 = 0 , MemoryProgramStatus = 0;
493
     int dataindex = 0;
506
     int dataindex = 0;
494
     uint32_t writedata = 0;
507
     uint32_t writedata = 0;
495
     HAL_FLASH_Unlock();
508
     HAL_FLASH_Unlock();
496
-    
509
+    uint32_t  CurrApiAddress = 0,Bank1Address=0,Bank2Address = 0;
510
+    uint32_t i = 0;
511
+    uint8_t ret = 0;
512
+    CurrApiAddress = FLASH_MBICUSER_START_ADDR;
513
+    Bank1Address = FLASH_USER_BANK1_START_ADDR;
514
+    Bank2Address = FLASH_USER_BANK2_START_ADDR;
515
+
516
+    uint8_t* Currdata = (uint8_t*)CurrApiAddress;
517
+    uint8_t* Bank1data = (uint8_t*)Bank1Address;
518
+    uint8_t* Bank2data = (uint8_t*)Bank2Address;
497
     /* Erase the user Flash area
519
     /* Erase the user Flash area
498
       (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/
520
       (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/
499
     
521
     
@@ -523,6 +545,71 @@ void MBIC_APIFLASH_Func(uint8_t* data,uint32_t size){
523
         EraseInit = true;
545
         EraseInit = true;
524
         printf("Erase End\r\n");
546
         printf("Erase End\r\n");
525
     }
547
     }
548
+#else
549
+    if(EraseInit == false){
550
+#if 0 // PYJ.2020.06.24_BEGIN -- 
551
+        EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
552
+        EraseInitStruct.PageAddress = FLASH_USER_BANK1_START_ADDR;
553
+        printf("PageAddress : %x \r\n",FLASH_USER_BANK1_START_ADDR);
554
+//        EraseInitStruct.NbPages     = ((FLASH_USER_BANK1_START_ADDR + ((uint32_t)0xFFFF)) - FLASH_USER_BANK1_START_ADDR) / FLASH_PAGE_SIZE;
555
+        EraseInitStruct.NbPages     = (FLASH_USER_BANK1_START_ADDR - ((uint32_t)0xFFFF)) / FLASH_PAGE_SIZE;
556
+#else
557
+    ret = bluecell_Currdatastatus.CPU_Current_Bank;
558
+    if(bank_num == HFR_AUTO_SEL){
559
+        if(ret == HFR_BANK2)
560
+            bank_num = HFR_BANK1;
561
+        else
562
+            bank_num = HFR_BANK2;
563
+    }else{
564
+        if(ret == HFR_BANK2)
565
+            bank_num = HFR_BANK1;
566
+        else
567
+            bank_num = HFR_BANK2;
568
+
569
+    }
570
+    printf("Curr Bank BANK %d I will download Bank2 \r\n",ret,bank_num);
571
+    
572
+
573
+    if(bank_num == HFR_BANK2){
574
+        EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
575
+        EraseInitStruct.PageAddress = FLASH_USER_BANK2_START_ADDR;
576
+        EraseInitStruct.NbPages     = ((FLASH_USER_BANK2_END_ADDR - FLASH_USER_BANK2_START_ADDR) / FLASH_PAGE_SIZE) + 1;
577
+        MBIC_Address = FLASH_USER_BANK2_START_ADDR;
578
+        printf("I will download Bank2 \r\n");
579
+        printf("Erase BANK 2 \r\n");
580
+    }else{
581
+        EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
582
+        EraseInitStruct.PageAddress = FLASH_USER_BANK1_START_ADDR;
583
+        EraseInitStruct.NbPages     = ((FLASH_USER_BANK1_END_ADDR - FLASH_USER_BANK1_START_ADDR) / FLASH_PAGE_SIZE) + 1;
584
+        MBIC_Address = FLASH_USER_BANK1_START_ADDR;
585
+        printf("I will download Bank1 \r\n");        
586
+        printf("Erase BANK 1 \r\n");        
587
+    }
588
+#endif // PYJ.2020.06.24_END -- 
589
+        printf("NbPages : %x \r\n",EraseInitStruct.NbPages );
590
+        printf("EraseInitStruct.PageAddress : %x \r\n",EraseInitStruct.PageAddress);
591
+
592
+        printf("Erase Start\r\n");
593
+        if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
594
+        {
595
+          /*
596
+            Error occurred while page erase.
597
+            User can add here some code to deal with this error.
598
+            PAGEError will contain the faulty page and then to know the code error on this page,
599
+            user can call function 'HAL_FLASH_GetError()'
600
+          */
601
+          /* Infinite loop */
602
+          while (1)
603
+          {
604
+            /* Make LED2 blink (100ms on, 2s off) to indicate error in Erase operation */
605
+            printf("HAL_FLASHEx_Erase Error\r\n");
606
+            HAL_Delay(2000);
607
+          }
608
+        }
609
+        EraseInit = true;
610
+        printf("Erase End\r\n");
611
+    }
612
+
526
 #endif // PYJ.2020.06.24_END -- 
613
 #endif // PYJ.2020.06.24_END -- 
527
     /* Program the user Flash area word by word
614
     /* Program the user Flash area word by word
528
       (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/
615
       (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/
@@ -566,10 +653,10 @@ void MBIC_APIFLASH_Func(uint8_t* data,uint32_t size){
566
        }
653
        }
567
        else
654
        else
568
        {
655
        {
569
-         while (1)
570
-         {
571
            printf("HAL_FLASH_Program Error\r\n");
656
            printf("HAL_FLASH_Program Error\r\n");
572
-         }
657
+           printf("Flash Failed %x \r\n",MBIC_Address);
658
+           if(downindex / 64)
659
+                HAL_Delay(5);
573
        }
660
        }
574
      }
661
      }
575
 
662
 
@@ -578,7 +665,7 @@ void MBIC_APIFLASH_Func(uint8_t* data,uint32_t size){
578
     /* Lock the Flash to disable the flash control register access (recommended
665
     /* Lock the Flash to disable the flash control register access (recommended
579
        to protect the FLASH memory against possible unwanted operation) *********/
666
        to protect the FLASH memory against possible unwanted operation) *********/
580
     HAL_FLASH_Lock();
667
     HAL_FLASH_Lock();
581
-    
668
+    return bank_num;
582
     /* Check if the programmed data is OK
669
     /* Check if the programmed data is OK
583
         MemoryProgramStatus = 0: data programmed correctly
670
         MemoryProgramStatus = 0: data programmed correctly
584
         MemoryProgramStatus != 0: number of words not programmed correctly ******/
671
         MemoryProgramStatus != 0: number of words not programmed correctly ******/

+ 5 - 5
Bluecell_Src/uart.c

@@ -150,11 +150,11 @@ void Uart1_Data_Send(uint8_t* data,uint16_t size){
150
   //HAL_UART_Transmit_IT(&hTerminal, &data[0],size);
150
   //HAL_UART_Transmit_IT(&hTerminal, &data[0],size);
151
 //    printf("data[278] : %x \r\n",data[278]);
151
 //    printf("data[278] : %x \r\n",data[278]);
152
 ////    HAL_Delay(1);   
152
 ////    HAL_Delay(1);   
153
-    printf("\r\n [TX] : {");
154
-    for(int i = 0; i< size; i++)
155
-        printf(",0x%02x ",data[i]);
156
-    printf("};\r\n\tCOUNT : %d \r\n",size);
157
-    printf("\r\n");
153
+//    printf("\r\n [TX] : {");
154
+//    for(int i = 0; i< size; i++)
155
+//        printf(",0x%02x ",data[i]);
156
+//    printf("};\r\n\tCOUNT : %d \r\n",size);
157
+//    printf("\r\n");
158
     
158
     
159
 }
159
 }
160
 
160
 

+ 1 - 1
STM32F103ZET_JDASMBIC.elf.launch

@@ -57,5 +57,5 @@
57
 </listAttribute>
57
 </listAttribute>
58
 <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#13;&#10;"/>
58
 <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#13;&#10;"/>
59
 <stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
59
 <stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
60
-<stringAttribute key="saved_expressions&lt;seperator&gt;Unknown" value="uart_buf,0x08005000,0x8005000"/>
60
+<stringAttribute key="saved_expressions&lt;seperator&gt;Unknown" value="uart_buf,0x08005000,0x8005000,Bank2data"/>
61
 </launchConfiguration>
61
 </launchConfiguration>

+ 2 - 2
STM32F103ZE_FLASH.ld

@@ -61,8 +61,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */
61
 /* Specify the memory areas */
61
 /* Specify the memory areas */
62
 MEMORY
62
 MEMORY
63
 {
63
 {
64
-RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 64K
65
-FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 512K
64
+RAM (xrw)      : ORIGIN = 0x20002800, LENGTH = 54K
65
+FLASH (rx)      : ORIGIN = 0x8008000, LENGTH = 512K - 20K
66
 }
66
 }
67
 
67
 
68
 /* Define output sections */
68
 /* Define output sections */

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 20 - 198
Src/main.c


+ 1 - 1
Src/system_stm32f1xx.c

@@ -92,7 +92,7 @@
92
 /*!< Uncomment the following line if you need to relocate your vector Table in
92
 /*!< Uncomment the following line if you need to relocate your vector Table in
93
      Internal SRAM. */ 
93
      Internal SRAM. */ 
94
 /* #define VECT_TAB_SRAM */
94
 /* #define VECT_TAB_SRAM */
95
-#define VECT_TAB_OFFSET  0x0000 /* Original Value : 0x00000000U*/ /*!< Vector Table base offset field.
95
+#define VECT_TAB_OFFSET  0x8000 /* Original Value : 0x00000000U*/ /*!< Vector Table base offset field.
96
                                   This value must be a multiple of 0x200. */
96
                                   This value must be a multiple of 0x200. */
97
 
97
 
98
 
98