Преглед на файлове

MBIC BOOTLOADER PROTOCOL INDEX 추가 / CRC ,CHECKSUM 함수 추가

부트로더 Header Check 추가 / 데이터 들어오면 Header Check 하도록 수정
PYJ преди 5 години
родител
ревизия
a6afbb1e80
променени са 4 файла, в които са добавени 312 реда и са изтрити 65 реда
  1. 170 0
      Inc/MBIC_BootLoader.h
  2. 54 41
      Src/CRC.c
  3. 83 19
      Src/MBIC_BootLoader.c
  4. 5 5
      Src/uart.c

+ 170 - 0
Inc/MBIC_BootLoader.h

@@ -26,4 +26,174 @@
26 26
 #define MBIC_CHECKSHUM
27 27
 #define MBIC_ETX 0x03
28 28
 
29
+#define MBIC_HEADER_LENG 17
30
+
31
+typedef enum{
32
+    DOWNLOAD_NOTI_REQ = 0x10,
33
+    DOWNLOAD_DATA,
34
+    DOWNLOAD_CONFIRM,
35
+    DOWNLOAD_COMPLETE_CMD,
36
+    SYSTEMP_REBOOT,
37
+};
38
+typedef enum{
39
+    MBIC_PREAMBLE_0 = 0,
40
+    MBIC_PREAMBLE_1,
41
+    MBIC_PREAMBLE_2,
42
+    MBIC_PREAMBLE_3,
43
+    MBIC_SUBUID_0, //4
44
+    MBIC_SUBUID_1,
45
+    MBIC_RCODE_0,
46
+    MBIC_TRID_0,
47
+    MBIC_TRID_1,
48
+    MBIC_SEQSUM_0, // 9Index
49
+
50
+    MBIC_TTL_0, //10 INDEX
51
+    MBIC_TIME_0,
52
+    MBIC_TIME_1,
53
+    MBIC_TIME_2,
54
+    MBIC_TIME_3,
55
+    MBIC_TIME_4,
56
+    MBIC_TIME_5,
57
+    MBIC_ERRRESPONSE_0,
58
+    MBIC_CMD_0,
59
+    MBIC_LENGTH_0, // 19INDEX
60
+
61
+
62
+    MBIC_LENGTH_1, // 20
63
+    MBIC_HEADERCHECKSUM_0,
64
+    MBIC_DOWNLOAD_MARK0,
65
+    MBIC_DOWNLOAD_MARK1,
66
+    MBIC_DOWNLOAD_MARK2,
67
+    MBIC_DOWNLOAD_MARK3,
68
+    MBIC_DOWNLOAD_MARK4,
69
+    MBIC_DOWNLOAD_MARK5,
70
+    MBIC_DOWNLOAD_MARK6,
71
+    MBIC_DOWNLOAD_MARK7,
72
+    MBIC_DOWNLOAD_MARK8,
73
+    MBIC_DOWNLOAD_TYPE,
74
+    MBIC_DOWNLOAD_FILETYPE,
75
+    MBIC_DOWNLOAD_VERSION0,
76
+    MBIC_DOWNLOAD_VERSION1,
77
+    MBIC_DOWNLOAD_VERSION2,    
78
+    MBIC_DOWNLOAD_FILENAME0,
79
+    MBIC_DOWNLOAD_FILENAME1,
80
+    MBIC_DOWNLOAD_FILENAME2,
81
+    MBIC_DOWNLOAD_FILENAME3,
82
+    MBIC_DOWNLOAD_FILENAME4,
83
+    MBIC_DOWNLOAD_FILENAME5,
84
+    MBIC_DOWNLOAD_FILENAME6,
85
+    MBIC_DOWNLOAD_FILENAME7,
86
+    MBIC_DOWNLOAD_FILENAME8,
87
+    MBIC_DOWNLOAD_FILENAME9,
88
+    MBIC_DOWNLOAD_FILENAME10,
89
+    MBIC_DOWNLOAD_FILENAME11,
90
+    MBIC_DOWNLOAD_FILENAME12,
91
+    MBIC_DOWNLOAD_FILENAME13,
92
+    MBIC_DOWNLOAD_FILENAME14,
93
+    MBIC_DOWNLOAD_FILENAME15,
94
+    MBIC_DOWNLOAD_FILENAME16,
95
+    MBIC_DOWNLOAD_FILENAME17,
96
+    MBIC_DOWNLOAD_FILENAME18,
97
+    MBIC_DOWNLOAD_FILENAME19,
98
+    MBIC_DOWNLOAD_FILENAME20,
99
+    MBIC_DOWNLOAD_FILENAME21,
100
+    MBIC_DOWNLOAD_FILENAME22,
101
+    MBIC_DOWNLOAD_FILENAME23,
102
+    MBIC_DOWNLOAD_FILENAME24,
103
+    MBIC_DOWNLOAD_FILENAME25,
104
+    MBIC_DOWNLOAD_FILENAME26,
105
+    MBIC_DOWNLOAD_FILENAME27,
106
+    MBIC_DOWNLOAD_FILENAME28,
107
+    MBIC_DOWNLOAD_FILENAME29,
108
+    MBIC_DOWNLOAD_FILENAME30,
109
+    MBIC_DOWNLOAD_FILENAME31,
110
+    MBIC_DOWNLOAD_FILENAME32,
111
+    MBIC_DOWNLOAD_FILENAME33,
112
+    MBIC_DOWNLOAD_FILENAME34,
113
+    MBIC_DOWNLOAD_FILENAME35,
114
+    MBIC_DOWNLOAD_FILENAME36,
115
+    MBIC_DOWNLOAD_FILENAME37,
116
+    MBIC_DOWNLOAD_FILENAME38,
117
+    MBIC_DOWNLOAD_FILENAME39,
118
+    MBIC_DOWNLOAD_FILENAME40,
119
+    MBIC_DOWNLOAD_CREATION_TIME0,
120
+    MBIC_DOWNLOAD_CREATION_TIME1,
121
+    MBIC_DOWNLOAD_CREATION_TIME2,
122
+    MBIC_DOWNLOAD_CREATION_TIME3,
123
+    MBIC_DOWNLOAD_CREATION_TIME4,
124
+    MBIC_DOWNLOAD_CREATION_TIME5,    
125
+    MBIC_DOWNLOAD_LENGTH0,        
126
+    MBIC_DOWNLOAD_LENGTH1,        
127
+    MBIC_DOWNLOAD_LENGTH2,        
128
+    MBIC_DOWNLOAD_LENGTH3,            
129
+    MBIC_DOWNLOAD_CRC0,                
130
+    MBIC_DOWNLOAD_CRC1,                
131
+    MBIC_DOWNLOAD_CRC2,                
132
+    MBIC_DOWNLOAD_CRC3,                    
133
+    MBIC_DOWNLOAD_RESERVED0,
134
+    MBIC_DOWNLOAD_RESERVED1,
135
+    MBIC_DOWNLOAD_RESERVED2,
136
+    MBIC_DOWNLOAD_RESERVED3,
137
+    MBIC_DOWNLOAD_RESERVED4,
138
+    MBIC_DOWNLOAD_RESERVED5,
139
+    MBIC_DOWNLOAD_RESERVED6,
140
+    MBIC_DOWNLOAD_RESERVED7,
141
+    MBIC_DOWNLOAD_RESERVED8,
142
+    MBIC_DOWNLOAD_RESERVED9,
143
+    MBIC_DOWNLOAD_RESERVED10,
144
+    MBIC_DOWNLOAD_RESERVED11,
145
+    MBIC_DOWNLOAD_RESERVED12,
146
+    MBIC_DOWNLOAD_RESERVED13,
147
+    MBIC_DOWNLOAD_RESERVED14,
148
+    MBIC_DOWNLOAD_RESERVED15,
149
+    MBIC_DOWNLOAD_RESERVED16,
150
+    MBIC_DOWNLOAD_RESERVED17,
151
+    MBIC_DOWNLOAD_RESERVED18,
152
+    MBIC_DOWNLOAD_RESERVED19,
153
+    MBIC_DOWNLOAD_RESERVED20,
154
+    MBIC_DOWNLOAD_RESERVED21,
155
+    MBIC_DOWNLOAD_RESERVED22,
156
+    MBIC_DOWNLOAD_RESERVED23,
157
+    MBIC_DOWNLOAD_RESERVED24,
158
+    MBIC_DOWNLOAD_RESERVED25,
159
+    MBIC_DOWNLOAD_RESERVED26,
160
+    MBIC_DOWNLOAD_RESERVED27,
161
+    MBIC_DOWNLOAD_RESERVED28,
162
+    MBIC_DOWNLOAD_RESERVED29,
163
+    MBIC_DOWNLOAD_RESERVED30,
164
+    MBIC_DOWNLOAD_RESERVED31,
165
+    MBIC_DOWNLOAD_RESERVED32,
166
+    MBIC_DOWNLOAD_RESERVED33,
167
+    MBIC_DOWNLOAD_RESERVED34,
168
+    MBIC_DOWNLOAD_RESERVED35,
169
+    MBIC_DOWNLOAD_RESERVED36,
170
+    MBIC_DOWNLOAD_RESERVED37,
171
+    MBIC_DOWNLOAD_RESERVED38,
172
+    MBIC_DOWNLOAD_RESERVED39,
173
+    MBIC_DOWNLOAD_RESERVED40,
174
+    MBIC_DOWNLOAD_RESERVED41,
175
+    MBIC_DOWNLOAD_RESERVED42,
176
+    MBIC_DOWNLOAD_RESERVED43,
177
+    MBIC_DOWNLOAD_RESERVED44,
178
+    MBIC_DOWNLOAD_RESERVED45,
179
+    MBIC_DOWNLOAD_RESERVED46,
180
+    MBIC_DOWNLOAD_RESERVED47,
181
+    MBIC_DOWNLOAD_RESERVED48,
182
+    MBIC_DOWNLOAD_RESERVED49,
183
+    MBIC_DOWNLOAD_RESERVED50,
184
+    MBIC_DOWNLOAD_RESERVED51,
185
+    MBIC_DOWNLOAD_RESERVED52,
186
+    MBIC_DOWNLOAD_RESERVED53,
187
+    MBIC_DOWNLOAD_RESERVED54,
188
+    MBIC_DOWNLOAD_RESERVED55,
189
+    MBIC_DOWNLOAD_RESERVED56,
190
+    MBIC_DOWNLOAD_RESERVED57,
191
+    MBIC_DOWNLOAD_RESERVED58,
192
+    MBIC_DOWNLOAD_DATASTART,    
193
+
194
+/*
195
+ * PayLoadSTART
196
+ */
197
+}MBICProt_st;
198
+
29 199
 #endif /* MBIC_BOOTLOADER_H_ */

