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 604
     BLuecell_ATT_ALC2,
605 605
     BLuecell_ATT_ALC3,
606 606
     BLuecell_ATT_ALC4,   
607
+    Bluecell_BankSelect,
607 608
 };
608 609
 typedef enum{    
609 610
 	DLI_P1_Level_Table_Number = 0x00,

+ 6 - 6
Bluecell_Inc/flash.h

@@ -11,23 +11,23 @@
11 11
 #include "main.h"
12 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 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 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 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 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 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 25
 extern HAL_StatusTypeDef EEPROM_M24C08_Zerowrite(uint8_t devid,uint16_t Address);
26 26
 extern uint8_t Chksum_Create(uint8_t *data);
27 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 31
 /*                                  Extern Valuable                                    */
@@ -1539,100 +1539,124 @@ void Bluecell_TableSave(uint8_t* data,uint8_t type){
1539 1539
         case DLI_P1_ATT_Accuracy_Table_Number: 
1540 1540
             Bluecell_DataCopy(&Att_DL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1541 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 1543
             break;
1543 1544
         case DLI_P2_ATT_Accuracy_Table_Number: 
1544 1545
             Bluecell_DataCopy(&Att_DL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1545 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 1549
 //            printf("ADDRESS : %d \r\n",EEPROM_ATT_DL1_TABLE_ADDRESDS );
1547 1550
             break;
1548 1551
         case DLI_P3_ATT_Accuracy_Table_Number: 
1549 1552
             Bluecell_DataCopy(&Att_DL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1550 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 1555
             break;
1552 1556
         case DLI_P4_ATT_Accuracy_Table_Number: 
1553 1557
             Bluecell_DataCopy(&Att_DL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1554 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 1560
             break;
1556 1561
         case ULO_P1_ATT_Accuracy_Table_Number: 
1557 1562
             Bluecell_DataCopy(&Att_UL1.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1558 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 1565
             break;
1560 1566
         case ULO_P2_ATT_Accuracy_Table_Number: 
1561 1567
             Bluecell_DataCopy(&Att_UL2.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1562 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 1570
             break;
1564 1571
         case ULO_P3_ATT_Accuracy_Table_Number: 
1565 1572
             Bluecell_DataCopy(&Att_UL3.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1566 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 1575
             break;
1568 1576
         case ULO_P4_ATT_Accuracy_Table_Number: 
1569 1577
             Bluecell_DataCopy(&Att_UL4.Table_0_0_dBm,&data[BLUECELL_DATA + 1],sizeof(ATT_TABLE_st));
1570 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 1580
             break;
1572 1581
         case DLI_P1_Level_Table_Number: 
1573 1582
             Bluecell_DataCopy(&Det_DL1.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1574 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 1585
             break;
1576 1586
         case DLI_P2_Level_Table_Number: 
1577 1587
             Bluecell_DataCopy(&Det_DL2.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1578 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 1590
             break;
1580 1591
         case DLI_P3_Level_Table_Number: 
1581 1592
             Bluecell_DataCopy(&Det_DL3.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1582 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 1595
             break;
1584 1596
         case DLI_P4_Level_Table_Number: 
1585 1597
             Bluecell_DataCopy(&Det_DL4.Table_Det5_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEDL_st));
1586 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 1600
             break;
1588 1601
         case ULO_P1_Level_Table_Number: 
1589 1602
             Bluecell_DataCopy(&Det_UL1.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1590 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 1605
             break;
1592 1606
         case ULO_P2_Level_Table_Number: 
1593 1607
             Bluecell_DataCopy(&Det_UL2.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1594 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 1610
         break;
1596 1611
         case ULO_P3_Level_Table_Number: 
1597 1612
             Bluecell_DataCopy(&Det_UL3.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1598 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 1615
             break;
1600 1616
         case ULO_P4_Level_Table_Number: 
1601 1617
             Bluecell_DataCopy(&Det_UL4.Table_Det_15_dBm_H,&data[BLUECELL_DATA + 1],sizeof(DET_TABLEUL_st));
1602 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 1620
             break;
1604 1621
         case DLI_P1_ATT_Temp_guarantee_Table_Number:
1605 1622
             Bluecell_DataCopy(&Temp_DL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1606 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 1625
             break;
1608 1626
         case DLI_P2_ATT_Temp_guarantee_Table_Number:
1609 1627
             Bluecell_DataCopy(&Temp_DL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1610 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 1630
             break;
1612 1631
         case DLI_P3_ATT_Temp_guarantee_Table_Number:
1613 1632
             Bluecell_DataCopy(&Temp_DL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1614 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 1635
             break;
1617 1636
         case DLI_P4_ATT_Temp_guarantee_Table_Number:
1618 1637
             Bluecell_DataCopy(&Temp_DL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1619 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 1640
             break;
1621 1641
         case ULO_P1_ATT_Temp_guarantee_Table_Number:
1622 1642
             Bluecell_DataCopy(&Temp_UL1.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1623 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 1645
             break;
1625 1646
         case ULO_P2_ATT_Temp_guarantee_Table_Number:
1626 1647
             Bluecell_DataCopy(&Temp_UL2.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1627 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 1650
             break;
1629 1651
         case ULO_P3_ATT_Temp_guarantee_Table_Number:
1630 1652
             Bluecell_DataCopy(&Temp_UL3.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1631 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 1655
             break;
1633 1656
         case ULO_P4_ATT_Temp_guarantee_Table_Number:
1634 1657
             Bluecell_DataCopy(&Temp_UL4.Table_1_Temp,&data[BLUECELL_DATA + 1],sizeof(TEMP_TABLE_st));
1635 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 1660
             break;
1637 1661
     }
1638 1662
     
@@ -2034,6 +2058,7 @@ bool Bluecell_Operate(uint8_t* data){
2034 2058
   int16_t tempdata = 0;
2035 2059
   int16_t CurrAtten = 0;
2036 2060
   uint8_t i = 0;
2061
+  uint16_t Crcret = 0;
2037 2062
   switch(datatype){
2038 2063
     case BLUECELL_SOFTWARERESET:
2039 2064
         NVIC_SystemReset();
@@ -2048,6 +2073,7 @@ bool Bluecell_Operate(uint8_t* data){
2048 2073
         printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);  
2049 2074
         CurrAtten = bluecell_Currdatastatus.ATT_DL1_H << 8 | bluecell_Currdatastatus.ATT_DL1_L;
2050 2075
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2076
+        DL_PrevIwillgiveAtten[AGC_Alarm_DL1_Index] = 0;
2051 2077
         /*
2052 2078
             Atten Ctrl Function
2053 2079
         */
@@ -2060,7 +2086,7 @@ bool Bluecell_Operate(uint8_t* data){
2060 2086
         printf("bluecell_Currdatastatus.ATT_DL2_L : %x\r\n",bluecell_Currdatastatus.ATT_DL2_L);        
2061 2087
         CurrAtten = bluecell_Currdatastatus.ATT_DL2_H << 8 | bluecell_Currdatastatus.ATT_DL2_L;
2062 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 2092
             Atten Ctrl Function
@@ -2072,6 +2098,7 @@ bool Bluecell_Operate(uint8_t* data){
2072 2098
         bluecell_Currdatastatus.ATT_DL3_L = data[BLUECELL_DATA + i++];
2073 2099
         CurrAtten = bluecell_Currdatastatus.ATT_DL3_H << 8 | bluecell_Currdatastatus.ATT_DL3_L;
2074 2100
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2101
+        DL_PrevIwillgiveAtten[AGC_Alarm_DL3_Index] = 0;
2075 2102
 
2076 2103
         /*
2077 2104
             Atten Ctrl Function
@@ -2083,7 +2110,7 @@ bool Bluecell_Operate(uint8_t* data){
2083 2110
         bluecell_Currdatastatus.ATT_DL4_L = data[BLUECELL_DATA + i++];
2084 2111
         CurrAtten = bluecell_Currdatastatus.ATT_DL4_H << 8 | bluecell_Currdatastatus.ATT_DL4_L;
2085 2112
         printf("LINE : %d Curr ATTEN : %d \r\n",__LINE__,CurrAtten);
2086
-
2113
+        DL_PrevIwillgiveAtten[AGC_Alarm_DL4_Index] = 0;    
2087 2114
         /*
2088 2115
             Atten Ctrl Function
2089 2116
         */
@@ -2159,6 +2186,7 @@ bool Bluecell_Operate(uint8_t* data){
2159 2186
 //		printf("ret : %f ,tmp %f \r\n",ret,tmp );
2160 2187
 		break;
2161 2188
 	case ATT_DL1_PATH 		 :
2189
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2162 2190
         if(data[BLUECELL_DATA]==0){
2163 2191
             HAL_GPIO_WritePin(PATH_EN_DL1_GPIO_Port,PATH_EN_DL1_Pin,GPIO_PIN_RESET);//CLOCK        
2164 2192
             printf("ATT_DL1_PATH OFF\r\n");
@@ -2173,6 +2201,22 @@ bool Bluecell_Operate(uint8_t* data){
2173 2201
             printf("ATT_DL1_PATH ON\r\n");
2174 2202
         }
2175 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 2222
 		break;
@@ -2204,6 +2248,7 @@ bool Bluecell_Operate(uint8_t* data){
2204 2248
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2205 2249
 		break;
2206 2250
 	case ATT_DL2_PATH		 :
2251
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2207 2252
         if(data[BLUECELL_DATA]==0){
2208 2253
             HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK
2209 2254
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count2 = 0;            
@@ -2215,6 +2260,23 @@ bool Bluecell_Operate(uint8_t* data){
2215 2260
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2216 2261
         }
2217 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 2280
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2219 2281
 		break;
2220 2282
 
@@ -2245,6 +2307,7 @@ bool Bluecell_Operate(uint8_t* data){
2245 2307
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2246 2308
 		break;
2247 2309
 	case ATT_DL3_PATH :
2310
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2248 2311
         if(data[BLUECELL_DATA]==0){
2249 2312
             HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK
2250 2313
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3 = 0;
@@ -2256,6 +2319,23 @@ bool Bluecell_Operate(uint8_t* data){
2256 2319
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2257 2320
         }
2258 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 2339
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2260 2340
 		break;
2261 2341
 	case ATT_UL3_PATH :
@@ -2299,6 +2379,7 @@ bool Bluecell_Operate(uint8_t* data){
2299 2379
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2300 2380
 		break;
2301 2381
 	case ATT_UL4_PATH:
2382
+#if 0 // PYJ.2020.06.27_BEGIN -- 
2302 2383
         if(data[BLUECELL_DATA]==0){
2303 2384
             HAL_GPIO_WritePin(PATH_EN_UL4_GPIO_Port,PATH_EN_UL4_Pin,GPIO_PIN_RESET);//CLOCK
2304 2385
             bluecell_Currdatastatus.ULO_Shutdown_Retry_Count4 = 0;
@@ -2310,6 +2391,23 @@ bool Bluecell_Operate(uint8_t* data){
2310 2391
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2311 2392
         }
2312 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 2411
 //		printf("Function : %s Line %d \r\n",__func__,__LINE__);
2314 2412
 		break;
2315 2413
 	case ATT_SelfTest4 :
@@ -2328,9 +2426,9 @@ bool Bluecell_Operate(uint8_t* data){
2328 2426
     case ATT_TableGet:
2329 2427
         Bluecell_TableLoad(data, data[BLUECELL_DATA]);
2330 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 2432
         data[data[BLUECELL_LENGTH_L] + 3] = 0xEB;
2335 2433
         
2336 2434
         Bluecell_StructCpy(&Txdata[0],&data[0],data[BLUECELL_LENGTH_L] + 4);
@@ -2698,6 +2796,11 @@ bool Bluecell_Operate(uint8_t* data){
2698 2796
         CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
2699 2797
 
2700 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 2806
   if(datatype != Bluecell_StatusReq
@@ -3843,6 +3946,7 @@ bool MBIC_Operate(uint8_t* data){
3843 3946
             case  DLI_Gain_Atten1                         :
3844 3947
                 bluecell_Currdatastatus.ATT_DL1_H = data[MBIC_PAYLOADSTART + 3]; 
3845 3948
                 bluecell_Currdatastatus.ATT_DL1_L = data[MBIC_PAYLOADSTART + 4]; 
3949
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL1_Index] = 0;
3846 3950
                 printf("bluecell_Currdatastatus.ATT_DL1_H : %x\r\n",bluecell_Currdatastatus.ATT_DL1_H);
3847 3951
                 printf("bluecell_Currdatastatus.ATT_DL1_L : %x\r\n",bluecell_Currdatastatus.ATT_DL1_L);              
3848 3952
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
@@ -3850,6 +3954,7 @@ bool MBIC_Operate(uint8_t* data){
3850 3954
             case  DLI_Gain_Atten2                         :
3851 3955
                 bluecell_Currdatastatus.ATT_DL2_H = data[MBIC_PAYLOADSTART + 3]; 
3852 3956
                 bluecell_Currdatastatus.ATT_DL2_L = data[MBIC_PAYLOADSTART + 4]; 
3957
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL2_Index] = 0;
3853 3958
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3854 3959
                 printf("bluecell_Currdatastatus.ATT_DL2_H : %x\r\n",bluecell_Currdatastatus.ATT_DL2_H);
3855 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 3963
             case  DLI_Gain_Atten3                         :
3859 3964
                 bluecell_Currdatastatus.ATT_DL3_H = data[MBIC_PAYLOADSTART + 3]; 
3860 3965
                 bluecell_Currdatastatus.ATT_DL3_L = data[MBIC_PAYLOADSTART + 4]; 
3966
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL3_Index] = 0;
3861 3967
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3862 3968
 
3863 3969
                 break;
3864 3970
             case  DLI_Gain_Atten4                         :
3865 3971
                 bluecell_Currdatastatus.ATT_DL4_H = data[MBIC_PAYLOADSTART + 3]; 
3866 3972
                 bluecell_Currdatastatus.ATT_DL4_L = data[MBIC_PAYLOADSTART + 4]; 
3973
+                DL_PrevIwillgiveAtten[AGC_Alarm_DL4_Index] = 0;
3867 3974
                 CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
3868 3975
 
3869 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 5580
 void ALC_Function(){ //DL 
5452 5581
     //double Volt_Calc_val = 3.3 / 4095;
5453 5582
     //double tempret = 0;
@@ -5939,7 +6068,7 @@ void ALC_Function(){ //DL
5939 6068
 #endif // PYJ.2020.05.22_END -- 
5940 6069
             ALCTimerCnt = 0;
5941 6070
         }else{
5942
-#if 1 // PYJ.2020.06.21_BEGIN -- 
6071
+#if 0 // PYJ.2020.06.21_BEGIN -- 
5943 6072
             ALC_Table = &ALC_Table_ref[ALC_Table_UL1_Ref_Index].DET_UL_0;
5944 6073
             ret  = bluecell_Currdatastatus.ULO_P1_Level1_H << 8;
5945 6074
             ret += bluecell_Currdatastatus.ULO_P1_Level1_L;   
@@ -5961,10 +6090,28 @@ void ALC_Function(){ //DL
5961 6090
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level1_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level1_L);            
5962 6091
             printf("==================END================\r\n");
5963 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 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 6115
             ret  = bluecell_Currdatastatus.ULO_P2_Level2_H << 8;
5969 6116
             ret += bluecell_Currdatastatus.ULO_P2_Level2_L;   
5970 6117
             ret *= 0.001;
@@ -5994,7 +6141,7 @@ void ALC_Function(){ //DL
5994 6141
 #endif // PYJ.2020.06.21_END -- 
5995 6142
 
5996 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 6145
             ALC_Table = &ALC_Table_ref[ALC_Table_UL3_Ref_Index].DET_UL_0;
5999 6146
 
6000 6147
             ret  = bluecell_Currdatastatus.ULO_P3_Level3_H << 8;
@@ -6006,14 +6153,6 @@ void ALC_Function(){ //DL
6006 6153
             ResultData = ResdBm;
6007 6154
             bluecell_Currdatastatus.ULO_Level3_H = ((int16_t)ResultData & 0xFF00) >> 8;
6008 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 6156
 #if 0 // PYJ.2020.06.21_BEGIN -- 
6018 6157
             printf("=========ALC_OFF=========START================\r\n");
6019 6158
             printf("Current UL ADC VALUE : %f \r\n",ret);
@@ -6021,7 +6160,7 @@ void ALC_Function(){ //DL
6021 6160
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_H : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_H);
6022 6161
             printf("ResdBm  : %x /////  bluecell_Currdatastatus.ULO_Level3_L : %x \r\n",ResultData,bluecell_Currdatastatus.ULO_Level3_L);            
6023 6162
             printf("==================END================\r\n");
6024
-#endif // PYJ.2020.06.21_END -- 
6163
+#endif // PYJ.2020.06.21_END --             
6025 6164
 
6026 6165
 #if 1 // PYJ.2020.06.22_BEGIN -- 
6027 6166
             ALC_Table = &ALC_Table_ref[ALC_Table_UL4_Ref_Index].DET_UL_0;
@@ -6036,6 +6175,15 @@ void ALC_Function(){ //DL
6036 6175
             bluecell_Currdatastatus.ULO_Level4_H = ((int16_t)ResultData & 0xFF00) >> 8;
6037 6176
             bluecell_Currdatastatus.ULO_Level4_L = ((int16_t)ResultData & 0x00FF);            
6038 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 6187
 #endif // PYJ.2020.06.21_END -- 
6040 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 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 6250
         double ret = 0;
6103 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 6256
         int16_t IwillgiveAtten = 0;
6109 6257
         int16_t ResultData = 0;
6110 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 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 6266
         ret *= 0.001;
6119 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 6270
         for(i = 0; i < sizeof(AGC_dBm_t); i++){
6123 6271
             if(AGC_Table[i] == ResdBm)
6124 6272
                 break;
@@ -6126,20 +6274,20 @@ void AGC_Package_Operate(uint8_t* Threshold,uint8_t* DL_MainAtten,uint8_t Tablei
6126 6274
         IwillgiveAtten = AGC_Calc(Limitdata,ResdBm);
6127 6275
         IwillgiveAtten *= -1;
6128 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 6283
         if(ResdBm > Limitdata &&  DL_PrevIwillgiveAtten[Tableindex] > IwillgiveAtten){
6136 6284
 //            printf("IwillgiveAtten : %d \r\n",IwillgiveAtten);
6137 6285
             DL_PrevIwillgiveAtten[Tableindex] = IwillgiveAtten;
6138
-            IwillgiveAtten = (DL_AGC_StartAtten[Tableindex]/10) + IwillgiveAtten;
6286
+            IwillgiveAtten = (DL_AGC_StartAtten[Tableindex]*0.1) + IwillgiveAtten;
6139 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 6291
             CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6144 6292
         }
6145 6293
 
@@ -6234,6 +6382,7 @@ void AGC_Function(){//DL
6234 6382
        bluecell_Currdatastatus.ATT_DL2_L = (((IwillgiveAtten * 10) & 0x00FF));     
6235 6383
        CompareAttenData(bluecell_Currdatastatus,bluecell_Prevdatastatus);
6236 6384
 #endif // PYJ.2020.06.23_END -- 
6385
+#if 0 // PYJ.2020.06.27_BEGIN -- 
6237 6386
         AGC_Table = &AGC_Table_ref[MBIC_Table_DL1_INDEX].DET_DL_0;
6238 6387
         ret  = bluecell_Currdatastatus.DLI_P1_Level1_H << 8;
6239 6388
         ret += bluecell_Currdatastatus.DLI_P1_Level1_L;   
@@ -6264,6 +6413,35 @@ void AGC_Function(){//DL
6264 6413
             bluecell_Currdatastatus.ATT_DL1_L = (((IwillgiveAtten * 10) & 0x00FF));     
6265 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 6445
         AGC_Table = &AGC_Table_ref[MBIC_Table_DL2_INDEX].DET_DL_0;
6268 6446
         ret  = bluecell_Currdatastatus.DLI_P2_Level2_H << 8;
6269 6447
         ret += bluecell_Currdatastatus.DLI_P2_Level2_L;   
@@ -6359,6 +6537,7 @@ void AGC_Function(){//DL
6359 6537
             bluecell_Currdatastatus.ATT_DL4_L = (((IwillgiveAtten * 10) & 0x00FF));     
6360 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 7044
             /*Shutdown 5sec Alarm*/
6866 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 7047
             bluecell_Currdatastatus.ATT_DL1_PATH = false;
6868 7048
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count1++;
6869 7049
             DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL1_Shutdown_Index] = 0;
@@ -6911,6 +7091,7 @@ void DLI_ShutdownAlarmCheck()
6911 7091
         {
6912 7092
         
6913 7093
             /*Shutdown 5sec Alarm*/
7094
+                    printf("SHUTDOWN ON DL 2\r\n");
6914 7095
             HAL_GPIO_WritePin(PATH_EN_DL2_GPIO_Port,PATH_EN_DL2_Pin,GPIO_PIN_RESET);//CLOCK      
6915 7096
             bluecell_Currdatastatus.ATT_DL2_PATH = false;
6916 7097
              printf("DL SHUTDOWN RECOVERY OPERATE PATH OFF\r\n");
@@ -6957,6 +7138,7 @@ void DLI_ShutdownAlarmCheck()
6957 7138
         if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL3_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
6958 7139
         {
6959 7140
             /*Shutdown 5sec Alarm*/
7141
+                    printf("SHUTDOWN ON DL 3\r\n");
6960 7142
             HAL_GPIO_WritePin(PATH_EN_DL3_GPIO_Port,PATH_EN_DL3_Pin,GPIO_PIN_RESET);//CLOCK      
6961 7143
             bluecell_Currdatastatus.ATT_DL3_PATH = false;
6962 7144
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count3++;
@@ -7003,7 +7185,8 @@ void DLI_ShutdownAlarmCheck()
7003 7185
         if(DET_DL_Shutdown_On_AlarmTimerCnt[DET_Alarm_DL4_Shutdown_Index] >= MBIC_ON_SHUTDOWN_MAINTAIN_SEC)
7004 7186
         {
7005 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 7190
             bluecell_Currdatastatus.ATT_DL4_PATH = false;
7008 7191
             bluecell_Currdatastatus.DLI_Shutdown_Retry_Count4++;
7009 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 19
 extern uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress);
20 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 22
 extern void MBIC_DataBankWrite(uint8_t BankNum);
23 23
 
24 24
 
@@ -211,7 +211,21 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
211 211
     uint32_t TotalFrame = 0;
212 212
     uint32_t CurrFrame = 0;
213 213
     
214
+    uint16_t DataLength = 0;
215
+    uint16_t Crcret = 0;
216
+    uint16_t RecvCrc = 0;
214 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 229
 #if 0 // PYJ.2020.06.04_BEGIN -- 
216 230
     uint8_t dataTest[1024] = {
217 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 239
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
226 240
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
227 241
     };
228
-    
229 242
 #endif // PYJ.2020.06.04_END -- 
230
-    
231 243
 
232 244
 //    printf("RX");
233 245
 //    for(int i = 0; i < 128; i++)
@@ -236,6 +248,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
236 248
         case MBIC_Notice_REQ:
237 249
             printf("MBIC DOWNLOAD REQUEST \r\n");
238 250
             cmd = MBIC_Notice_RSP;
251
+            CRCERR = false;
239 252
             /*TOTAL FRAME NUMBER*/
240 253
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
241 254
             data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];        
@@ -256,7 +269,8 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
256 269
            
257 270
 //            MBIC_DataBankWrite(1);
258 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 274
 //            printf("ccc\r\n");
261 275
         break;
262 276
         case MBIC_Download_DATA_REQ:
@@ -264,6 +278,10 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
264 278
                         |data[MBIC_PAYLOADSTART + 1] << 16
265 279
                         |data[MBIC_PAYLOADSTART + 2] << 8
266 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 285
 //            MBIC_FileDataCheck(data);
268 286
             cmd = MBIC_Download_DATA_RSP;
269 287
             /*TOTAL FRAME NUMBER*/
@@ -293,7 +311,20 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
293 311
 #endif // PYJ.2020.06.24_END -- 
294 312
 //            printf("Data End\r\n");
295 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 328
 //            HAL_Delay(100);
298 329
             Prev_Download_DataIndex  = Curr_Download_DataIndex + 1;
299 330
             break;
@@ -301,62 +332,63 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
301 332
             EraseInit = true;
302 333
             cmd = MBIC_Download_Confirm_RSP;
303 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 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 369
             data[MBIC_PAYLOADSTART + index++] = 0;
317 370
             data[MBIC_PAYLOADSTART + index++] = 0;
318 371
             data[MBIC_PAYLOADSTART + index++] = 0;
319
-            data[MBIC_PAYLOADSTART + index++] = 0;  
372
+
320 373
         break;
321 374
         case MBIC_Complete_Notice_REQ_REQ:
322 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 382
             break;
341 383
         case MBIC_Reboot_Notice_REQ:
342 384
             cmd = MBIC_Reboot_Notice_RSP;
343 385
             /*TOTAL FRAME NUMBER*/
344 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 388
             /*DOWNLOAD OPTION*/        
389
+            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
390
+            data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];            
349 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 392
             break;
361 393
         default:
362 394
             return;
@@ -368,6 +400,11 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
368 400
         MBIC_Resp[i] = data[i];
369 401
     }
370 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 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 36
 #define ATTENTABLEDET_UL_REF -15
37 37
 #define ATTENTABLE_TEMP_REF  -10
38 38
 void EEPROM_M24C08_Init(void){
39
+    uint8_t* data = 0;
39 40
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_WINDOW_STATUS_ADDRESDS,&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st) );
40 41
 
41 42
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_BASE              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
43
+
42 44
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL1_TABLE_ADDRESDS,&Att_DL2.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
43 45
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_DL2_TABLE_ADDRESDS,&Att_DL3.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
44 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 59
     EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_DET_DL4_TABLE_ADDRESDS,&Det_UL1.Table_Det_15_dBm_H,sizeof(DET_TABLEUL_st) );
58 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 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 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 104
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count2 = 0;        
95 105
     bluecell_Currdatastatus.ULO_Shutdown_Retry_Count3 = 0;            
96 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 110
     Att_DL1.Table_Length  = ATTENTABLEDLUL_LENGTH;
101 111
     Att_DL2.Table_Length  = ATTENTABLEDLUL_LENGTH;
102 112
     Att_DL3.Table_Length  = ATTENTABLEDLUL_LENGTH;

+ 134 - 47
Bluecell_Src/flash.c

@@ -42,18 +42,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
42 42
     uint8_t* Bank1data = (uint8_t*)Bank1Address;
43 43
     uint8_t* Bank2data = (uint8_t*)Bank2Address;
44 44
 
45
-    
46
-    
47 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 46
     uint8_t* pdata;
58 47
     bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime1 = Bank1data[MBIC_BOOT_CREATION_TIME + 0];
59 48
     bluecell_Currdatastatus.CPU_Bank1_Image_BuildTime2 = Bank1data[MBIC_BOOT_CREATION_TIME + 1];
@@ -66,13 +55,6 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
66 55
     bluecell_Currdatastatus.CPU_Bank1_Image_Version2 = Bank1data[MBIC_BOOT_VERSION + 1];
67 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 60
     bluecell_Currdatastatus.CPU_Bank2_Image_BuildTime1 = Bank2data[MBIC_BOOT_CREATION_TIME + 0];
@@ -86,6 +68,36 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
86 68
     bluecell_Currdatastatus.CPU_Bank2_Image_Version2 = Bank2data[MBIC_BOOT_VERSION + 1];
87 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 101
     pdata = & bluecell_Currdatastatus.CPU_Bank2_Image_Name;
90 102
     printf("BANK2 IMAGE NAME : ");
91 103
     for(int i = 0 ; i< 32; i++){
@@ -94,20 +106,6 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
94 106
     }
95 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 109
     printf("20%d Y / %d M / %d D / %d H / %d M / %d S  \r\n",
112 110
         Currdata[MBIC_BOOT_CREATION_TIME + 0],
113 111
         Currdata[MBIC_BOOT_CREATION_TIME + 1],
@@ -116,8 +114,7 @@ void Flash_InitRead() // ?占쏙옙湲고븿?占쏙옙
116 114
         Currdata[MBIC_BOOT_CREATION_TIME + 4],
117 115
         Currdata[MBIC_BOOT_CREATION_TIME + 5]        
118 116
     );
119
-    bluecell_Currdatastatus.CPU_Current_Bank = ret;
120
-    
117
+
121 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 439
     if(bank_num == HFR_BANK2){
443 440
         EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
444 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 443
         MBIC_Address = FLASH_USER_BANK2_START_ADDR;
447 444
         printf("I will download Bank2 \r\n");
448 445
         printf("Erase BANK 2 \r\n");
449 446
     }else{
450 447
         EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
451 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 450
         MBIC_Address = FLASH_USER_BANK1_START_ADDR;
454 451
         printf("I will download Bank1 \r\n");        
455 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 454
 #endif // PYJ.2020.06.24_END -- 
462 455
         printf("NbPages : %x \r\n",EraseInitStruct.NbPages );
456
+        printf("EraseInitStruct.PageAddress : %x \r\n",EraseInitStruct.PageAddress);
463 457
 
464 458
         printf("Erase Start\r\n");
465 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 503
     static uint32_t PAGEError = 0;
491 504
     static uint32_t DownloadIndex;
492 505
     static __IO uint32_t data32 = 0 , MemoryProgramStatus = 0;
493 506
     int dataindex = 0;
494 507
     uint32_t writedata = 0;
495 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 519
     /* Erase the user Flash area
498 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 545
         EraseInit = true;
524 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 613
 #endif // PYJ.2020.06.24_END -- 
527 614
     /* Program the user Flash area word by word
528 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 654
        else
568 655
        {
569
-         while (1)
570
-         {
571 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 665
     /* Lock the Flash to disable the flash control register access (recommended
579 666
        to protect the FLASH memory against possible unwanted operation) *********/
580 667
     HAL_FLASH_Lock();
581
-    
668
+    return bank_num;
582 669
     /* Check if the programmed data is OK
583 670
         MemoryProgramStatus = 0: data programmed correctly
584 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 150
   //HAL_UART_Transmit_IT(&hTerminal, &data[0],size);
151 151
 //    printf("data[278] : %x \r\n",data[278]);
152 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 57
 </listAttribute>
58 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 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 61
 </launchConfiguration>

+ 2 - 2
STM32F103ZE_FLASH.ld

@@ -61,8 +61,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */
61 61
 /* Specify the memory areas */
62 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 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 92
 /*!< Uncomment the following line if you need to relocate your vector Table in
93 93
      Internal SRAM. */ 
94 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 96
                                   This value must be a multiple of 0x200. */
97 97
 
98 98