Pārlūkot izejas kodu

EEPROM 주소값 추가 /CRC32 추가 /Flash Write완료 /MBIC 펌웨어 파일 Crc Check 하도록 수정

PYJ 5 gadi atpakaļ
vecāks
revīzija
1fd617d479

+ 2 - 2
.settings/language.settings.xml

@@ -4,7 +4,7 @@
4 4
 		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
5 5
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
6 6
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
7
-			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1681877287601945682" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
7
+			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="800489075853895203" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
8 8
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
9 9
 				<language-scope id="org.eclipse.cdt.core.g++"/>
10 10
 			</provider>
@@ -14,7 +14,7 @@
14 14
 		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
15 15
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
16 16
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
17
-			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1681877287601945682" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
17
+			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="800489075853895203" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
18 18
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
19 19
 				<language-scope id="org.eclipse.cdt.core.g++"/>
20 20
 			</provider>

BIN
Debug/STM32F103_ATTEN_PLL_Zig.elf


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 922 - 897
Debug/STM32F103_ATTEN_PLL_Zig.hex


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 5734 - 5457
Debug/STM32F103_ATTEN_PLL_Zig.list


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 602 - 588
Debug/STM32F103_ATTEN_PLL_Zig.map


+ 8 - 6
Debug/Src/CRC16.su

@@ -1,6 +1,8 @@
1
-CRC16.c:51:6:Chksum_Check	8	static
2
-CRC16.c:64:9:Chksum_Create	0	static
3
-CRC16.c:76:10:CRC16_Generate	8	static
4
-CRC16.c:110:9:CRC16_Check	12	static
5
-CRC16.c:145:9:STH30_CreateCrc	8	static
6
-CRC16.c:163:9:STH30_CheckCrc	12	static
1
+CRC16.c:97:6:Chksum_Check	8	static
2
+CRC16.c:110:9:Chksum_Create	0	static
3
+CRC16.c:122:10:CRC16_Generate	8	static
4
+CRC16.c:156:9:CRC16_Check	12	static
5
+CRC16.c:191:9:STH30_CreateCrc	8	static
6
+CRC16.c:209:9:STH30_CheckCrc	12	static
7
+CRC16.c:228:10:crc32	8	static
8
+CRC16.c:242:9:crc32Check	12	static

+ 5 - 5
Debug/Src/main.su

@@ -1,5 +1,5 @@
1
-main.c:74:6:HAL_TIM_PeriodElapsedCallback	0	static
2
-main.c:83:5:_write	8	static
3
-main.c:161:6:SystemClock_Config	72	static
4
-main.c:99:5:main	40	static
5
-main.c:362:6:Error_Handler	0	static
1
+main.c:75:6:HAL_TIM_PeriodElapsedCallback	0	static
2
+main.c:84:5:_write	8	static
3
+main.c:165:6:SystemClock_Config	72	static
4
+main.c:100:5:main	40	static
5
+main.c:366:6:Error_Handler	0	static

BIN
Debug/Src/stm32f1xx_hal_msp.o


BIN
Debug/Src/stm32f1xx_it.o


+ 3 - 0
Inc/MBIC_Bootloader.h

@@ -96,4 +96,7 @@ typedef struct{
96 96
     bool FileChk;
97 97
 }BootLoaderDataCheck_st;
98 98
 
99
+
100
+
101
+
99 102
 #endif /* MBIC_BOOTLOADER_H_ */

+ 498 - 122
Inc/eeprom.h

@@ -13,9 +13,9 @@
13 13
 #define EEPROM_Block0_ADDRESS             EEPROM_M24C08_ID
14 14
 #define EEPROM_ATT_BASE					  0x0000 + 96
15 15
 
16
-#if 0 // PYJ.2020.04.25_BEGIN --
16
+#if 1 // PYJ.2020.04.25_BEGIN -- 
17 17
 
18
-#define EEPROM_ATT_DL1_TABLE_ADDRESDS	 (( EEPROM_ATT_BASE                 +(sizeof(ATT_TABLE_st))   )  & 0xFFFF) //128
18
+#define EEPROM_ATT_DL1_TABLE_ADDRESDS	 (( EEPROM_ATT_BASE                 + (sizeof(ATT_TABLE_st))   )  & 0xFFFF) //128
19 19
 #define EEPROM_ATT_DL2_TABLE_ADDRESDS	 (( EEPROM_ATT_DL1_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  ) & 0xFFFF) 
20 20
 #define EEPROM_ATT_DL3_TABLE_ADDRESDS	 (( EEPROM_ATT_DL2_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  ) & 0xFFFF)
21 21
 #define EEPROM_ATT_DL4_TABLE_ADDRESDS	 (( EEPROM_ATT_DL3_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  ) & 0xFFFF)
@@ -42,7 +42,7 @@
42 42
 #define EEPROM_USER_ATTEN_VALUE_ADDRESDS (( EEPROM_TEMP_UL4_TABLE_ADDRESDS +( sizeof(USER_ATTEN_st)+16))     & 0xFFFF)
43 43
 #define EEPROM_WINDOW_STATUS_ADDRESDS	 ((EEPROM_USER_ATTEN_VALUE_ADDRESDS + (sizeof(BLUESTATUS_st))) & 0xFFFF) //96byte
44 44
 
45
-
45
+#else
46 46
 #define EEPROM_WINDOW_STATUS_ADDRESDS	 ((EEPROM_ATT_BASE + (sizeof(BLUESTATUS_st))) & 0xFFFF) //96byte
47 47
 #define EEPROM_ATT_DL1_TABLE_ADDRESDS	 (( EEPROM_WINDOW_STATUS_ADDRESDS  + (sizeof(ATT_TABLE_st))  )& 0xFFFF) //128
48 48
 #define EEPROM_ATT_DL2_TABLE_ADDRESDS	 (( EEPROM_ATT_DL1_TABLE_ADDRESDS  + (sizeof(ATT_TABLE_st))  ) & 0xFFFF) 
@@ -95,127 +95,503 @@ HAL_StatusTypeDef EEPROM_M24C08_Zerowrite(uint8_t devid,uint16_t Address);
95 95
 void EEPROM_M24C08_Init(void);
96 96
 
97 97
 