+ 54 - 41
Src/CRC.c

@@ -11,11 +11,11 @@
11 11
 
12 12
 #include <stdio.h>						
13 13
 #include <stdint.h>	
14
-
14
+#include <stdbool.h>
15 15
 #include <CRC.h>
16 16
 #include <uart.h>
17 17
 
18
-uint32_t crc32(uint32_t crc, const void *buf, size_t size);
18
+
19 19
 
20 20
 const unsigned short Table_CRC16[]  = {
21 21
 	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
@@ -51,6 +51,41 @@ const unsigned short Table_CRC16[]  = {
51 51
 	0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
52 52
 	0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
53 53
 };
54
+static
55
+const uint16_t crc16_tab[256] = {
56
+    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
57
+    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
58
+    0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
59
+    0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
60
+    0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
61
+    0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
62
+    0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
63
+    0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
64
+    0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
65
+    0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
66
+    0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
67
+    0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
68
+    0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
69
+    0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
70
+    0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
71
+    0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
72
+    0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
73
+    0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
74
+    0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
75
+    0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
76
+    0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
77
+    0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
78
+    0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
79
+    0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
80
+    0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
81
+    0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
82
+    0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
83
+    0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
84
+    0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
85
+    0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
86
+    0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
87
+    0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
88
+};
54 89
 
55 90
 //-----------------------------------------------
56 91
 //UART CRC üũ �Լ�
@@ -129,50 +164,28 @@ etError STH30_CheckCrc(uint8_t *data, uint8_t nbrOfBytes, uint8_t checksum)
129 164
 
130 165
 
131 166
 
132
-uint8_t chksum(uint8_t c, uint8_t v)
167
+bool chksum(uint8_t *data, uint32_t leng,uint8_t chkdata)
133 168
 {
134
-    return (uint8_t)(c + v);
169
+   uint8_t dataret = 0;
170
+   bool ret = false;
171
+   for(int i = 0; i < leng; i++){
172
+        dataret += data[i];
173
+   }
174
+   if(dataret == chkdata){
175
+        ret = true;
176
+   }
177
+    
178
+    return ret;
135 179
 }
136 180
 
137
-static
138
-const uint16_t crc16_tab[256] = {
139
-    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
140
-    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
141
-    0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
142
-    0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
143
-    0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
144
-    0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
145
-    0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
146
-    0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
147
-    0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
148
-    0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
149
-    0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
150
-    0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
151
-    0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
152
-    0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
153
-    0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
154
-    0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
155
-    0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
156
-    0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
157
-    0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
158
-    0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
159
-    0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
160
-    0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
161
-    0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
162
-    0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
163
-    0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
164
-    0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
165
-    0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
166
-    0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
167
-    0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
168
-    0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
169
-    0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
170
-    0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
171
-};
172 181
 
173
-uint16_t crc16(uint16_t crc, uint8_t data)
182
+
183
+uint16_t crc16(uint16_t crc,uint8_t *crcdata, uint8_t size)
174 184
 {
175
-    return (uint16_t)((crc << 8) ^ crc16_tab[((crc >> 8) ^ data) & 0xff]);
185
+    for(int counter = 0; counter < size; counter++){
186
+        crc = (crc << 8) ^ crc16_tab[(((crc >> 8) ^ *crcdata++) & 0x00FF)];        
187
+    }
188
+    return crc;
176 189
 }
177 190
 
178 191
 					

+ 83 - 19
Src/MBIC_BootLoader.c

@@ -4,36 +4,100 @@
4 4
  *  Created on: 2020. 5. 4.
5 5
  *      Author: parkyj
6 6
  */
7
+#include <stdbool.h>
7 8
 #include "main.h"
8 9
 #include "MBIC_BootLoader.h"
9 10
 #include "CRC.h"
10
-void MBIC_FirmwareUpdateStart(uint8_t* data);
11 11
 extern uint32_t crc32(uint32_t crc, const void *buf, size_t size);
12
+extern bool chksum(uint8_t *data, uint32_t leng,uint8_t chkdata);
12 13
 
13
-typedef enum{
14
-    MBIC_DOWNLOAD_CRC,
15
-    MBIC_DOWNLOAD_SIZE,        
16
-    MBIC_DOWNLOAD_BUF,        
14
+void MBIC_FirmwareUpdateStart(uint8_t* data);
15
+void MBIC_HeaderCheck(uint8_t* data);
17 16
 
17
+
18
+#define MBOC 0x00F0
19
+#define MBIC 0x00F1
20
+
21
+void MBIC_HeaderCheck(uint8_t* data){
22
+
23
+    uint8_t Chksum_ret = false;
24
+
25
+/*    MDOC        00  F0
26
+      MBIC        00  F1*/
27
+    uint16_t SubUid = ((data[MBIC_SUBUID_0] << 8) & 0xFF00)
28
+                     |((data[MBIC_SUBUID_1])      & 0x00FF);
29
+    
30
+    /* MBIC_PREAMBLE : 0x16161616 */
31
+    if(data[MBIC_PREAMBLE_0] == MBIC_PREAMBLE0
32
+     &&data[MBIC_PREAMBLE_1] == MBIC_PREAMBLE1
33
+     &&data[MBIC_PREAMBLE_2] == MBIC_PREAMBLE2
34
+     &&data[MBIC_PREAMBLE_3] == MBIC_PREAMBLE3){
35
+     Chksum_ret = chksum(data,
36
+                        MBIC_LENGTH_1 - MBIC_SUBUID_0 - 1,
37
+                        data[MBIC_HEADERCHECKSUM_0]);
38
+
39
+        if(Chksum_ret == false)
40
+            printf("CheckSum Ret False \r\n");
41
+
42
+        if(data[4] == MBIC){
43
+            MBIC_FirmwareUpdateStart(data);
44
+        }
45
+    }
46
+}
47
+typedef struct{
48
+uint8_t mark[9];
49
+uint8_t type;
50
+uint8_t file_type;
51
+uint8_t version[3];
52
+uint8_t filename[41];
53
+uint8_t creation_time[6];
54
+uint8_t length[4];
55
+uint8_t crc[4];
56
+uint8_t reserved[59];
18 57
 };
19
-typedef enum{
20
-    DOWNLOAD_NOTI_REQ = 0x10,
21
-    DOWNLOAD_DATA,
22
-    DOWNLOAD_CONFIRM,
23
-    DOWNLOAD_COMPLETE_CMD,
24
-    SYSTEMP_REBOOT,
25
-};
58
+#define MBIC_DOWNLOAD_MARK "JT-NRDAS "
59
+#define MBIC_DOWNLOAD_TYPE 0x20
60
+#define MBIC_DOWNLOAD_FILETYPE 0
61
+#define MBIC_DOWNLOAD_FILENAME "MU jhfs-mbic-nrdas-v00.00.01.mbc MBIC CPU"
62
+
63
+
64
+
65
+                         
66
+void MBIC_DownLoadHeaderCheck(uint8_t* data){
67
+    if( strncmp(&data[MBIC_DOWNLOAD_MARK0],MBIC_DOWNLOAD_MARK,sizeof(MBIC_DOWNLOAD_MARK)) != 0){
68
+        printf("FUNCTION : %s  LINE : %d  = %s Mark ERR \r\n",__func__,__LINE__);
69
+    }
70
+    if( strncmp(&data[MBIC_DOWNLOAD_FILENAME0],MBIC_DOWNLOAD_FILENAME,sizeof(MBIC_DOWNLOAD_FILENAME)) != 0){
71
+        printf("FUNCTION : %s  LINE : %d  = FILENAME ERR ERR \r\n",__func__,__LINE__);
72
+    }
73
+
74
+        
75
+            
76
+    MBIC_FirmwareUpdateStart(data);
77
+}
78
+
26 79
 void MBIC_FirmwareUpdateStart(uint8_t* data){
27
-    uint8_t ret = 0,
80
+    uint8_t ret = 0;
28 81
     uint32_t crccheck = 0;
82
+    uint8_t datatype = data[MBIC_DOWNLOAD_DATASTART];
29 83
 //    crc32();
30
-    switch(data){
84
+    switch(datatype){
85
+
86
+        case DOWNLOAD_NOTI_REQ:
87
+
88
+            break;
89
+        case DOWNLOAD_DATA:
90
+
91
+            break;
92
+        case DOWNLOAD_CONFIRM:
93
+
94
+            break;
95
+        case DOWNLOAD_COMPLETE_CMD:
96
+
97
+            break;
98
+        case SYSTEMP_REBOOT:
31 99
 
32
-        case DOWNLOAD_NOTI_REQ:break;
33
-        case DOWNLOAD_DATA:break;
34
-        case DOWNLOAD_CONFIRM:break;
35
-        case DOWNLOAD_COMPLETE_CMD:break;
36
-        case SYSTEMP_REBOOT:break;
100
+            break;
37 101
 
38 102
     }
39 103
    // crccheck = crc32(&data[bluecell_type],data[bluecell_length],data[data[bluecell_length] + 1]);

+ 5 - 5
Src/uart.c

@@ -13,6 +13,8 @@ UARTQUEUE TerminalQueue;
13 13
 UARTQUEUE WifiQueue;
14 14
 extern volatile uint32_t FirmwareTimerCnt;
15 15
 extern volatile uint32_t UartTimerCnt ;
16
+extern void MBIC_HeaderCheck(uint8_t* data);
17
+
16 18
 void InitUartQueue(pUARTQUEUE pQueue)
17 19
 {
18 20
     pQueue->data = pQueue->head = pQueue->tail = 0;
@@ -80,11 +82,9 @@ void GetDataFromUartQueue(UART_HandleTypeDef *huart)
80 82
         cnt = 0;
81 83
         if(update_data_buf[0] == 0xbe)
82 84
             FirmwareUpdateStart(&update_data_buf[0]);
83
-        else if(update_data_buf[0] == MBIC_PREAMBLE0
84
-              &&update_data_buf[1] == MBIC_PREAMBLE1
85
-              &&update_data_buf[2] == MBIC_PREAMBLE2
86
-              &&update_data_buf[3] == MBIC_PREAMBLE3){
87
-            MBIC_FirmwareUpdateStart(&update_data_buf[0]);
85
+        else{
86
+              /*I WILL ADD CRC CHECK */
87
+              MBIC_HeaderCheck(&update_data_buf[0]);
88 88
         }
89 89
         
90 90
         for(int i  = 0; i < 1024; i++)