|
@@ -11,20 +11,13 @@
|
11
|
11
|
#include "main.h"
|
12
|
12
|
#include "MBIC_Bootloader.h"
|
13
|
13
|
#include "CRC16.h"
|
14
|
|
-#define MARK_START_POSITION 0
|
15
|
|
-#define TYPE_START_POSITION 9
|
16
|
|
-#define FILE_TYPE_START_POSITION 10
|
17
|
|
-#define VERSION_START_POSITION 11
|
18
|
|
-#define FILENAME_START_POSITION 14
|
19
|
|
-#define CREATION_TIME_START_POSITION 55
|
20
|
|
-#define LENGTH_START_POSITION 61
|
21
|
|
-#define CRC_START_POSITION 65
|
22
|
|
-#define RESERVED_START_POSITION 69
|
23
|
|
-typedef struct{
|
24
|
|
- uint16_t Length;
|
25
|
|
- uint16_t Crcchk;
|
26
|
|
- bool FileChk;
|
27
|
|
-}BootLoaderDataCheck_st;
|
|
14
|
+#include "uart.h"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+extern uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress);
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
28
|
21
|
|
29
|
22
|
|
30
|
23
|
BootLoaderDataCheck_st MBIC_FileDataCheck(uint8_t* data){
|
|
@@ -118,7 +111,7 @@ BootLoaderDataCheck_st MBIC_FileDataCheck(uint8_t* data){
|
118
|
111
|
|
119
|
112
|
ret.Crcchk = ((data[i++] << 8) & 0xFF00);
|
120
|
113
|
ret.Crcchk += (data[i++]);
|
121
|
|
-
|
|
114
|
+ /*ONLY DATA CRC*/
|
122
|
115
|
printf("CRC_H[%d] : %x\r\n",i,ret.Crcchk);
|
123
|
116
|
printf("CRC_L[%d] : %x\r\n",i,ret.Crcchk);
|
124
|
117
|
|
|
@@ -137,7 +130,6 @@ uint8_t* MBIC_HeaderMergeFunction(uint8_t* data,uint16_t Length )
|
137
|
130
|
{
|
138
|
131
|
uint8_t ret[Length + 22 + 3];/*Data Length + Header Length + Tail Length*/
|
139
|
132
|
uint16_t CRCData = CRC16_Generate(data,Length);
|
140
|
|
- uint16_t cmd = data[MBIC_CMD_0];
|
141
|
133
|
/*CRC Create*/
|
142
|
134
|
ret[MBIC_PAYLOADSTART + Length + 0] = ((CRCData & 0xFF00) >> 8);
|
143
|
135
|
ret[MBIC_PAYLOADSTART + Length + 1] = ((CRCData & 0x00FF));
|
|
@@ -177,28 +169,43 @@ uint8_t* MBIC_HeaderMergeFunction(uint8_t* data,uint16_t Length )
|
177
|
169
|
|
178
|
170
|
ret[MBIC_HEADERCHECKSUM_0] = Chksum_Create(ret);
|
179
|
171
|
/*Data Move*/
|
180
|
|
- for(int i = 0; i < Length; i++){
|
181
|
|
- data[MBIC_HEADER_SIZE + i] = data[i];
|
182
|
|
- }
|
|
172
|
+// for(int i = 0; i < Length; i++){
|
|
173
|
+// data[MBIC_PAYLOADSTART + i] = data[i];
|
|
174
|
+// }
|
|
175
|
+ /*
|
|
176
|
+ MBIC Header Data input
|
|
177
|
+ */
|
183
|
178
|
for(int i = 0; i < MBIC_HEADER_SIZE; i++){
|
|
179
|
+ if(i == MBIC_CMD_0) /*cmd exception*/
|
|
180
|
+ continue;
|
184
|
181
|
data[i] = ret[i];
|
185
|
182
|
}
|
|
183
|
+ /*
|
|
184
|
+ MBIC Tail Data input
|
|
185
|
+ */
|
|
186
|
+
|
186
|
187
|
for(int i = MBIC_HEADER_SIZE + Length; i < MBIC_HEADER_SIZE + MBIC_TAIL_SIZE + Length; i++){
|
187
|
188
|
data[i] = ret[i];
|
188
|
189
|
}
|
189
|
190
|
// for(uint16_t i = 0; i < Length; i ++)
|
190
|
191
|
// ret[MBIC_PAYLOADSTART + i] = data[i];
|
|
192
|
+// for(int i = 0; i < Length; i++)
|
|
193
|
+// printf("MBIC : %x \r\n",data[i]);
|
191
|
194
|
|
192
|
195
|
return data;
|
193
|
196
|
}
|
194
|
197
|
|
195
|
198
|
void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
|
196
|
199
|
uint8_t MBIC_DownLoadData[0xFFFF];
|
197
|
|
- uint16_t cmd = data[MBIC_CMD_0];
|
|
200
|
+ uint8_t cmd = data[MBIC_CMD_0];
|
198
|
201
|
static uint8_t Download_Option = 0;
|
199
|
202
|
uint16_t index = 0;
|
200
|
203
|
static uint32_t Curr_Download_DataIndex = 0;
|
201
|
204
|
static uint32_t Prev_Download_DataIndex = 0;
|
|
205
|
+ uint32_t TotalFrame = 0;
|
|
206
|
+ uint32_t CurrFrame = 0;
|
|
207
|
+
|
|
208
|
+ uint32_t i = 0 ;
|
202
|
209
|
#if 0 // PYJ.2020.06.04_BEGIN --
|
203
|
210
|
uint8_t dataTest[1024] = {
|
204
|
211
|
0x4A,0x54,0x2D,0x4E,0x52,0x44,0x41,0x53,0x20,0x20,0x00,0x00,
|
|
@@ -214,7 +221,7 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
|
214
|
221
|
};
|
215
|
222
|
|
216
|
223
|
#endif // PYJ.2020.06.04_END --
|
217
|
|
- MBIC_FileDataCheck(data);
|
|
224
|
+
|
218
|
225
|
|
219
|
226
|
// printf("RX");
|
220
|
227
|
// for(int i = 0; i < 128; i++)
|
|
@@ -238,13 +245,19 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
|
238
|
245
|
data[MBIC_PAYLOADSTART + index++] = 0;
|
239
|
246
|
data[MBIC_PAYLOADSTART + index++] = 0;
|
240
|
247
|
data[MBIC_PAYLOADSTART + index++] = 0;
|
241
|
|
- data[MBIC_PAYLOADSTART + index++] = 0;
|
|
248
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
249
|
+// printf("ccc\r\n");
|
242
|
250
|
break;
|
243
|
251
|
case MBIC_Download_DATA_REQ:
|
|
252
|
+ TotalFrame = data[MBIC_PAYLOADSTART + 0] << 24
|
|
253
|
+ |data[MBIC_PAYLOADSTART + 1] << 16
|
|
254
|
+ |data[MBIC_PAYLOADSTART + 2] << 8
|
|
255
|
+ |data[MBIC_PAYLOADSTART + 3] << 0;
|
|
256
|
+// MBIC_FileDataCheck(data);
|
244
|
257
|
cmd = MBIC_Download_DATA_RSP;
|
245
|
258
|
/*TOTAL FRAME NUMBER*/
|
246
|
259
|
data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
|
247
|
|
- data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];
|
|
260
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];
|
248
|
261
|
data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
|
249
|
262
|
data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];
|
250
|
263
|
/*Current Download Frame Number*/
|
|
@@ -261,11 +274,13 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
|
261
|
274
|
data[MBIC_PAYLOADSTART + index++] = 0;
|
262
|
275
|
data[MBIC_PAYLOADSTART + index++] = 0;
|
263
|
276
|
data[MBIC_PAYLOADSTART + index++] = 0;
|
264
|
|
- for(uint32_t i = Prev_Download_DataIndex; i < Curr_Download_DataIndex; i++){
|
265
|
|
- MBIC_DownLoadData[i] = data[index + i];
|
266
|
|
- printf("MBIC_DownLoadData[i] : %x",MBIC_DownLoadData[i]);
|
|
277
|
+ for(i = 0; i < Curr_Download_DataIndex - Prev_Download_DataIndex; i++){
|
|
278
|
+ MBIC_DownLoadData[i] = data[MBIC_PAYLOADSTART + 12 +i];
|
|
279
|
+ printf("%02x ",MBIC_DownLoadData[i]);
|
267
|
280
|
}
|
268
|
|
-
|
|
281
|
+// printf("Data End\r\n");
|
|
282
|
+// Bank_Flash_write(data,FLASH_USER_TEMPBANK_START_ADDR);
|
|
283
|
+// HAL_Delay(100);
|
269
|
284
|
Prev_Download_DataIndex = Curr_Download_DataIndex;
|
270
|
285
|
break;
|
271
|
286
|
case MBIC_Download_Confirm_REQ:
|
|
@@ -332,5 +347,10 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
|
332
|
347
|
return;
|
333
|
348
|
}
|
334
|
349
|
data[MBIC_CMD_0] = cmd;
|
335
|
|
- MBIC_HeaderMergeFunction(data,index); // reponse
|
|
350
|
+
|
|
351
|
+ data = MBIC_HeaderMergeFunction(data,index); // reponse
|
|
352
|
+// HAL_UART_Transmit_DMA(&huart1, data,22 + 3 + index);
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+ Uart1_Data_Send(data ,22 + 3 + index);
|
336
|
356
|
}
|