98
+typedef struct{
99
+    uint8_t bluecell_User_DL1_H;  uint8_t bluecell_User_DL1_L;
100
+    uint8_t bluecell_User_DL2_H;  uint8_t bluecell_User_DL2_L;
101
+    uint8_t bluecell_User_DL3_H;  uint8_t bluecell_User_DL3_L;
102
+    uint8_t bluecell_User_DL4_H;  uint8_t bluecell_User_DL4_L;
103
+    uint8_t bluecell_User_UL1_H;  uint8_t bluecell_User_UL1_L;
104
+    uint8_t bluecell_User_UL2_H;  uint8_t bluecell_User_UL2_L;
105
+    uint8_t bluecell_User_UL3_H;  uint8_t bluecell_User_UL3_L;
106
+    uint8_t bluecell_User_UL4_H;  uint8_t bluecell_User_UL4_L;
107
+}USER_ATTEN_st;
108
+
109
+
110
+
111
+typedef struct{
112
+
113
+  uint8_t Table_10_Temp_H;   uint8_t Table_10_Temp_L;
114
+  uint8_t Table_15_Temp_H;   uint8_t Table_15_Temp_L;
115
+  uint8_t Table_20_Temp_H;   uint8_t Table_20_Temp_L;
116
+  uint8_t Table_25_Temp_H;   uint8_t Table_25_Temp_L;
117
+  uint8_t Table_30_Temp_H;   uint8_t Table_30_Temp_L;
118
+  uint8_t Table_35_Temp_H;   uint8_t Table_35_Temp_L;
119
+  uint8_t Table_40_Temp_H;   uint8_t Table_40_Temp_L;
120
+  uint8_t Table_45_Temp_H;   uint8_t Table_45_Temp_L;
121
+  uint8_t Table_50_Temp_H;   uint8_t Table_50_Temp_L;
122
+  uint8_t Table_55_Temp_H;   uint8_t Table_55_Temp_L;
123
+}TEMP_TABLE_st;
124
+
125
+
126
+
127
+typedef struct{
128
+  uint8_t Table_0_0_dBm;
129
+  uint8_t Table_0_5_dBm;
130
+  uint8_t Table_1_0_dBm;
131
+  uint8_t Table_1_5_dBm;
132
+  uint8_t Table_2_0_dBm;
133
+  uint8_t Table_2_5_dBm;
134
+  uint8_t Table_3_0_dBm;
135
+  uint8_t Table_3_5_dBm;
136
+  uint8_t Table_4_0_dBm;
137
+  uint8_t Table_4_5_dBm;
138
+  uint8_t Table_5_0_dBm;
139
+  uint8_t Table_5_5_dBm;
140
+  uint8_t Table_6_0_dBm;
141
+  uint8_t Table_6_5_dBm;
142
+  uint8_t Table_7_0_dBm;
143
+  uint8_t Table_7_5_dBm;
144
+  uint8_t Table_8_0_dBm;
145
+  uint8_t Table_8_5_dBm;
146
+  uint8_t Table_9_0_dBm;
147
+  uint8_t Table_9_5_dBm;
148
+  uint8_t Table_10_0_dBm;
149
+  uint8_t Table_10_5_dBm;
150
+  uint8_t Table_11_0_dBm;
151
+  uint8_t Table_11_5_dBm;
152
+  uint8_t Table_12_0_dBm;
153
+  uint8_t Table_12_5_dBm;
154
+  uint8_t Table_13_0_dBm;
155
+  uint8_t Table_13_5_dBm;
156
+  uint8_t Table_14_0_dBm;
157
+  uint8_t Table_14_5_dBm;
158
+  uint8_t Table_15_0_dBm;
159
+  uint8_t Table_15_5_dBm;
160
+  uint8_t Table_16_0_dBm;
161
+  uint8_t Table_16_5_dBm;
162
+  uint8_t Table_17_0_dBm;
163
+  uint8_t Table_17_5_dBm;
164
+  uint8_t Table_18_0_dBm;
165
+  uint8_t Table_18_5_dBm;
166
+  uint8_t Table_19_0_dBm;
167
+  uint8_t Table_19_5_dBm;
168
+  uint8_t Table_20_0_dBm;
169
+  uint8_t Table_20_5_dBm;
170
+  uint8_t Table_21_0_dBm;
171
+  uint8_t Table_21_5_dBm;
172
+  uint8_t Table_22_0_dBm;
173
+  uint8_t Table_22_5_dBm;
174
+  uint8_t Table_23_0_dBm;
175
+  uint8_t Table_23_5_dBm;
176
+  uint8_t Table_24_0_dBm;
177
+  uint8_t Table_24_5_dBm;
178
+  uint8_t Table_25_0_dBm;
179
+  uint8_t Table_25_5_dBm;
180
+  uint8_t Table_26_0_dBm;
181
+  uint8_t Table_26_5_dBm;
182
+  uint8_t Table_27_0_dBm;
183
+  uint8_t Table_27_5_dBm;
184
+  uint8_t Table_28_0_dBm;
185
+  uint8_t Table_28_5_dBm;
186
+  uint8_t Table_29_0_dBm;
187
+  uint8_t Table_29_5_dBm;
188
+  uint8_t Table_30_0_dBm;
189
+  uint8_t Table_30_5_dBm;
190
+  uint8_t Table_31_0_dBm;
191
+  uint8_t Table_31_5_dBm;
192
+}ATT_TABLE_st;
193
+typedef struct{
194
+
195
+    uint8_t Table_Det5_dBm_H	;
196
+    uint8_t Table_Det5_dBm_L	;
197
+    uint8_t Table_Det4_dBm_H	;
198
+    uint8_t Table_Det4_dBm_L	;  
199
+    uint8_t Table_Det3_dBm_H	;
200
+    uint8_t Table_Det3_dBm_L	;
201
+    uint8_t Table_Det2_dBm_H	;
202
+    uint8_t Table_Det2_dBm_L	;
203
+    uint8_t Table_Det1_dBm_H	;
204
+    uint8_t Table_Det1_dBm_L	;
205
+    uint8_t Table_Det0_dBm_H	;
206
+    uint8_t Table_Det0_dBm_L	;
207
+    uint8_t Table_Det_1_dBm_H	;
208
+    uint8_t Table_Det_1_dBm_L	;
209
+    uint8_t Table_Det_2_dBm_H	;
210
+    uint8_t Table_Det_2_dBm_L	;
211
+    uint8_t Table_Det_3_dBm_H	;
212
+    uint8_t Table_Det_3_dBm_L	;
213
+    uint8_t Table_Det_4_dBm_H	;
214
+    uint8_t Table_Det_4_dBm_L	;
215
+    uint8_t Table_Det_5_dBm_H	;
216
+    uint8_t Table_Det_5_dBm_L	;  
217
+    uint8_t Table_Det_6_dBm_H	;
218
+    uint8_t Table_Det_6_dBm_L	;  
219
+    uint8_t Table_Det_7_dBm_H	;
220
+    uint8_t Table_Det_7_dBm_L	;
221
+    uint8_t Table_Det_8_dBm_H	;
222
+    uint8_t Table_Det_8_dBm_L	;
223
+    uint8_t Table_Det_9_dBm_H	;
224
+    uint8_t Table_Det_9_dBm_L	;
225
+    uint8_t Table_Det_10_dBm_H	;
226
+    uint8_t Table_Det_10_dBm_L	;  
227
+    uint8_t Table_Det_11_dBm_H	;
228
+    uint8_t Table_Det_11_dBm_L	;
229
+    uint8_t Table_Det_12_dBm_H	;
230
+    uint8_t Table_Det_12_dBm_L	;
231
+    uint8_t Table_Det_13_dBm_H	;
232
+    uint8_t Table_Det_13_dBm_L	;
233
+    uint8_t Table_Det_14_dBm_H	;
234
+    uint8_t Table_Det_14_dBm_L	;
235
+    uint8_t Table_Det_15_dBm_H	;
236
+    uint8_t Table_Det_15_dBm_L	;
237
+    uint8_t Table_Det_16_dBm_H	;
238
+    uint8_t Table_Det_16_dBm_L	;
239
+    uint8_t Table_Det_17_dBm_H	;
240
+    uint8_t Table_Det_17_dBm_L	;
241
+    uint8_t Table_Det_18_dBm_H	;
242
+    uint8_t Table_Det_18_dBm_L	;
243
+    uint8_t Table_Det_19_dBm_H	;
244
+    uint8_t Table_Det_19_dBm_L	;
245
+    uint8_t Table_Det_20_dBm_H	;
246
+    uint8_t Table_Det_20_dBm_L	;
247
+    uint8_t Table_Det_21_dBm_H	;
248
+    uint8_t Table_Det_21_dBm_L	;
249
+    uint8_t Table_Det_22_dBm_H	;
250
+    uint8_t Table_Det_22_dBm_L	;
251
+    uint8_t Table_Det_23_dBm_H	;
252
+    uint8_t Table_Det_23_dBm_L	;
253
+    uint8_t Table_Det_24_dBm_H	;
254
+    uint8_t Table_Det_24_dBm_L	;
255
+    uint8_t Table_Det_25_dBm_H	;
256
+    uint8_t Table_Det_25_dBm_L	;
257
+}DET_TABLEDL_st;
258
+typedef struct{
259
+  uint8_t Table_Det_15_dBm_H	;   
260
+  uint8_t Table_Det_15_dBm_L	;
261
+  uint8_t Table_Det_16_dBm_H	;   
262
+  uint8_t Table_Det_16_dBm_L	;
263
+  uint8_t Table_Det_17_dBm_H	;   
264
+  uint8_t Table_Det_17_dBm_L	;
265
+  uint8_t Table_Det_18_dBm_H	;   
266
+  uint8_t Table_Det_18_dBm_L	;
267
+  uint8_t Table_Det_19_dBm_H	;   
268
+  uint8_t Table_Det_19_dBm_L	;
269
+  uint8_t Table_Det_20_dBm_H	;//1.8
270
+  uint8_t Table_Det_20_dBm_L	;//1.6
271
+  uint8_t Table_Det_21_dBm_H	;//1.4   
272
+  uint8_t Table_Det_21_dBm_L	;
273
+  uint8_t Table_Det_22_dBm_H	;   
274
+  uint8_t Table_Det_22_dBm_L	;
275
+  uint8_t Table_Det_23_dBm_H	;   
276
+  uint8_t Table_Det_23_dBm_L	;
277
+  uint8_t Table_Det_24_dBm_H	;   
278
+  uint8_t Table_Det_24_dBm_L	;
279
+  uint8_t Table_Det_25_dBm_H	;   
280
+  uint8_t Table_Det_25_dBm_L	;
281
+  uint8_t Table_Det_26_dBm_H	;   
282
+  uint8_t Table_Det_26_dBm_L	;
283
+  uint8_t Table_Det_27_dBm_H	;   
284
+  uint8_t Table_Det_27_dBm_L	;
285
+  uint8_t Table_Det_28_dBm_H	;   
286
+  uint8_t Table_Det_28_dBm_L	;
287
+  uint8_t Table_Det_29_dBm_H	;   
288
+  uint8_t Table_Det_29_dBm_L	;
289
+  uint8_t Table_Det_30_dBm_H	;   
290
+  uint8_t Table_Det_30_dBm_L	;
291
+  uint8_t Table_Det_31_dBm_H	;   
292
+  uint8_t Table_Det_31_dBm_L	;
293
+  uint8_t Table_Det_32_dBm_H	;   
294
+  uint8_t Table_Det_32_dBm_L	;
295
+  uint8_t Table_Det_33_dBm_H	;   
296
+  uint8_t Table_Det_33_dBm_L	;
297
+  uint8_t Table_Det_34_dBm_H	;   
298
+  uint8_t Table_Det_34_dBm_L	;
299
+  uint8_t Table_Det_35_dBm_H	;   
300
+  uint8_t Table_Det_35_dBm_L	;
301
+  uint8_t Table_Det_36_dBm_H	;  
302
+  uint8_t Table_Det_36_dBm_L	;
303
+  uint8_t Table_Det_37_dBm_H	;  
304
+  uint8_t Table_Det_37_dBm_L	;
305
+  uint8_t Table_Det_38_dBm_H	;   
306
+  uint8_t Table_Det_38_dBm_L	;
307
+  uint8_t Table_Det_39_dBm_H	;  
308
+  uint8_t Table_Det_39_dBm_L	;
309
+  uint8_t Table_Det_40_dBm_H	;  
310
+  uint8_t Table_Det_40_dBm_L	;
311
+  uint8_t Table_Det_41_dBm_H	;  
312
+  uint8_t Table_Det_41_dBm_L	;
313
+  uint8_t Table_Det_42_dBm_H	; 
314
+  uint8_t Table_Det_42_dBm_L	;
315
+  uint8_t Table_Det_43_dBm_H	;  
316
+  uint8_t Table_Det_43_dBm_L	;
317
+  uint8_t Table_Det_44_dBm_H	;  
318
+  uint8_t Table_Det_44_dBm_L	;
319
+  uint8_t Table_Det_45_dBm_H	;  
320
+  uint8_t Table_Det_45_dBm_L	;
321
+  uint8_t Table_Det_46_dBm_H	;   
322
+  uint8_t Table_Det_46_dBm_L	;
323
+  uint8_t Table_Det_47_dBm_H	; 
324
+  uint8_t Table_Det_47_dBm_L	;
325
+  uint8_t Table_Det_48_dBm_H	;   
326
+  uint8_t Table_Det_48_dBm_L	;
327
+  uint8_t Table_Det_49_dBm_H	; 
328
+  uint8_t Table_Det_49_dBm_L	;
329
+  uint8_t Table_Det_50_dBm_H	;  
330
+  uint8_t Table_Det_50_dBm_L	;
331
+  uint8_t Table_Det_51_dBm_H	;  
332
+  uint8_t Table_Det_51_dBm_L	;
333
+  uint8_t Table_Det_52_dBm_H	;  
334
+  uint8_t Table_Det_52_dBm_L	;
335
+  uint8_t Table_Det_53_dBm_H	;  
336
+  uint8_t Table_Det_53_dBm_L	;
337
+  uint8_t Table_Det_54_dBm_H	;  
338
+  uint8_t Table_Det_54_dBm_L	;
339
+  uint8_t Table_Det_55_dBm_H	;  
340
+  uint8_t Table_Det_55_dBm_L	;
341
+  uint8_t Table_Det_56_dBm_H	;  
342
+  uint8_t Table_Det_56_dBm_L	;
343
+  uint8_t Table_Det_57_dBm_H	;  
344
+  uint8_t Table_Det_57_dBm_L	;
345
+  uint8_t Table_Det_58_dBm_H	;  
346
+  uint8_t Table_Det_58_dBm_L	;
347
+  uint8_t Table_Det_59_dBm_H	;  
348
+  uint8_t Table_Det_59_dBm_L	;
349
+  uint8_t Table_Det_60_dBm_H	;   
350
+  uint8_t Table_Det_60_dBm_L	;
351
+}DET_TABLEUL_st;
352
+
353
+
354
+typedef struct{
355
+    uint8_t bluecell_header;
356
+    uint8_t bluecell_type;
357
+    uint8_t bluecell_length;
358
+    uint8_t bluecell_crcindex;
359
+    uint8_t Selftest1;
360
+    uint8_t Selftest2;
361
+    uint8_t Selftest3;
362
+    uint8_t Selftest4;
363
+    uint8_t ATT_DL1_PATH;
364
+    uint8_t ATT_DL2_PATH;
365
+    uint8_t ATT_DL3_PATH;
366
+    uint8_t ATT_DL4_PATH;
367
+    uint8_t ATT_UL1_PATH;
368
+    uint8_t ATT_UL2_PATH;
369
+    uint8_t ATT_UL3_PATH;
370
+    uint8_t ATT_UL4_PATH;
371
+    uint8_t ATT_DL1_H;
372
+    uint8_t ATT_DL1_L;
373
+    uint8_t ATT_DL2_H;
374
+    uint8_t ATT_DL2_L;
375
+    uint8_t ATT_DL3_H;
376
+    uint8_t ATT_DL3_L;
377
+    uint8_t ATT_DL4_H;
378
+    uint8_t ATT_DL4_L;
379
+    uint8_t ATT_UL1_H;
380
+    uint8_t ATT_UL1_L;
381
+    uint8_t ATT_UL2_H;
382
+    uint8_t ATT_UL2_L;
383
+    uint8_t ATT_UL3_H;
384
+    uint8_t ATT_UL3_L;
385
+    uint8_t ATT_UL4_H;
386
+    uint8_t ATT_UL4_L;
387
+    uint8_t ULO_P1_Level1_H;
388
+    uint8_t ULO_P1_Level1_L;
389
+    uint8_t ULO_P2_Level2_H;
390
+    uint8_t ULO_P2_Level2_L;
391
+    uint8_t ULO_P3_Level3_H;
392
+    uint8_t ULO_P3_Level3_L;
393
+    uint8_t ULO_P4_Level4_H;
394
+    uint8_t ULO_P4_Level4_L;
395
+    uint8_t DLI_P1_Level1_H;
396
+    uint8_t DLI_P1_Level1_L;
397
+    uint8_t DLI_P2_Level2_H;
398
+    uint8_t DLI_P2_Level2_L;
399
+    uint8_t DLI_P3_Level3_H;
400
+    uint8_t DLI_P3_Level3_L;
401
+    uint8_t DLI_P4_Level4_H;
402
+    uint8_t DLI_P4_Level4_L;    
403
+    uint8_t DET_TEMP;
404
+    uint8_t DLI_AGC_ON_OFF;
405
+    uint8_t ULO_ALC_ON_OFF;
406
+    uint8_t ULO_Level1_H;
407
+    uint8_t ULO_Level1_L;
408
+    uint8_t ULO_Level2_H;
409
+    uint8_t ULO_Level2_L;
410
+    uint8_t ULO_Level3_H;
411
+    uint8_t ULO_Level3_L;
412
+    uint8_t ULO_Level4_H;
413
+    uint8_t ULO_Level4_L;
414
+    uint8_t DLI_Level1_H;
415
+    uint8_t DLI_Level1_L;
416
+    uint8_t DLI_Level2_H;
417
+    uint8_t DLI_Level2_L;
418
+    uint8_t DLI_Level3_H;
419
+    uint8_t DLI_Level3_L;
420
+    uint8_t DLI_Level4_H;
421
+    uint8_t DLI_Level4_L; 
422
+    uint8_t ULO_ALC_Threshold_H;
423
+    uint8_t ULO_ALC_Threshold_L;
424
+    uint8_t BLUECELL_RESERVE17;
425
+    uint8_t BLUECELL_RESERVE18;
426
+    uint8_t BLUECELL_RESERVE19;
427
+    uint8_t BLUECELL_RESERVE20;
428
+    uint8_t BLUECELL_RESERVE21;
429
+    uint8_t bluecell_User_DL1_H;  
430
+    uint8_t bluecell_User_DL1_L;
431
+    uint8_t bluecell_User_DL2_H;  
432
+    uint8_t bluecell_User_DL2_L;
433
+    uint8_t bluecell_User_DL3_H;  
434
+    uint8_t bluecell_User_DL3_L;
435
+    uint8_t bluecell_User_DL4_H;  
436
+    uint8_t bluecell_User_DL4_L;
437
+    uint8_t bluecell_User_UL1_H;  
438
+    uint8_t bluecell_User_UL1_L;
439
+    uint8_t bluecell_User_UL2_H;  
440
+    uint8_t bluecell_User_UL2_L;
441
+    uint8_t bluecell_User_UL3_H;  
442
+    uint8_t bluecell_User_UL3_L;
443
+    uint8_t bluecell_User_UL4_H;  
444
+    uint8_t bluecell_User_UL4_L;
445
+    uint8_t bluecell_User_TEMP_H;  
446
+    uint8_t bluecell_User_TEMP_L;
447
+    int8_t bluecell_User_TEMP_OFFSET;  
448
+    int8_t Temp_High_Threshold;
449
+    int8_t Temp_High_Threshold_Default;
450
+    uint8_t DLI_Level_High_Threshold_H;
451
+    uint8_t DLI_Level_High_Threshold_L;
452
+    uint8_t DLI_Level_Low_Threshold_H;
453
+    uint8_t DLI_Level_Low_Threshold_L;
454
+    uint8_t DLI_Level_High_Low_Threshold_default;
455
+    uint8_t ALARM_TEMP_HIGH; //bit
456
+    uint8_t ALARM_DLI_Level;
457
+    uint8_t ALARM_DLI_SHTUTDOWN;
458
+    uint8_t ALARM_DLI_AGC_Alarm;
459
+    uint8_t ALARM_ULO_ALC_Alarm;    
460
+    uint8_t ALARM_ULO_Level;
461
+    uint8_t ALARM_ULO_SHTUTDOWN;
462
+    uint8_t ALARM_MASK1;
463
+    uint8_t ALARM_MASK2;
464
+    uint8_t ALARM_MASK3;
465
+    uint8_t ALARM_MASK4;
466
+    uint8_t ALARM_MASK5;
467
+    uint8_t ALARM_TESTMODE;
468
+    uint8_t ALARM_Test_Dummy1;
469
+    uint8_t ALARM_Test_Dummy2;
470
+    uint8_t ALARM_Test_Dummy3;
471
+    uint8_t ALARM_Test_Dummy4;
472
+    uint8_t ALARM_Test_Dummy5;    
473
+    uint8_t CPUVERSION1;
474
+    uint8_t CPUVERSION2;
475
+    uint8_t CPUVERSION3;
476
+    uint8_t CPU_Current_Bank;
477
+    uint8_t CPU_Bank_Select;//Reboot_by;
478
+    uint8_t CPU_Bank1_Image_Version1;
479
+    uint8_t CPU_Bank1_Image_Version2;
480
+    uint8_t CPU_Bank1_Image_Version3;    
481
+    uint8_t CPU_Bank1_Image_BuildTime1;
482
+    uint8_t CPU_Bank1_Image_BuildTime2;
483
+    uint8_t CPU_Bank1_Image_BuildTime3;
484
+    uint8_t CPU_Bank1_Image_BuildTime4;
485
+    uint8_t CPU_Bank1_Image_BuildTime5;
486
+    uint8_t CPU_Bank1_Image_BuildTime6;    
487
+    uint8_t CPU_Bank1_Image_Name[32];
488
+    uint8_t CPU_Bank2_Image_Version1;
489
+    uint8_t CPU_Bank2_Image_Version2;
490
+    uint8_t CPU_Bank2_Image_Version3;    
491
+    uint8_t CPU_Bank2_Image_BuildTime1;
492
+    uint8_t CPU_Bank2_Image_BuildTime2;
493
+    uint8_t CPU_Bank2_Image_BuildTime3;
494
+    uint8_t CPU_Bank2_Image_BuildTime4;
495
+    uint8_t CPU_Bank2_Image_BuildTime5;
496
+    uint8_t CPU_Bank2_Image_BuildTime6;
497
+    uint8_t CPU_Bank2_Image_Name[32];
498
+    uint8_t S_W_Reset;
499
+    uint8_t Factory_Set_Initialization;
500
+    uint8_t Temp_High_Alarm;
501
+    uint8_t LED_TEST;
502
+    uint8_t NODE;
503
+    uint8_t Type;
504
+    uint8_t PCB_Version[2];
505
+    uint8_t Serial_Number[20]; // INDEX : 20
506
+    uint8_t Manufacture;
507
+    uint8_t Manufacture_Date[3];
508
+    uint8_t Freq_ID;
509
+    uint8_t Carrier_ID;
510
+    uint8_t Carrier_ON_OFF;
511
+    uint8_t DLI_Level_High_Alarm1;
512
+    uint8_t DLI_Level_High_Alarm2;
513
+    uint8_t DLI_Level_High_Alarm3;
514
+    uint8_t DLI_Level_High_Alarm4;
515
+    uint8_t DLI_Level_Low_Alarm1;
516
+    uint8_t DLI_Level_Low_Alarm2;
517
+    uint8_t DLI_Level_Low_Alarm3;
518
+    uint8_t DLI_Level_Low_Alarm4;
519
+    uint8_t DLI_FRBT_Atten1_H;
520
+    uint8_t DLI_FRBT_Atten1_L;    
521
+    uint8_t DLI_FRBT_Atten2_H;
522
+    uint8_t DLI_FRBT_Atten2_L;    
523
+    uint8_t DLI_FRBT_Atten3_H;
524
+    uint8_t DLI_FRBT_Atten3_L;    
525
+    uint8_t DLI_FRBT_Atten4_H;
526
+    uint8_t DLI_FRBT_Atten4_L;    
527
+    uint8_t DLI_FRBT_D_Day;
528
+    uint8_t DLI_FRBT_Status;
529
+    uint8_t DLI_AGC_Threshold_H;
530
+    uint8_t DLI_AGC_Threshold_L;
531
+    uint8_t DLI_AGC_Threshold_default;
532
+    uint8_t DLI_Shutdown_ON_OFF;
533
+    uint8_t DLI_Shutdown_Threshold_H;
534
+    uint8_t DLI_Shutdown_Threshold_L;    
535
+    uint8_t DLI_Shutdown_Threshold_Default;
536
+    uint8_t DLI_Shutdown_Retry_Count1;
537
+    uint8_t DLI_Shutdown_Retry_Count2;
538
+    uint8_t DLI_Shutdown_Retry_Count3;
539
+    uint8_t DLI_Shutdown_Retry_Count4;    
540
+    uint8_t DLI_AGC_Alarm1;
541
+    uint8_t DLI_AGC_Alarm2;
542
+    uint8_t DLI_AGC_Alarm3;
543
+    uint8_t DLI_AGC_Alarm4;
544
+    uint8_t DLI_Shutdown_Alarm1;
545
+    uint8_t DLI_Shutdown_Alarm2;
546
+    uint8_t DLI_Shutdown_Alarm3;
547
+    uint8_t DLI_Shutdown_Alarm4;
548
+    uint8_t ULO_Level_High_Threshold_H;
549
+    uint8_t ULO_Level_High_Threshold_L;
550
+    uint8_t ULO_Level_High_Threshold_default;
551
+    uint8_t BLUECELL_RESERVE28;//ADC3   8   
552
+    uint8_t BLUECELL_RESERVE29;//ADC3   8
553
+    uint8_t BLUECELL_RESERVE30;//ADC1   4  
554
+    uint8_t BLUECELL_RESERVE31;//ADC1   4 
555
+    uint8_t BLUECELL_RESERVE32;//ADC1   5 
556
+    uint8_t BLUECELL_RESERVE33;//ADC1   5
557
+    uint8_t BLUECELL_RESERVE34;//ADC1   6
558
+    uint8_t BLUECELL_RESERVE35;//ADC1   6
559
+    uint8_t BLUECELL_RESERVE36;//ADC3   4
560
+    uint8_t BLUECELL_RESERVE37;//ADC3   4
561
+    uint8_t ULO_Level_High_Alarm1;
562
+    uint8_t ULO_Level_High_Alarm2;
563
+    uint8_t ULO_Level_High_Alarm3;
564
+    uint8_t ULO_Level_High_Alarm4;
565
+    uint8_t ULO_ALC_Threshold_Default;
566
+    uint8_t ULO_Shutdown_ON_OFF;
567
+    uint8_t ULO_Shutdown_Threshold_H;
568
+    uint8_t ULO_Shutdown_Threshold_L;    
569
+    uint8_t ULO_Shutdown_Threshold_Default;
570
+    uint8_t ULO_Shutdown_Retry_Count1;
571
+    uint8_t ULO_Shutdown_Retry_Count2;
572
+    uint8_t ULO_Shutdown_Retry_Count3;
573
+    uint8_t ULO_Shutdown_Retry_Count4;    
574
+    uint8_t ULO_ALC_Alarm1;
575
+    uint8_t ULO_ALC_Alarm2;
576
+    uint8_t ULO_ALC_Alarm3;
577
+    uint8_t ULO_ALC_Alarm4;
578
+    uint8_t ULO_Shutdown_Alarm1;
579
+    uint8_t ULO_Shutdown_Alarm2;
580
+    uint8_t ULO_Shutdown_Alarm3;
581
+    uint8_t ULO_Shutdown_Alarm4;
582
+    uint8_t Reserve0;
583
+    uint8_t Reserve1;
584
+    uint8_t Reserve2;
585
+    uint8_t Reserve3;
586
+    uint8_t Reserve4;
587
+    uint8_t Reserve5;
588
+    uint8_t bluecell_crc_H;
589
+    uint8_t bluecell_crc_L;
590
+    uint8_t bluecell_etx;
591
+
592
+}BLUESTATUS_st;
98 593
 
