2025-02-22 08:59:29 +00:00
|
|
|
|
C51 COMPILER V9.01 MCUFLASH 02/22/2025 15:36:22 PAGE 1
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C51 COMPILER V9.01, COMPILATION OF MODULE MCUFLASH
|
|
|
|
|
OBJECT MODULE PLACED IN .\output\McuFlash.obj
|
|
|
|
|
COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\McuFlash.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Lo
|
|
|
|
|
-ad.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\c
|
|
|
|
|
-ode_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\McuFlash.lst) OBJECT(.\output\M
|
|
|
|
|
-cuFlash.obj)
|
|
|
|
|
|
|
|
|
|
line level source
|
|
|
|
|
|
|
|
|
|
1 /********************************************************************************
|
|
|
|
|
2 Copyright (C), Sinowealth Electronic. Ltd.
|
|
|
|
|
3 Author: Sino
|
|
|
|
|
4 Version: V0.0
|
|
|
|
|
5 Date: 2020/04/26
|
|
|
|
|
6 History:
|
|
|
|
|
7 V2.0 2020/04/26 Preliminary
|
|
|
|
|
8 ********************************************************************************/
|
|
|
|
|
9 #include "Main.h"
|
|
|
|
|
10
|
|
|
|
|
11
|
|
|
|
|
12 BOOL bMcuFlashWrWaitFlg;
|
|
|
|
|
13 BOOL bMcuFlashWrFlg;
|
|
|
|
|
14 BOOL bMcuFlashErr;
|
|
|
|
|
15 U8 xdata ucMcuFlashWrValid;
|
|
|
|
|
16 U8 xdata bMcuFlashWrWaitCnt;
|
|
|
|
|
17
|
|
|
|
|
18 /*************************************************************************************************
|
|
|
|
|
19 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrOneByte
|
|
|
|
|
20 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>WrData<74><61>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
|
|
|
|
|
21 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|
|
|
|
22 * <20><> <20><>: д1<D0B4><31><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
23 *************************************************************************************************/
|
|
|
|
|
24 void McuFlashWrOneByte(U16 McuFlashAddr, U8 WrData)
|
|
|
|
|
25 {
|
|
|
|
|
26 1 IrqDis();
|
|
|
|
|
27 1 McuFlashEn();
|
|
|
|
|
28 1
|
|
|
|
|
29 1 XPAGE = McuFlashAddr>>8;
|
|
|
|
|
30 1 IB_OFFSET = McuFlashAddr % 256;
|
|
|
|
|
31 1 IB_DATA = WrData;
|
|
|
|
|
32 1
|
|
|
|
|
33 1 IB_CON1 = 0x6E;
|
|
|
|
|
34 1 IB_CON2 = 0x05;
|
|
|
|
|
35 1 IB_CON3 = 0x0A;
|
|
|
|
|
36 1 IB_CON4 = 0x09;
|
|
|
|
|
37 1 if(XPAGE == (McuFlashAddr>>8))
|
|
|
|
|
38 1 {
|
|
|
|
|
39 2 IB_CON5 = 0x06;
|
|
|
|
|
40 2 _nop_();
|
|
|
|
|
41 2 _nop_();
|
|
|
|
|
42 2 _nop_();
|
|
|
|
|
43 2 _nop_();
|
|
|
|
|
44 2 _nop_();
|
|
|
|
|
45 2 }
|
|
|
|
|
46 1
|
|
|
|
|
47 1 McuFlashDis();
|
|
|
|
|
48 1 IrqEn();
|
|
|
|
|
49 1 }
|
|
|
|
|
50
|
|
|
|
|
51
|
|
|
|
|
52 /*************************************************************************************************
|
2025-02-22 08:59:29 +00:00
|
|
|
|
C51 COMPILER V9.01 MCUFLASH 02/22/2025 15:36:22 PAGE 2
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
53 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashBlankCheck
|
|
|
|
|
54 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
|
|
|
|
55 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30><EFBFBD><EFBFBD>ȫ0<C8AB><30>Eraseʧ<65>ܣ<EFBFBD>1<EFBFBD><31>ȫ0<C8AB><30>Erase<73>ɹ<EFBFBD>
|
|
|
|
|
56 * <20><> <20><>: <20><>Erase<73><65>1<EFBFBD><31>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ȫΪ0
|
|
|
|
|
57 *************************************************************************************************/
|
|
|
|
|
58 BOOL McuFlashBlankCheck(U16 McuFlashAddr)
|
|
|
|
|
59 {
|
|
|
|
|
60 1 BOOL Result = 1;
|
|
|
|
|
61 1 U16 i;
|
|
|
|
|
62 1
|
|
|
|
|
63 1 for(i=0; i<MCUFLASH_SECTOR_SIZE; i++)
|
|
|
|
|
64 1 {
|
|
|
|
|
65 2 if(CBYTE[McuFlashAddr+i] != 0x00)
|
|
|
|
|
66 2 {
|
|
|
|
|
67 3 Result = 0;
|
|
|
|
|
68 3 break;
|
|
|
|
|
69 3 }
|
|
|
|
|
70 2 }
|
|
|
|
|
71 1
|
|
|
|
|
72 1 return Result;
|
|
|
|
|
73 1 }
|
|
|
|
|
74
|
|
|
|
|
75
|
|
|
|
|
76 /*************************************************************************************************
|
|
|
|
|
77 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashDataCheck
|
|
|
|
|
78 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
|
|
|
|
79 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ȷ
|
|
|
|
|
80 * <20><> <20><>: У<>鱻д<E9B1BB><D0B4>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>XRAM<41><4D>һ<EFBFBD><D2BB>
|
|
|
|
|
81 *************************************************************************************************/
|
|
|
|
|
82 BOOL McuFlashDataCheck(U16 McuFlashAddr, U16 XramAddr)
|
|
|
|
|
83 {
|
|
|
|
|
84 1 BOOL Result = 1;
|
|
|
|
|
85 1 U8 xdata *ptr = (U8 xdata *)XramAddr; //ǿ<>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA>ַ<EFBFBD><D6B7>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
86 1 U16 i;
|
|
|
|
|
87 1
|
|
|
|
|
88 1 for(i=0; i<MCUFLASH_SECTOR_SIZE; i++)
|
|
|
|
|
89 1 {
|
|
|
|
|
90 2 if(CBYTE[McuFlashAddr+i] != *(ptr+i))
|
|
|
|
|
91 2 {
|
|
|
|
|
92 3 Result = 0;
|
|
|
|
|
93 3 break;
|
|
|
|
|
94 3 }
|
|
|
|
|
95 2 }
|
|
|
|
|
96 1
|
|
|
|
|
97 1 return Result;
|
|
|
|
|
98 1 }
|
|
|
|
|
99
|
|
|
|
|
100
|
|
|
|
|
101 /*************************************************************************************************
|
|
|
|
|
102 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrSector
|
|
|
|
|
103 * <20><> <20><>: <20><>
|
|
|
|
|
104 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|
|
|
|
105 * <20><> <20><>: д1<D0B4><31>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
106 *************************************************************************************************/
|
|
|
|
|
107 BOOL McuFlashWrSector(U16 McuFlashAddr, U16 XramAddr)
|
|
|
|
|
108 {
|
|
|
|
|
109 1 BOOL Result = 0;
|
|
|
|
|
110 1 U16 i;
|
|
|
|
|
111 1 U8 xdata *ptr = (U8 xdata *)XramAddr; //ǿ<>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA>ַ<EFBFBD><D6B7>ֵ<EFBFBD><D6B5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
112 1
|
|
|
|
|
113 1 for(i=0; i<MCUFLASH_SECTOR_SIZE; i++)
|
|
|
|
|
114 1 {
|
2025-02-22 08:59:29 +00:00
|
|
|
|
C51 COMPILER V9.01 MCUFLASH 02/22/2025 15:36:22 PAGE 3
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
115 2 IB_OFFSET = McuFlashAddr+i;
|
|
|
|
|
116 2 XPAGE = (McuFlashAddr+i)>>8;
|
|
|
|
|
117 2 IB_DATA = *(ptr+i);
|
|
|
|
|
118 2 IB_CON1 = 0x6E;
|
|
|
|
|
119 2 if(!EA)
|
|
|
|
|
120 2 {
|
|
|
|
|
121 3 IB_CON2 = 0x05;
|
|
|
|
|
122 3 if(FLASHCON)
|
|
|
|
|
123 3 {
|
|
|
|
|
124 4 IB_CON3 = 0x0A;
|
|
|
|
|
125 4 if(ucMcuFlashWrValid == 0x55)
|
|
|
|
|
126 4 {
|
|
|
|
|
127 5 IB_CON4 = 0x09;
|
|
|
|
|
128 5 if(XPAGE == ((McuFlashAddr+i)>>8))
|
|
|
|
|
129 5 {
|
|
|
|
|
130 6 IB_CON5 = 0x06;
|
|
|
|
|
131 6 _nop_();
|
|
|
|
|
132 6 _nop_();
|
|
|
|
|
133 6 _nop_();
|
|
|
|
|
134 6 _nop_();
|
|
|
|
|
135 6 _nop_();
|
|
|
|
|
136 6 Result = 1;
|
|
|
|
|
137 6 }
|
|
|
|
|
138 5 else
|
|
|
|
|
139 5 {
|
|
|
|
|
140 6 Result = 0;
|
|
|
|
|
141 6 break;
|
|
|
|
|
142 6 }
|
|
|
|
|
143 5 }
|
|
|
|
|
144 4 else
|
|
|
|
|
145 4 {
|
|
|
|
|
146 5 Result = 0;
|
|
|
|
|
147 5 break;
|
|
|
|
|
148 5 }
|
|
|
|
|
149 4 }
|
|
|
|
|
150 3 else
|
|
|
|
|
151 3 {
|
|
|
|
|
152 4 Result = 0;
|
|
|
|
|
153 4 break;
|
|
|
|
|
154 4 }
|
|
|
|
|
155 3 }
|
|
|
|
|
156 2 else
|
|
|
|
|
157 2 {
|
|
|
|
|
158 3 Result = 0;
|
|
|
|
|
159 3 break;
|
|
|
|
|
160 3 }
|
|
|
|
|
161 2 }
|
|
|
|
|
162 1
|
|
|
|
|
163 1 return Result;
|
|
|
|
|
164 1 }
|
|
|
|
|
165
|
|
|
|
|
166
|
|
|
|
|
167 /*************************************************************************************************
|
|
|
|
|
168 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrite
|
|
|
|
|
169 * <20><> <20><>: McuFlashAddr<64><72>д<EFBFBD><D0B4><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ȹ̶<C8B9>Ϊ1<CEAA><31>Sector
|
|
|
|
|
170 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30>д<EFBFBD><D0B4>ʧ<EFBFBD>ܣ<EFBFBD>1<EFBFBD><31>д<EFBFBD><D0B4><EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
171 * <20><> <20><>: дMCU Flash<73><68>1<EFBFBD><31>Sector:
|
|
|
|
|
172 1.Erase Sector
|
|
|
|
|
173 2.<2E><><EFBFBD>鵱ǰSector<6F>Ƿ<EFBFBD>ȫΪ0
|
|
|
|
|
174 3.<2E><>XRAM<41><4D><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|
|
|
|
175 4.У<><D0A3>XRAM<41><4D>MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
176 *************************************************************************************************/
|
2025-02-22 08:59:29 +00:00
|
|
|
|
C51 COMPILER V9.01 MCUFLASH 02/22/2025 15:36:22 PAGE 4
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
177 BOOL McuFlashWrite(U16 McuFlashAddr, U16 XramAddr)
|
|
|
|
|
178 {
|
|
|
|
|
179 1 BOOL Result = 0;
|
|
|
|
|
180 1
|
|
|
|
|
181 1 McuWDTClear(); //<2F>忴<EFBFBD>Ź<EFBFBD>
|
|
|
|
|
182 1 IrqDis(); //<2F>ر<EFBFBD><D8B1>ж<EFBFBD>Դ
|
|
|
|
|
183 1 McuFlashEn();
|
|
|
|
|
184 1
|
|
|
|
|
185 1 XPAGE = McuFlashAddr >> 8;
|
|
|
|
|
186 1 IB_CON1 = 0xE6;
|
|
|
|
|
187 1 if(!EA)
|
|
|
|
|
188 1 {
|
|
|
|
|
189 2 IB_CON2 = 0x05;
|
|
|
|
|
190 2 if(FLASHCON)
|
|
|
|
|
191 2 {
|
|
|
|
|
192 3 IB_CON3 = 0x0A;
|
|
|
|
|
193 3 if(ucMcuFlashWrValid == 0x55)
|
|
|
|
|
194 3 {
|
|
|
|
|
195 4 IB_CON4 = 0x09;
|
|
|
|
|
196 4 if(XPAGE == (McuFlashAddr >> 8))
|
|
|
|
|
197 4 {
|
|
|
|
|
198 5 IB_CON5 = 0x06;
|
|
|
|
|
199 5 _nop_();
|
|
|
|
|
200 5 _nop_();
|
|
|
|
|
201 5 _nop_();
|
|
|
|
|
202 5 _nop_();
|
|
|
|
|
203 5 _nop_();
|
|
|
|
|
204 5
|
|
|
|
|
205 5 if(McuFlashBlankCheck(McuFlashAddr)) //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
206 5 {
|
|
|
|
|
207 6 if(McuFlashWrSector(McuFlashAddr, XramAddr)) //д<><D0B4>
|
|
|
|
|
208 6 {
|
|
|
|
|
209 7 if(McuFlashDataCheck(McuFlashAddr, XramAddr)) //У<><D0A3>
|
|
|
|
|
210 7 {
|
|
|
|
|
211 8 Result = 1;
|
|
|
|
|
212 8 }
|
|
|
|
|
213 7 }
|
|
|
|
|
214 6 }
|
|
|
|
|
215 5 }
|
|
|
|
|
216 4 }
|
|
|
|
|
217 3 }
|
|
|
|
|
218 2 }
|
|
|
|
|
219 1
|
|
|
|
|
220 1 IB_CON1 = 0;
|
|
|
|
|
221 1 IB_CON2 = 0;
|
|
|
|
|
222 1 IB_CON3 = 0;
|
|
|
|
|
223 1 IB_CON4 = 0;
|
|
|
|
|
224 1 IB_CON5 = 0;
|
|
|
|
|
225 1
|
|
|
|
|
226 1 McuFlashDis();
|
|
|
|
|
227 1 XPAGE = 0x00;
|
|
|
|
|
228 1 IrqEn();
|
|
|
|
|
229 1
|
|
|
|
|
230 1 return Result;
|
|
|
|
|
231 1 }
|
|
|
|
|
232
|
|
|
|
|
233
|
|
|
|
|
234
|
|
|
|
|
235
|
|
|
|
|
236
|
|
|
|
|
237
|
|
|
|
|
238 /*************************************************************************************************
|
2025-02-22 08:59:29 +00:00
|
|
|
|
C51 COMPILER V9.01 MCUFLASH 02/22/2025 15:36:22 PAGE 5
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
239 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashProcess
|
|
|
|
|
240 * <20><> <20><>: <20><>
|
|
|
|
|
241 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|
|
|
|
242 * <20><> <20><>: дMCU Flash<73><68>ͬʱ<CDAC><CAB1><EFBFBD>±<EFBFBD><C2B1><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>2<EFBFBD><32>
|
|
|
|
|
243 *************************************************************************************************/
|
|
|
|
|
244 void McuFlashProcess(void)
|
|
|
|
|
245 {
|
|
|
|
|
246 1 BOOL McuFlashBk1WrFailFlg = 0, McuFlashBk2WrFailFlg = 0;
|
|
|
|
|
247 1 U16 VoltageMin;
|
|
|
|
|
248 1
|
|
|
|
|
249 1 if(bMcuFlashWrFlg)
|
|
|
|
|
250 1 {
|
|
|
|
|
251 2 bMcuFlashWrFlg = 0;
|
|
|
|
|
252 2
|
|
|
|
|
253 2 ucMcuFlashWrValid = 0x55; //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
254 2 if(ucCellNum > 5) //6~10<31><30>Ӧ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ҫ<EFBFBD>ܵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>10V
|
|
|
|
|
255 2 {
|
|
|
|
|
256 3 VoltageMin = 10000;
|
|
|
|
|
257 3 }
|
|
|
|
|
258 2 else //3~5<><35>Ӧ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ҫ<EFBFBD>ܵ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>5V
|
|
|
|
|
259 2 {
|
|
|
|
|
260 3 VoltageMin = 5000;
|
|
|
|
|
261 3 }
|
|
|
|
|
262 2
|
|
|
|
|
263 2 if((Info.ulVoltage>=VoltageMin) && (E2uiCheckFlag==0x5AA5))
|
|
|
|
|
264 2 {
|
|
|
|
|
265 3 if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR)) //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
266 3 {
|
|
|
|
|
267 4 if(!McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR))
|
|
|
|
|
268 4 {
|
|
|
|
|
269 5 McuFlashBk1WrFailFlg = 1;
|
|
|
|
|
270 5 E2uiCheckFlag = 0xFFFF;
|
|
|
|
|
271 5 McuFlashWrOneByte(MCUFLASH_BK1_ADDR+510,0xFF);
|
|
|
|
|
272 5 McuFlashWrOneByte(MCUFLASH_BK1_ADDR+511,0xFF);
|
|
|
|
|
273 5 }
|
|
|
|
|
274 4 }
|
|
|
|
|
275 3
|
|
|
|
|
276 3 if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR))
|
|
|
|
|
277 3 {
|
|
|
|
|
278 4 if(!McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR))
|
|
|
|
|
279 4 {
|
|
|
|
|
280 5 McuFlashBk2WrFailFlg = 1;
|
|
|
|
|
281 5 E2uiCheckFlag = 0xFFFF;
|
|
|
|
|
282 5 McuFlashWrOneByte(MCUFLASH_BK2_ADDR+510,0xFF);
|
|
|
|
|
283 5 McuFlashWrOneByte(MCUFLASH_BK2_ADDR+511,0xFF);
|
|
|
|
|
284 5 }
|
|
|
|
|
285 4 }
|
|
|
|
|
286 3 }
|
|
|
|
|
287 2 else
|
|
|
|
|
288 2 {
|
|
|
|
|
289 3 McuFlashBk1WrFailFlg = 1;
|
|
|
|
|
290 3 McuFlashBk2WrFailFlg = 1;
|
|
|
|
|
291 3 }
|
|
|
|
|
292 2 ucMcuFlashWrValid = 0x00;
|
|
|
|
|
293 2
|
|
|
|
|
294 2 if(McuFlashBk1WrFailFlg && McuFlashBk2WrFailFlg) //<2F><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λFlash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
295 2 {
|
|
|
|
|
296 3 bMcuFlashErr = 1;
|
|
|
|
|
297 3 }
|
|
|
|
|
298 2 }
|
|
|
|
|
299 1 }
|
|
|
|
|
300
|
2025-02-22 08:59:29 +00:00
|
|
|
|
C51 COMPILER V9.01 MCUFLASH 02/22/2025 15:36:22 PAGE 6
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
301
|
|
|
|
|
302 /*************************************************************************************************
|
|
|
|
|
303 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashRead
|
|
|
|
|
304 * <20><> <20><>: SourceAddr<64><72>Դ<EFBFBD><D4B4>ַ<EFBFBD><D6B7>TargetAddr<64><72>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>Length<74><68><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|
|
|
|
305 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
|
|
|
|
306 * <20><> <20><>: <20>ж<EFBFBD>MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD>Ƿ<EFBFBD>Ϊ0x5AA5<41><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ƻ<EFBFBD>
|
|
|
|
|
307 *************************************************************************************************/
|
|
|
|
|
308 BOOL McuFlashRead(U16 SourceAddr, U8 xdata *TargetAddr, U16 Length)
|
|
|
|
|
309 {
|
|
|
|
|
310 1 U16 i;
|
|
|
|
|
311 1 BOOL Result = 1;
|
|
|
|
|
312 1 U8 xdata *data TargetAddr1 = TargetAddr; //*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<74>ؼ<EFBFBD><D8BC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ǰ<EFBFBD>ָ<EFBFBD><D6B8>TargetAddr1
|
|
|
|
|
-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>data<74><61><EFBFBD><EFBFBD>
|
|
|
|
|
313 1
|
|
|
|
|
314 1 IrqDis();
|
|
|
|
|
315 1 McuFlashEn();
|
|
|
|
|
316 1 McuWDTClear();
|
|
|
|
|
317 1 for(i=0; i<Length; i++)
|
|
|
|
|
318 1 {
|
|
|
|
|
319 2 *TargetAddr1 = CBYTE[SourceAddr+i];
|
|
|
|
|
320 2 TargetAddr1++;
|
|
|
|
|
321 2 }
|
|
|
|
|
322 1 McuFlashDis();
|
|
|
|
|
323 1 IrqEn();
|
|
|
|
|
324 1
|
|
|
|
|
325 1 return Result;
|
|
|
|
|
326 1 }
|
|
|
|
|
327
|
|
|
|
|
328
|
|
|
|
|
329 /*************************************************************************************************
|
|
|
|
|
330 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrWaitCheck
|
|
|
|
|
331 * <20><> <20><>: <20><>
|
|
|
|
|
332 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
|
|
|
|
|
333 * <20><> <20><>: <20><><EFBFBD><EFBFBD>ҪдMCU Flash<73><68><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ2Sִ<53><D6B4>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>IJ<DEB8><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
|
|
|
|
|
334 *************************************************************************************************/
|
|
|
|
|
335 void McuFlashWrWaitCheck(void)
|
|
|
|
|
336 {
|
|
|
|
|
337 1 if(bMcuFlashWrWaitFlg)
|
|
|
|
|
338 1 {
|
|
|
|
|
339 2 if(++bMcuFlashWrWaitCnt >= MCU_FLASH_WATI_DELAY)
|
|
|
|
|
340 2 {
|
|
|
|
|
341 3 bMcuFlashWrWaitFlg = 0;
|
|
|
|
|
342 3 bMcuFlashWrWaitCnt = 0;
|
|
|
|
|
343 3 bMcuFlashWrFlg = 1;
|
|
|
|
|
344 3 }
|
|
|
|
|
345 2 }
|
|
|
|
|
346 1 }
|
|
|
|
|
347
|
|
|
|
|
348
|
|
|
|
|
349 /*************************************************************************************************
|
|
|
|
|
350 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashCheckFlg
|
|
|
|
|
351 * <20><> <20><>: McuFlashAddr<64><72>MCU Flash<73><68><EFBFBD>ĵ<EFBFBD>ַ
|
|
|
|
|
352 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
|
|
|
|
353 * <20><> <20><>: <20>ж<EFBFBD>MCU Flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD>Ƿ<EFBFBD>Ϊ0x5AA5<41><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ƻ<EFBFBD>
|
|
|
|
|
354 *************************************************************************************************/
|
|
|
|
|
355 BOOL McuFlashCheckFlg(U16 McuFlashAddr)
|
|
|
|
|
356 {
|
|
|
|
|
357 1 BOOL Result = 0;
|
|
|
|
|
358 1
|
|
|
|
|
359 1 McuFlashEn();
|
|
|
|
|
360 1 if(CWORD[McuFlashAddr/2] == 0x5AA5)
|
|
|
|
|
361 1 {
|
2025-02-22 08:59:29 +00:00
|
|
|
|
C51 COMPILER V9.01 MCUFLASH 02/22/2025 15:36:22 PAGE 7
|
2025-02-06 07:35:32 +00:00
|
|
|
|
|
|
|
|
|
362 2 Result = 1;
|
|
|
|
|
363 2 }
|
|
|
|
|
364 1 McuFlashDis();
|
|
|
|
|
365 1
|
|
|
|
|
366 1 return Result;
|
|
|
|
|
367 1 }
|
|
|
|
|
368
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
|
|
|
|
CODE SIZE = 820 ----
|
|
|
|
|
CONSTANT SIZE = ---- ----
|
|
|
|
|
XDATA SIZE = 2 18
|
|
|
|
|
PDATA SIZE = ---- ----
|
|
|
|
|
DATA SIZE = ---- 2
|
|
|
|
|
IDATA SIZE = ---- ----
|
|
|
|
|
BIT SIZE = 3 8
|
|
|
|
|
END OF MODULE INFORMATION.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|