|
@@ -0,0 +1,359 @@
|
|
1
|
+/*
|
|
2
|
+ * MBIC_Bootloader.c
|
|
3
|
+ *
|
|
4
|
+ * Created on: 2020. 5. 18.
|
|
5
|
+ * Author: parkyj
|
|
6
|
+ */
|
|
7
|
+#include <stdio.h>
|
|
8
|
+#include <stdint.h>
|
|
9
|
+#include <stdbool.h>
|
|
10
|
+
|
|
11
|
+#include "main.h"
|
|
12
|
+#include "MBIC_Bootloader.h"
|
|
13
|
+#include "flash.h"
|
|
14
|
+#include "CRC.h"
|
|
15
|
+#include "uart.h"
|
|
16
|
+
|
|
17
|
+extern __IO bool EraseInit;
|
|
18
|
+
|
|
19
|
+extern uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress);
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+BootLoaderDataCheck_st MBIC_FileDataCheck(uint8_t* data){
|
|
26
|
+ BootLoaderDataCheck_st ret = {0,0,false};
|
|
27
|
+ int8_t MBIC_Mark[9] = "JT-NRDAS ";
|
|
28
|
+ int8_t MBIC_FileName1[] = "jhfs-mbic-nrdas-v";
|
|
29
|
+ int8_t MBIC_FileName2[] = "v00.00.01.mbc";
|
|
30
|
+ uint8_t MBIC_type = 0x20;
|
|
31
|
+ uint8_t MBIC_FileType = 0x00;
|
|
32
|
+ int i = 0;
|
|
33
|
+ /***
|
|
34
|
+ MARK Check
|
|
35
|
+ ***/
|
|
36
|
+ for(i = MARK_START_POSITION; i < TYPE_START_POSITION; i++){
|
|
37
|
+ if(MBIC_Mark[i] != data[i]){
|
|
38
|
+ printf("Data Diff \r\n");
|
|
39
|
+ return ret;
|
|
40
|
+ }else{
|
|
41
|
+ printf("MARK Data Success \r\n");
|
|
42
|
+ }
|
|
43
|
+ }
|
|
44
|
+ /***
|
|
45
|
+ TYPE Check
|
|
46
|
+ ***/
|
|
47
|
+ for(i = TYPE_START_POSITION; i < FILE_TYPE_START_POSITION; i++){
|
|
48
|
+ if(MBIC_type != data[i]){
|
|
49
|
+ printf("Data Diff \r\n");
|
|
50
|
+ return ret;
|
|
51
|
+ }
|
|
52
|
+ else
|
|
53
|
+ printf("Type Data Success \r\n");
|
|
54
|
+ }
|
|
55
|
+ /***
|
|
56
|
+ File Type Check
|
|
57
|
+ ***/
|
|
58
|
+ for(i = FILE_TYPE_START_POSITION; i < VERSION_START_POSITION; i++){
|
|
59
|
+ if(MBIC_FileType != data[i]){
|
|
60
|
+ printf("Data Diff \r\n");
|
|
61
|
+ return ret;
|
|
62
|
+ }
|
|
63
|
+ else
|
|
64
|
+ printf("File Type Data Success \r\n");
|
|
65
|
+ }
|
|
66
|
+ /***
|
|
67
|
+ Version Check
|
|
68
|
+ ***/
|
|
69
|
+ for(i = VERSION_START_POSITION; i < FILENAME_START_POSITION; i++){
|
|
70
|
+ printf("Version Data Success Version %x\r\n",data[i]);
|
|
71
|
+ }
|
|
72
|
+ /***
|
|
73
|
+ File Name Check
|
|
74
|
+ ***/
|
|
75
|
+ for(i = FILENAME_START_POSITION; i < 30; i++){
|
|
76
|
+ if(MBIC_FileName1[i-14] != data[i]){
|
|
77
|
+ printf("Data Diff \r\n");
|
|
78
|
+ printf("MBIC_FileName1[%d] : %x, data[%d] : %x\r\n",i - 14,MBIC_FileName1[i - 14],i,data[i]);
|
|
79
|
+ return ret;
|
|
80
|
+ }
|
|
81
|
+ else
|
|
82
|
+ printf("File Name Data Success %c\r\n",data[i]);
|
|
83
|
+ }
|
|
84
|
+ for(i = i; i < 43; i++){
|
|
85
|
+ if(MBIC_FileName2[i-30] != data[i]){
|
|
86
|
+// printf("Data Diff %c\r\n",data[i]);
|
|
87
|
+// printf("MBIC_FileName2[%d] : %x, data[%d] : %x\r\n",i - 30,MBIC_FileName2[i - 30],i,data[i]);
|
|
88
|
+ // return ret;
|
|
89
|
+ }
|
|
90
|
+ else
|
|
91
|
+ printf("File Name Data Success %c\r\n",data[i]);
|
|
92
|
+ }
|
|
93
|
+
|
|
94
|
+ for(i = i; i < 49; i++){
|
|
95
|
+ printf("Creation Success %x\r\n",data[i]);
|
|
96
|
+ }
|
|
97
|
+ for(i = i; i < 55; i++){
|
|
98
|
+ printf("Creation Success data[%d] : %x\r\n",i,data[i]);
|
|
99
|
+ }
|
|
100
|
+ printf(" %d",data[i++]);
|
|
101
|
+ printf(" -%02d",data[i++]);
|
|
102
|
+ printf(" -%02d",data[i++]);
|
|
103
|
+ printf(" -%02d",data[i++]);
|
|
104
|
+ printf(" -%02d",data[i++]);
|
|
105
|
+ printf(" -%02d\r\n",data[i++]);
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+ ret.Length = ((data[i++] << 8) & 0xFF00);
|
|
110
|
+ ret.Length += (data[i++]);
|
|
111
|
+ printf("data[%d] : %d\r\n",i - 1,ret.Length);
|
|
112
|
+ printf("data[%d] : %d\r\n",i - 1,ret.Length);
|
|
113
|
+
|
|
114
|
+ ret.Crcchk = ((data[i++] << 8) & 0xFF00);
|
|
115
|
+ ret.Crcchk += (data[i++]);
|
|
116
|
+ /*ONLY DATA CRC*/
|
|
117
|
+ printf("CRC_H[%d] : %x\r\n",i,ret.Crcchk);
|
|
118
|
+ printf("CRC_L[%d] : %x\r\n",i,ret.Crcchk);
|
|
119
|
+
|
|
120
|
+ ret.FileChk = true;
|
|
121
|
+ return ret;
|
|
122
|
+}
|
|
123
|
+
|
|
124
|
+/*
|
|
125
|
+ MBIC Basic Header merge function
|
|
126
|
+ Data : Response Data
|
|
127
|
+ Length : Response Data Length
|
|
128
|
+ CRCINDEX : CRC INDEX Number
|
|
129
|
+
|
|
130
|
+*/
|
|
131
|
+uint8_t* MBIC_HeaderMergeFunction(uint8_t* data,uint16_t Length )
|
|
132
|
+{
|
|
133
|
+ uint8_t ret[Length + 22 + 3];/*Data Length + Header Length + Tail Length*/
|
|
134
|
+ uint16_t CRCData = CRC16_Generate(data,Length);
|
|
135
|
+ /*CRC Create*/
|
|
136
|
+ ret[MBIC_PAYLOADSTART + Length + 0] = ((CRCData & 0xFF00) >> 8);
|
|
137
|
+ ret[MBIC_PAYLOADSTART + Length + 1] = ((CRCData & 0x00FF));
|
|
138
|
+ ret[MBIC_PAYLOADSTART + Length + 2] = 0x03;
|
|
139
|
+ /*Data Mark Create*/
|
|
140
|
+ ret[MBIC_PREAMBLE_0] = MBIC_PREAMBLE0;
|
|
141
|
+ ret[MBIC_PREAMBLE_1] = MBIC_PREAMBLE1;
|
|
142
|
+ ret[MBIC_PREAMBLE_2] = MBIC_PREAMBLE2;
|
|
143
|
+ ret[MBIC_PREAMBLE_3] = MBIC_PREAMBLE3;
|
|
144
|
+ /*Data Subid Create*/
|
|
145
|
+ ret[MBIC_SUBUID_0] = MBIC_SUBUID0;
|
|
146
|
+ ret[MBIC_SUBUID_1] = MBIC_SUBUID1;
|
|
147
|
+
|
|
148
|
+ ret[MBIC_RCODE_0] = data[MBIC_RCODE_0];
|
|
149
|
+
|
|
150
|
+ ret[MBIC_TRID_0] = data[MBIC_TRID_0];
|
|
151
|
+ ret[MBIC_TRID_1] = data[MBIC_TRID_1];
|
|
152
|
+
|
|
153
|
+ ret[MBIC_SEQSUM_0] = data[MBIC_SEQSUM_0];
|
|
154
|
+
|
|
155
|
+ ret[MBIC_TTL_0] = data[MBIC_TTL_0];
|
|
156
|
+
|
|
157
|
+ ret[MBIC_TIME_0] = data[MBIC_TIME_0];
|
|
158
|
+ ret[MBIC_TIME_1] = data[MBIC_TIME_1];
|
|
159
|
+ ret[MBIC_TIME_2] = data[MBIC_TIME_2];
|
|
160
|
+ ret[MBIC_TIME_3] = data[MBIC_TIME_3];
|
|
161
|
+ ret[MBIC_TIME_4] = data[MBIC_TIME_4];
|
|
162
|
+ ret[MBIC_TIME_5] = data[MBIC_TIME_5];
|
|
163
|
+ ret[MBIC_ERRRESPONSE_0] = MBIC_ERRRESPONSE;
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+ ret[MBIC_LENGTH_0] = (Length & 0xFF00) >> 8;
|
|
170
|
+ ret[MBIC_LENGTH_1] = Length & 0x00FF;
|
|
171
|
+
|
|
172
|
+ ret[MBIC_HEADERCHECKSUM_0] = Chksum_Create(ret);
|
|
173
|
+ /*Data Move*/
|
|
174
|
+// for(int i = 0; i < Length; i++){
|
|
175
|
+// data[MBIC_PAYLOADSTART + i] = data[i];
|
|
176
|
+// }
|
|
177
|
+ /*
|
|
178
|
+ MBIC Header Data input
|
|
179
|
+ */
|
|
180
|
+ for(int i = 0; i < MBIC_HEADER_SIZE; i++){
|
|
181
|
+ if(i == MBIC_CMD_0) /*cmd exception*/
|
|
182
|
+ continue;
|
|
183
|
+ data[i] = ret[i];
|
|
184
|
+ }
|
|
185
|
+ /*
|
|
186
|
+ MBIC Tail Data input
|
|
187
|
+ */
|
|
188
|
+
|
|
189
|
+ for(int i = MBIC_HEADER_SIZE + Length; i < MBIC_HEADER_SIZE + MBIC_TAIL_SIZE + Length; i++){
|
|
190
|
+ data[i] = ret[i];
|
|
191
|
+ }
|
|
192
|
+// for(uint16_t i = 0; i < Length; i ++)
|
|
193
|
+// ret[MBIC_PAYLOADSTART + i] = data[i];
|
|
194
|
+// for(int i = 0; i < Length; i++)
|
|
195
|
+// printf("MBIC : %x \r\n",data[i]);
|
|
196
|
+
|
|
197
|
+ return data;
|
|
198
|
+}
|
|
199
|
+
|
|
200
|
+void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
|
|
201
|
+ uint8_t MBIC_DownLoadData[0xFFFF];
|
|
202
|
+ uint8_t cmd = data[MBIC_CMD_0];
|
|
203
|
+ static uint8_t Download_Option = 0;
|
|
204
|
+ uint16_t index = 0;
|
|
205
|
+ static uint32_t Curr_Download_DataIndex = 0;
|
|
206
|
+ static uint32_t Prev_Download_DataIndex = 0;
|
|
207
|
+ uint32_t TotalFrame = 0;
|
|
208
|
+ uint32_t CurrFrame = 0;
|
|
209
|
+
|
|
210
|
+ uint32_t i = 0 ;
|
|
211
|
+#if 0 // PYJ.2020.06.04_BEGIN --
|
|
212
|
+ uint8_t dataTest[1024] = {
|
|
213
|
+ 0x4A,0x54,0x2D,0x4E,0x52,0x44,0x41,0x53,0x20,0x20,0x00,0x00,
|
|
214
|
+ 0x00,0x01,0x6A,0x68,0x66,0x73,0x2D,0x6D,0x62,0x69,0x63,0x2D,
|
|
215
|
+ 0x6E,0x72,0x64,0x61,0x73,0x2D,0x76,0x30,0x30,0x2E,0x30,0x30,0x2E,
|
|
216
|
+ 0x30,0x31,0x2E,0x6D,0x62,0x63,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
|
|
217
|
+ 0x20,0x20,0x20,0x20,0x20,0x14,0x06,0x03,0x10,0x1F,0xC4,0x3C,0x49,
|
|
218
|
+ 0x42,0x98,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
219
|
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
220
|
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
221
|
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
222
|
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
|
223
|
+ };
|
|
224
|
+
|
|
225
|
+#endif // PYJ.2020.06.04_END --
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+// printf("RX");
|
|
229
|
+// for(int i = 0; i < 128; i++)
|
|
230
|
+// printf("%c",*data++);
|
|
231
|
+ switch(cmd){
|
|
232
|
+ case MBIC_Notice_REQ:
|
|
233
|
+ cmd = MBIC_Notice_RSP;
|
|
234
|
+ /*TOTAL FRAME NUMBER*/
|
|
235
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
|
|
236
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];
|
|
237
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
|
|
238
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];
|
|
239
|
+ /*DOWNLOAD OPTION*/
|
|
240
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
|
|
241
|
+ Download_Option = data[MBIC_PAYLOADSTART + 4];
|
|
242
|
+ /*DOWNLOAD DELAY REQUEST*/
|
|
243
|
+ data[MBIC_PAYLOADSTART + index++] = 3;
|
|
244
|
+ /*DOWNLOAD Reserve*/
|
|
245
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
246
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
247
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
248
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
249
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
250
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
251
|
+// printf("ccc\r\n");
|
|
252
|
+ break;
|
|
253
|
+ case MBIC_Download_DATA_REQ:
|
|
254
|
+ TotalFrame = data[MBIC_PAYLOADSTART + 0] << 24
|
|
255
|
+ |data[MBIC_PAYLOADSTART + 1] << 16
|
|
256
|
+ |data[MBIC_PAYLOADSTART + 2] << 8
|
|
257
|
+ |data[MBIC_PAYLOADSTART + 3] << 0;
|
|
258
|
+// MBIC_FileDataCheck(data);
|
|
259
|
+ cmd = MBIC_Download_DATA_RSP;
|
|
260
|
+ /*TOTAL FRAME NUMBER*/
|
|
261
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
|
|
262
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];
|
|
263
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
|
|
264
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];
|
|
265
|
+ /*Current Download Frame Number*/
|
|
266
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
|
|
267
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 5];
|
|
268
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 6];
|
|
269
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 7];
|
|
270
|
+ Curr_Download_DataIndex = data[MBIC_PAYLOADSTART + 4] << 24;
|
|
271
|
+ Curr_Download_DataIndex += data[MBIC_PAYLOADSTART + 5] << 16;
|
|
272
|
+ Curr_Download_DataIndex += data[MBIC_PAYLOADSTART + 6] << 8;
|
|
273
|
+ Curr_Download_DataIndex += data[MBIC_PAYLOADSTART + 7];
|
|
274
|
+ /*DOWNLOAD Reserve*/
|
|
275
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
276
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
277
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
278
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
279
|
+ for(i = 0; i < Curr_Download_DataIndex - Prev_Download_DataIndex; i++){
|
|
280
|
+ MBIC_DownLoadData[i] = data[MBIC_PAYLOADSTART + 12 +i];
|
|
281
|
+// printf("%02x ",MBIC_DownLoadData[i]);
|
|
282
|
+ }
|
|
283
|
+// printf("Data End\r\n");
|
|
284
|
+ Bank_Flash_write(data,FLASH_USER_BANK1_START_ADDR);
|
|
285
|
+// HAL_Delay(100);
|
|
286
|
+ Prev_Download_DataIndex = Curr_Download_DataIndex + 1;
|
|
287
|
+ break;
|
|
288
|
+ case MBIC_Download_Confirm_REQ:
|
|
289
|
+ EraseInit = true;
|
|
290
|
+ cmd = MBIC_Download_Confirm_RSP;
|
|
291
|
+ /*TOTAL FRAME NUMBER*/
|
|
292
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
|
|
293
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];
|
|
294
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
|
|
295
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];
|
|
296
|
+ /*DOWNLOAD OPTION*/
|
|
297
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
|
|
298
|
+ Download_Option = data[MBIC_PAYLOADSTART + 4];
|
|
299
|
+ /*DOWNLOAD DELAY REQUEST*/
|
|
300
|
+ data[MBIC_PAYLOADSTART + index++] = 3;
|
|
301
|
+ /*DOWNLOAD Reserve*/
|
|
302
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
303
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
304
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
305
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
306
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
307
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
308
|
+ break;
|
|
309
|
+ case MBIC_Complete_Notice_REQ_REQ:
|
|
310
|
+ cmd = MBIC_Complete_Notice_RSP;
|
|
311
|
+ /*TOTAL FRAME NUMBER*/
|
|
312
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
|
|
313
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];
|
|
314
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
|
|
315
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];
|
|
316
|
+ /*DOWNLOAD OPTION*/
|
|
317
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
|
|
318
|
+ Download_Option = data[MBIC_PAYLOADSTART + 4];
|
|
319
|
+ /*DOWNLOAD DELAY REQUEST*/
|
|
320
|
+ data[MBIC_PAYLOADSTART + index++] = 3;
|
|
321
|
+ /*DOWNLOAD Reserve*/
|
|
322
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
323
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
324
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
325
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
326
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
327
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
328
|
+ break;
|
|
329
|
+ case MBIC_Reboot_Notice_REQ:
|
|
330
|
+ cmd = MBIC_Reboot_Notice_RSP;
|
|
331
|
+ /*TOTAL FRAME NUMBER*/
|
|
332
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 0];
|
|
333
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 1];
|
|
334
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 2];
|
|
335
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 3];
|
|
336
|
+ /*DOWNLOAD OPTION*/
|
|
337
|
+ data[MBIC_PAYLOADSTART + index++] = data[MBIC_PAYLOADSTART + 4];
|
|
338
|
+ Download_Option = data[MBIC_PAYLOADSTART + 4];
|
|
339
|
+ /*DOWNLOAD DELAY REQUEST*/
|
|
340
|
+ data[MBIC_PAYLOADSTART + index++] = 3;
|
|
341
|
+ /*DOWNLOAD Reserve*/
|
|
342
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
343
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
344
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
345
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
346
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
347
|
+ data[MBIC_PAYLOADSTART + index++] = 0;
|
|
348
|
+ break;
|
|
349
|
+ default:
|
|
350
|
+ return;
|
|
351
|
+ }
|
|
352
|
+ data[MBIC_CMD_0] = cmd;
|
|
353
|
+
|
|
354
|
+ data = MBIC_HeaderMergeFunction(data,index); // reponse
|
|
355
|
+// HAL_UART_Transmit_DMA(&huart1, data,22 + 3 + index);
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+ Uart1_Data_Send(data ,22 + 3 + index);
|
|
359
|
+}
|