99 594
 
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-// Exported type definitions --------------------------------------------------
112
-/**
113
- * The possible states the EEPROM driver can be in.
114
- */
115
-typedef enum
116
-{
117
-    EE_UNINIT = 0,      //!< Driver has not been initialized
118
-    EE_IDLE,            //!< Driver has been initialized and is ready to start a transfer
119
-    EE_FINISH,          //!< Driver has finished with a transfer
120
-    EE_READ,            //!< Driver is doing a read operation
121
-    EE_WRITE_SEND,      //!< Driver is writing data
122
-    EE_WRITE_WAIT       //!< Driver is waiting for the EEPROM to finish a write cycle
123
-} EEPROM_Status;
124
-
125
-/**
126
- * The possible outcomes of an operation.
127
- */
128
-typedef enum
129
-{
130
-    EE_OK = 0,      //!< Indicates success
131
-    EE_BUSY,        //!< Indicates that the driver is currently busy doing a transfer
132
-    EE_ERROR        //!< Indicates an error condition
133
-} EEPROM_Error;
134
-
135
-/**
136
- * Contains static configuration for the board such as populated peripherals, fitted resistor values and Ethernet MAC
137
- * address, that are stored on the EEPROM.
138
- */
139
-
140
-// Macros ---------------------------------------------------------------------
141
-
142
-#ifndef LOBYTE
143
-#define LOBYTE(x)  ((uint8_t)(x & 0x00FF))
144
-#endif
145
-#ifndef HIBYTE
146
-#define HIBYTE(x)  ((uint8_t)((x & 0xFF00) >> 8))
147
-#endif
148
-#define MAKE_ADDRESS(_addr, _e2)            ((uint8_t)EEPROM_M24C08_ADDR | \
149
-                                             ((_e2) ? EEPROM_M24C08_ADDR_E2 : 0) | \
150
-                                             ((uint8_t)((_addr) >> 7) & EEPROM_M24C08_BYTE_ADDR_H))
151
-
152
-// Constants ------------------------------------------------------------------
153
-
154
-/**
155
- * @defgroup EEPROM_M24C08_ADDRESS M24C08 Address definitions
156
- * 
157
- * The address byte that is sent to an M24C08 consists of 4 parts:
158
- *  + The device identifier {@link EEPROM_M24C08_ADDR} (4 bits)
159
- *  + An address bit {@link EEPROM_M24C08_ADDR_E2} that is either set or not, depending on the value of the `E2` pin on
160
- *    the M24C08 device
161
- *  + The two most significant bits of the memory address to be read/written {@link EEPROM_M24C08_BYTE_ADDR_H}
162
- *  + The standard I2C read/write bit
163
- * @{
164
- */
165
-#define EEPROM_M24C08_ADDR                  0xA0        //!< M24C08 device identifier
166
-#define EEPROM_M24C08_ADDR_E2               0x08        //!< M24C08 E2 address bit
167
-/**
168
- * Bitmask for the M24C08 I2C Address bits that are used for the high byte of the memory address. The address bits are
169
- * either the high byte shifted left by one or the 16 bit address shifted right by 7 and then masked.
170
- */
171
-#define EEPROM_M24C08_BYTE_ADDR_H           0x06
172
-/** @} */
173
-
174
-/**
175
- * Timeout in ms for I2C communication
176
- */
177
-#define EEPROM_I2C_TIMEOUT                  0x200
178
-
179
-/**
180
- * EEPROM size in bytes
181
- */
182
-#define EEPROM_SIZE                         0x400
183
-
184
-/**
185
- * Mask for the page address, a page write can only write to addresses which have the same page address
186
- */
187
-#define EEPROM_PAGE_MASK                    0x03F0
188
-
189
-/**
190
- * Page size of the EEPROM, only one page can be written at a time
191
- */
192
-#define EEPROM_PAGE_SIZE                    0x10
193
-
194
-/**
195
- * Configuration data offset, that is the first address of the configuration data space
196
- */
197
-#define EEPROM_CONFIG_OFFSET                0
198
-
199
-/**
200
- * Size of the configuration data section in bytes
201
- */
202
-#define EEPROM_CONFIG_SIZE                  128
203
-
204
-/**
205
- * Data offset, that is the first address for arbitrary data
206
- */
207
-#define EEPROM_DATA_OFFSET                  0x80
208
-
209
-/**
210
- * Size of the data section in bytes, this is the EEPROM size minus the data offset
211
- */
212
-#define EEPROM_DATA_SIZE                    (EEPROM_SIZE - EEPROM_DATA_OFFSET)
213
-
214
-/**
215
- * Size of the settings buffer in bytes
216
- */
217
-#define EEPROM_SETTINGS_SIZE                64
218
-
219 595
 // Exported functions ---------------------------------------------------------
220 596
 
221 597
 

+ 1 - 1
STM32F103_ATTEN_PLL_Zig.elf.launch

@@ -43,7 +43,7 @@
43 43
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
44 44
 <listEntry value="4"/>
45 45
 </listAttribute>
46
-<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;"/>
46
+<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;&lt;gdbmemoryBlockExpression address=&quot;536873172&quot; label=&quot;data&quot;/&gt;&#13;&#10;&lt;gdbmemoryBlockExpression address=&quot;536873172&quot; label=&quot;data&quot;/&gt;&#13;&#10;&lt;/memoryBlockExpressionList&gt;&#13;&#10;"/>
47 47
 <stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
48 48
 <stringAttribute key="saved_expressions&lt;seperator&gt;Unknown" value="update_data_buf,data"/>
49 49
 </launchConfiguration>

+ 75 - 0
Src/CRC16.c

@@ -43,6 +43,52 @@ uint16_t Table_CRC16[]  = {
43 43
 	0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
44 44
 	0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
45 45
 };
46
+static uint32_t crc32_tab[] = {						
47
+    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,						
48
+    0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,						
49
+    0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,						
50
+    0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,						
51
+    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,						
52
+    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,						
53
+    0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,						
54
+    0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,						
55
+    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,						
56
+    0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,						
57
+    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,						
58
+    0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,						
59
+    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,						
60
+    0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,						
61
+    0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,						
62
+    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,						
63
+    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,						
64
+    0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,						
65
+    0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,						
66
+    0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,						
67
+    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,						
68
+    0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,						
69
+    0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,						
70
+    0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,						
71
+    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,						
72
+    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,						
73
+    0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,						
74
+    0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,						
75
+    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,						
76
+    0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,						
77
+    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,						
78
+    0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,						
79
+    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,						
80
+    0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,						
81
+    0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,						
82
+    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,						
83
+    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,						
84
+    0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,						
85
+    0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,						
86
+    0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,						
87
+    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,						
88
+    0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,						
89
+    0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d						
90
+};						
91
+		    
46 92
 #define POLYNOMIAL 0x131 // P(x) = x^8 + x^5 + x^4 + 1 = 100110001
47 93
 
48 94
 //-----------------------------------------------
@@ -179,5 +225,34 @@ etError STH30_CheckCrc(uint8_t *data, uint8_t nbrOfBytes, uint8_t checksum)
179 225
   if(crc != checksum) return CHECKSUM_ERROR;
180 226
   else                return NO_ERROR;
181 227
 }
228
+uint32_t crc32(const void *buf, size_t size)						
229
+{						
230
+    const uint8_t *p;						
231
+    uint32_t crcret = 0;
232
+						
233
+    p = buf;						
234
+    crcret = crcret ^ ~0U;						
235
+						
236
+    while (size--) {						
237
+        crcret = crc32_tab[(crcret ^ *p++) & 0xFF] ^ (crcret >> 8);						
238
+    }						
239
+						
240
+    return crcret ^ ~0U;						
241
+}						
242
+etError crc32Check(uint32_t checksum,uint32_t crc, const void *buf, size_t size)						
243
+{						
244
+    const uint8_t *p;						
245
+    uint32_t crcret = 0;
246
+						
247
+    p = buf;						
248
+    crcret = crcret ^ ~0U;						
249
+						
250
+    while (size--) {						
251
+        crcret = crc32_tab[(crcret ^ *p++) & 0xFF] ^ (crcret >> 8);						
252
+    }						
253
+						
254
+    crcret ^ ~0U;		
182 255
 
256
+    return (crcret == checksum ? CHECKSUM_ERROR : NO_ERROR);
257
+}	
183 258
 

+ 27 - 3
Src/MBIC_Bootloader.c

@@ -194,6 +194,30 @@ uint8_t* MBIC_HeaderMergeFunction(uint8_t* data,uint16_t Length )
194 194
 
195 195
     return data;
196 196
 }
197
+/*
198
+    MBIC CRC Check Function
199
+*/
200
+void MBIC_FirmwareFile_CrcCheck(void) 
201
+{
202
+    uint32_t  Address = 0;
203
+    Address = FLASH_USER_START_ADDR - 128;
204
+    for(uint32_t i = 0; i < 300; i++ ){
205
+        printf("%08x : %02X \n",Address ,*(uint8_t*)Address);
206
+        Address++;
207
+    }
208
+#if 0 // PYJ.2019.03.27_BEGIN -- 
209
+    for(uint32_t i = 0; i < 13848; i++ ){
210
+        printf("%08x : %02X \n",Address ,*(uint8_t*)Address);
211
+        Address++;
212
+    }
213
+    Address = StartAddr;
214
+    for(uint32_t i = 0; i < 13848; i++ ){
215
+        printf("%02X ",*(uint8_t*)Address);
216
+        Address++;
217
+    }
218
+#endif // PYJ.2019.03.27_END -- 
219
+
220
+}
197 221
 
198 222
 void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
199 223
     uint8_t MBIC_DownLoadData[0xFFFF];
@@ -276,12 +300,12 @@ void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
276 300
             data[MBIC_PAYLOADSTART + index++] = 0;
277 301
             for(i = 0; i < Curr_Download_DataIndex - Prev_Download_DataIndex; i++){
278 302
                     MBIC_DownLoadData[i] = data[MBIC_PAYLOADSTART + 12 +i];
279
-                    printf("%02x ",MBIC_DownLoadData[i]);
303
+//                    printf("%02x ",MBIC_DownLoadData[i]);
280 304
             }
281 305
 //            printf("Data End\r\n");
282
-//            Bank_Flash_write(data,FLASH_USER_TEMPBANK_START_ADDR);
306
+            Bank_Flash_write(data,FLASH_USER_START_ADDR);
283 307
 //            HAL_Delay(100);
284
-            Prev_Download_DataIndex  = Curr_Download_DataIndex;
308
+            Prev_Download_DataIndex  = Curr_Download_DataIndex + 1;
285 309
             break;
286 310
         case MBIC_Download_Confirm_REQ:
287 311
             cmd = MBIC_Download_Confirm_RSP;

+ 9 - 54
Src/eeprom.c

@@ -5,61 +5,35 @@
5 5
  *      Author: parkyj
6 6
  */
7 7
 #include <stdio.h>
8
+#include <string.h>
8 9
 #include "main.h"
9 10
 #include "eeprom.h"
10 11
 #include "stm32f1xx_hal.h"
11 12
 #include "stm32f1xx_hal_gpio.h"
12 13
 
13
-/* Includes ------------------------------------------------------------------*/
14
-extern I2C_HandleTypeDef hi2c2;
14
+/* Includes ------------------------------------------------------------------*/   
15 15
 HAL_StatusTypeDef EEPROM_M24C08_ByteRead(uint16_t devid,uint16_t Address,uint8_t* data,uint8_t size);
16 16
 
17 17
 
18
+extern BLUESTATUS_st bluecell_Currdatastatus;
18 19
 
19 20
 
21
+extern I2C_HandleTypeDef hi2c2;
20 22
 
21 23
 
22 24
 
23 25
 
24 26
 
25 27
 void EEPROM_M24C08_Init(void){
26
-//    EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_BASE              ,&Att_DL1.Table_0_0_dBm,sizeof(ATT_TABLE_st) );
27
-    //printf("EEPROM INIT COMPLETE\r\n");
28
-
29
-}
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-#if 0 // PYJ.2020.04.23_BEGIN -- 
41
-
28
+    EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_WINDOW_STATUS_ADDRESDS,&bluecell_Currdatastatus.bluecell_header,sizeof(BLUESTATUS_st) );
29
+    
42 30
 
43
-void eepromtest(){
44
-    memset(&eepdata[0],0x33,100);
45
-    for(int i = 0; i < 100; i ++ ){
46
-        printf("data[%d] : %x \r\n",i,eepdata[i]);
47
-        EEPROM_M24C08_Bytewrite(EEPROM_M24C08_ID,EEPROM_ATT_BASE + i,&eepdata[i],1);
48
-    }  
49
-    for(int i = 0; i < 100; i ++ ){
50
-        EEPROM_M24C08_ByteRead(EEPROM_M24C08_ID,EEPROM_ATT_BASE + i,&eepdata[i],1);
51
-        printf("data[%d] : %x \r\n",i,eepdata[i]);
52
-    }  
53
-//    EEPROM_M24C08_Read(EEPROM_M24C08_ID,EEPROM_ATT_BASE,&eepdata[0],100);
54
-//    for(int i = 0; i < 100; i ++ ){
55
-//        printf("data[%d] : %x \r\n",i,eepdata[i]);
56
-//    }    
31
+    printf("EEPROM INIT COMPLETE\r\n");
57 32
 
58 33
 }
59
-#endif // PYJ.2020.04.23_END -- 
60 34
 
61
-#define MAXEEPROM_LENG 32
62 35
 
36
+#define MAXEEPROM_LENG 32
63 37
 HAL_StatusTypeDef EEPROM_M24C08_Read(uint8_t devid,uint16_t Address,uint8_t* data,uint16_t size){
64 38
    HAL_StatusTypeDef ret = HAL_ERROR;
65 39
  //  uint16_t sizecnt = 0,
@@ -84,24 +58,6 @@ HAL_StatusTypeDef EEPROM_M24C08_write(uint8_t devid,uint16_t Address,uint8_t* da
84 58
     sizecnt = size /MAXEEPROM_LENG;
85 59
     sizeremain = size % MAXEEPROM_LENG;
86 60
     addrees_inc = 0;
87
-#if 0 // PYJ.2020.04.25_BEGIN -- 
88
-       for(int i = 0 ; i <sizecnt; i++ ){
89
-            addrees_inc = i * 16;
90
-            ret = HAL_I2C_Mem_Write(&hi2c2, devid | (((Address  + addrees_inc) & 0x0300) >> 7),((Address + addrees_inc)) ,  I2C_MEMADD_SIZE_8BIT, &data[addrees_inc], 16, 1024);
91
-            if(ret == HAL_ERROR)
92
-                printf("Write ERR\r\n");
93
-            else
94
-                HAL_Delay(20);
95
-       }
96
-       addrees_inc += 16;
97
-           ret = HAL_I2C_Mem_Write(&hi2c2, devid | (((Address  + addrees_inc) & 0x0300) >> 7),((Address + addrees_inc)) ,  I2C_MEMADD_SIZE_8BIT, &data[addrees_inc], sizeremain, 1024);
98
-            //       EEPROM24XX_Save( Address,data, size);
99
-            if(ret == HAL_ERROR)
100
-                printf("Write ERR\r\n");
101
-            else
102
-                HAL_Delay(20);
103
-#else
104
-//    printf("size : %d sizecnt = %d sizeremain : %d\r\n",size,sizecnt,sizeremain);
105 61
     if(sizecnt > 0){
106 62
         for(int i = 0 ; i < sizecnt; i++ ){
107 63
              addrees_inc = i * MAXEEPROM_LENG;
@@ -118,7 +74,7 @@ HAL_StatusTypeDef EEPROM_M24C08_write(uint8_t devid,uint16_t Address,uint8_t* da
118 74
 //    printf("Remain Data Index : %d \r\n",sizeremain);
119 75
     
120 76
     if(sizeremain > 0){
121
-//         printf("Remain Data Write Start ");
77
+//        printf("Remain Data Write Start ");
122 78
         for(int i = 0; i < sizeremain; i++){
123 79
             ret = HAL_I2C_Mem_Write(&hi2c2, devid  ,((Address + addrees_inc + i)& 0xFFFF) ,  I2C_MEMADD_SIZE_16BIT, &data[addrees_inc + i], 1, 1024);
124 80
          //       EEPROM24XX_Save( Address,data, size);
@@ -129,7 +85,6 @@ HAL_StatusTypeDef EEPROM_M24C08_write(uint8_t devid,uint16_t Address,uint8_t* da
129 85
         }
130 86
     }
131 87
 
132
-#endif // PYJ.2020.04.25_END -- 
133 88
     return ret;
134 89
 }
135 90
 

+ 62 - 44
Src/flash.c

@@ -40,8 +40,8 @@ void FLASH_If_Init(void)
40 40
 void Flash_InitRead(void) // ?占쏙옙湲고븿?占쏙옙
41 41
 {
42 42
     uint32_t  Address = 0;
43
-    Address = FLASH_USER_START_ADDR;
44
-    for(uint32_t i = 0; i < 16; i++ ){
43
+    Address = FLASH_USER_START_ADDR - 128;
44
+    for(uint32_t i = 0; i < 300; i++ ){
45 45
         printf("%08x : %02X \n",Address ,*(uint8_t*)Address);
46 46
         Address++;
47 47
     }
@@ -80,6 +80,7 @@ uint8_t Flash_RGB_Data_Write(uint8_t* data){
80 80
 uint8_t Flash_Data_Write(uint8_t* data){
81 81
     uint16_t Firmdata = 0;
82 82
     uint8_t ret = 0;
83
+    int i = 0;
83 84
     static uint32_t Curr_Download_DataIndex = 0;
84 85
     static uint32_t Prev_Download_DataIndex = 0;  
85 86
     
@@ -89,39 +90,52 @@ uint8_t Flash_Data_Write(uint8_t* data){
89 90
     Curr_Download_DataIndex += data[MBIC_PAYLOADSTART + 7];      
90 91
 
91 92
 //    data[MBIC_PAYLOADSTART + 12 +i];
92
-    for(int i= 0; i <= Curr_Download_DataIndex - Prev_Download_DataIndex+1; i+=2){
93
+   
94
+    returntoFirst:
95
+    UserAddress -= i;
96
+    for(i= 0; i <= Curr_Download_DataIndex - Prev_Download_DataIndex; i+=2){
93 97
         Firmdata  = ((data[MBIC_PAYLOADSTART + 12 +i]) & 0x00FF);
94 98
         Firmdata  += ((data[MBIC_PAYLOADSTART + 12 +i + 1] << 8) & 0xFF00);
95 99
         if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,UserAddress ,   (uint16_t)Firmdata) != HAL_OK){
96 100
             printf("HAL NOT OK \n");
97 101
             ret = 1;
102
+            HAL_Delay(1000);
103
+            goto returntoFirst;
104
+        }else{
105
+            UserAddress += 2;
98 106
         }
99
-        UserAddress += 2;
100 107
     }
101
-    Prev_Download_DataIndex = Curr_Download_DataIndex;
108
+    Prev_Download_DataIndex = Curr_Download_DataIndex + 1;
102 109
     return ret;
103 110
 }
104 111
 
105
-uint8_t Flash_Bank_Data_Write(uint8_t* data){
106
-    uint16_t Firmdata = 0;
107
-    uint16_t Length = 0;
108
-    static uint32_t WriteIndex = 0;
112
+
113
+uint8_t Flash_Data_WriteTest(uint8_t* data){
114
+    uint32_t Firmdata = 0;
109 115
     uint8_t ret = 0;
110
-    for(int i = 0; i < Length; i+=2){
111
-        Firmdata  = ((data[WriteIndex++]) & 0x00FF);
112
-        Firmdata  += ((data[WriteIndex++] << 8) & 0xFF00);
113
-        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,Address ,   (uint16_t)Firmdata) != HAL_OK){
116
+    static uint32_t Curr_Download_DataIndex = 0;
117
+    static uint32_t Prev_Download_DataIndex = 0;  
118
+    
119
+    Curr_Download_DataIndex = data[MBIC_PAYLOADSTART  + 4] << 24;
120
+    Curr_Download_DataIndex += data[MBIC_PAYLOADSTART + 5] << 16;
121
+    Curr_Download_DataIndex += data[MBIC_PAYLOADSTART + 6] << 8;            
122
+    Curr_Download_DataIndex += data[MBIC_PAYLOADSTART + 7];      
123
+
124
+    for(int i= 0; i <= Curr_Download_DataIndex - Prev_Download_DataIndex; i+=2){
125
+        Firmdata  = ((data[MBIC_PAYLOADSTART + 12 +i  + 0])       & 0x000000FF);
126
+        Firmdata  += ((data[MBIC_PAYLOADSTART + 12 +i + 1] << 8)  & 0x0000FF00);
127
+        Firmdata  += ((data[MBIC_PAYLOADSTART + 12 +i + 2] << 16) & 0x00FF0000);
128
+        Firmdata  += ((data[MBIC_PAYLOADSTART + 12 +i + 3] << 24) & 0xFF000000);
129
+        if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,UserAddress ,   (uint32_t)Firmdata) != HAL_OK){
114 130
             printf("HAL NOT OK \n");
115 131
             ret = 1;
116 132
         }
117
-        Address += 2;
118
-        //if(!(i%FirmwareUpdateDelay))
119
-      //  HAL_Delay(1);
133
+        UserAddress += 4;
120 134
     }
135
+    Prev_Download_DataIndex = Curr_Download_DataIndex + 1;
121 136
     return ret;
122 137
 }
123
-
124
-#if 0 // PYJ.2020.06.10_BEGIN -- 
138
+#if 0 // PYJ.2020.06.17_BEGIN -- 
125 139
 uint8_t Flash_Data_Write(uint8_t* data){
126 140
     uint64_t Firmdata = 0;
127 141
     uint8_t ret = 0;
@@ -159,6 +173,7 @@ uint8_t Flash_Data_Write(uint8_t* data){
159 173
     }
160 174
     return ret;
161 175
 }
176
+#endif // PYJ.2020.06.17_END -- 
162 177
 #endif // PYJ.2020.06.10_END -- 
163 178
 uint8_t Flash_DataTest_Write(uint8_t* data){
164 179
     uint32_t Firmdata = 0;
@@ -195,7 +210,7 @@ uint8_t Flash_DataTest_Write(uint8_t* data){
195 210
     }
196 211
     return ret;
197 212
 }
198
-#endif // PYJ.2020.05.20_END -- 
213
+
199 214
 
200 215
 uint8_t Flash_write(uint8_t* data) // ?占쏙옙湲고븿?占쏙옙
201 216
 {
@@ -236,36 +251,39 @@ uint8_t Bank_Flash_write(uint8_t* data,uint32_t StartBankAddress) // ?占쏙옙
236 251
     static FLASH_EraseInitTypeDef EraseInitStruct;
237 252
     static uint32_t PAGEError = 0;
238 253
     uint8_t ret = 0;
239
-    /* Fill EraseInit structure*/
240
-    switch(StartBankAddress){
241
-        case FLASH_USER_START_ADDR:
242
-            EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
243
-            EraseInitStruct.PageAddress = FLASH_USER_START_ADDR;
244
-            EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_START_ADDR) / FLASH_PAGE_SIZE;
245
-        break;
246
-        case FLASH_USER_BANK1_START_ADDR:
247
-            EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
248
-            EraseInitStruct.PageAddress = FLASH_USER_BANK1_START_ADDR;
249
-            EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_BANK1_START_ADDR) / FLASH_PAGE_SIZE;
250 254
 
251
-        break;
252
-        case FLASH_USER_BANK2_START_ADDR:
253
-            EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
254
-            EraseInitStruct.PageAddress = FLASH_USER_BANK2_START_ADDR;
255
-            EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_BANK2_START_ADDR) / FLASH_PAGE_SIZE;
256
-
257
-        break;
258
-        case FLASH_USER_TEMPBANK_START_ADDR:
259
-            EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
260
-            EraseInitStruct.PageAddress = FLASH_USER_TEMPBANK_START_ADDR;
261
-            EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_TEMPBANK_START_ADDR) / FLASH_PAGE_SIZE;
262
-        break;
263
-
264
-    }
265 255
 
266 256
     HAL_FLASH_Unlock(); // lock ??占�?
267 257
     if(flashinit == 0){
258
+        
268 259
         flashinit= 1;
260
+        /* Fill EraseInit structure*/
261
+        switch(StartBankAddress){
262
+            case FLASH_USER_START_ADDR:
263
+                EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
264
+                EraseInitStruct.PageAddress = FLASH_USER_START_ADDR - 128;
265
+                EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_START_ADDR) / FLASH_PAGE_SIZE;
266
+            break;
267
+            case FLASH_USER_BANK1_START_ADDR:
268
+                EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
269
+                EraseInitStruct.PageAddress = FLASH_USER_BANK1_START_ADDR - 128;
270
+                EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_BANK1_START_ADDR) / FLASH_PAGE_SIZE;
271
+
272
+            break;
273
+            case FLASH_USER_BANK2_START_ADDR:
274
+                EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
275
+                EraseInitStruct.PageAddress = FLASH_USER_BANK2_START_ADDR - 128;
276
+                EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_BANK2_START_ADDR) / FLASH_PAGE_SIZE;
277
+
278
+            break;
279
+            case FLASH_USER_TEMPBANK_START_ADDR:
280
+                EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES;
281
+                EraseInitStruct.PageAddress = FLASH_USER_TEMPBANK_START_ADDR - 128;
282
+                EraseInitStruct.NbPages     = (FLASH_USER_END_ADDR - FLASH_USER_TEMPBANK_START_ADDR) / FLASH_PAGE_SIZE;
283
+            break;
284
+
285
+        }        
286
+        
269 287
         UserAddress = EraseInitStruct.PageAddress;
270 288
         //FLASH_PageErase(StartAddr);
271 289
         if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK){

+ 5 - 1
Src/main.c

@@ -66,6 +66,7 @@ static void MX_I2C2_Init(void);
66 66
 static void MX_TIM6_Init(void);
67 67
 static void MX_NVIC_Init(void);
68 68
 /* USER CODE BEGIN PFP */
69
+extern void MBIC_FirmwareFile_CrcCheck(void);
69 70
 
70 71
 /* USER CODE END PFP */
71 72
 
@@ -135,6 +136,9 @@ int main(void)
135 136
   printf("Crc generate %x \r\n",CRC16_Generate(tempdata,11));*/
136 137
   Firmware_BootStart_Signal();
137 138
   InitUartQueue(&TerminalQueue);
139
+  MBIC_FirmwareFile_CrcCheck();
140
+//  FLASH_If_Init();
141
+//  Flash_InitRead();
138 142
   /* USER CODE END 2 */
139 143
 
140 144
   /* Infinite loop */
@@ -144,7 +148,7 @@ int main(void)
144 148
 	 // printf("Uart Start \r\n");
145 149
 	  if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);LedTimerCnt = 0;}
146 150
 	  while (TerminalQueue.data > 0 && UartTimerCnt > 30) GetDataFromUartQueue(&hTerminal);
147
-	 // while(FirmwareTimerCnt > 3000)  Jump_App();
151
+//	 while(FirmwareTimerCnt > 3000)  Jump_App();
148 152
 
149 153
 	  //HAL_Delay(500);
150 154
     /* USER CODE END WHILE */

+ 1 - 1
Src/uart.c

@@ -109,7 +109,7 @@ void GetDataFromUartQueue(UART_HandleTypeDef *huart)
109 109
 
110 110
 void Uart1_Data_Send(uint8_t* data,uint16_t size){
111 111
 //    printf("size : %d \r\n",size);
112
-    HAL_UART_Transmit (&huart1, data, size, 0xFFFF);
112
+    HAL_UART_Transmit(&huart1, data, size, 0xFFFF);
113 113
 //    for(int i = 0; i < size; i++)
114 114
 //    if(HAL_UART_Transmit_DMA(&huart1, data, size) != HAL_OK){
115 115
 //        printf("ERROR \r\n");