ZDBMS/output/Flash.lst

243 lines
11 KiB
Plaintext
Raw Normal View History

2025-02-06 07:35:32 +00:00
C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN .\output\Flash.obj
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_bootloader\Flash.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\header_bootloa
-der) DEBUG OBJECTEXTEND PRINT(.\output\Flash.lst) OBJECT(.\output\Flash.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 "MCURegister.h"
10 #include "C51_TYPE.H"
11 #include "Flash.h"
12 #include <intrins.h>
13 #include <ABSACC.H>
14
15 U8 ucMcuFlashWrValid;
16
17
18 /*************************************************************************************************
19 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashEraseSector
20 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>McuType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CODE<44><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EEPROM
21 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
22 * <20><> <20><>: <20><><EFBFBD><EFBFBD>Sector
23 *************************************************************************************************/
24 void McuFlashEraseSector(U32 xdata McuFlashAddr, U8 xdata McuType)
25 {
26 1 FLASHCON = McuType;
27 1 XPAGE = McuFlashAddr>>8;
28 1
29 1 IB_CON1 = 0xE6;
30 1 if(!EA) //<2F><>ֹ<EFBFBD><D6B9>д
31 1 {
32 2 IB_CON2 = 0x05;
33 2 if(FLASHCON == McuType) //<2F><>ֹ<EFBFBD><D6B9>д
34 2 {
35 3 IB_CON3 = 0x0A;
36 3 if(ucMcuFlashWrValid == 0x55) //<2F><>ֹ<EFBFBD><D6B9>д
37 3 {
38 4 IB_CON4 = 0x09;
39 4 if(XPAGE == (McuFlashAddr>>8)) //<2F><>ֹ<EFBFBD><D6B9>д
40 4 {
41 5 IB_CON5 = 0x06;
42 5 _nop_();
43 5 _nop_();
44 5 _nop_();
45 5 _nop_();
46 5 }
47 4 }
48 3 }
49 2 }
50 1
51 1 FLASHCON = MCU_TYPE_CODE;
52 1 }
53
54
C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 2
55 /*************************************************************************************************
56 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashBlankCheck
57 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
58 * <20><><EFBFBD><EFBFBD>ֵ: 0<><30><EFBFBD><EFBFBD>ȫ0<C8AB><30>Eraseʧ<65>ܣ<EFBFBD>1<EFBFBD><31>ȫ0<C8AB><30>Erase<73>ɹ<EFBFBD>
59 * <20><> <20><>: <20><>Erase<73><65>1<EFBFBD><31>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ȫΪ0
60 *************************************************************************************************/
61 BOOL McuFlashBlankCheck(U32 xdata McuFlashAddr, U8 xdata McuType)
62 {
63 1 BOOL Result = 1;
64 1 U16 i;
65 1
66 1 FLASHCON = McuType;
67 1 for(i=0; i<MCU_CODE_SECTOR_SIZE; i++)
68 1 {
69 2 if(CBYTE[McuFlashAddr+i] != 0x00)
70 2 {
71 3 Result = 0;
72 3 break;
73 3 }
74 2 }
75 1 FLASHCON = MCU_TYPE_CODE;
76 1
77 1 return Result;
78 1 }
79
80
81 /*************************************************************************************************
82 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashWrOneByte
83 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>WrData<74><61>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
84 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
85 * <20><> <20><>: д1<D0B4><31><EFBFBD>ֽ<EFBFBD>
86 *************************************************************************************************/
87 void McuFlashWrOneByte(U32 xdata McuFlashAddr, U8 xdata WrData, U8 xdata McuType)
88 {
89 1 FLASHCON = McuType;
90 1 XPAGE = McuFlashAddr>>8;
91 1 IB_OFFSET = McuFlashAddr % 256;
92 1
93 1 IB_DATA = WrData;
94 1 IB_CON1 = 0x6E;
95 1 if(!EA) //<2F><>ֹ<EFBFBD><D6B9>д
96 1 {
97 2 IB_CON2 = 0x05;
98 2 if(FLASHCON == McuType) //<2F><>ֹ<EFBFBD><D6B9>д
99 2 {
100 3 IB_CON3 = 0x0A;
101 3 if(ucMcuFlashWrValid == 0x55) //<2F><>ֹ<EFBFBD><D6B9>д
102 3 {
103 4 IB_CON4 = 0x09;
104 4 if(XPAGE == (McuFlashAddr>>8)) //<2F><>ֹ<EFBFBD><D6B9>д
105 4 {
106 5 IB_CON5 = 0x06;
107 5 _nop_();
108 5 _nop_();
109 5 _nop_();
110 5 _nop_();
111 5 _nop_();
112 5 }
113 4 }
114 3 }
115 2 }
116 1
C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 3
117 1 FLASHCON = MCU_TYPE_CODE;
118 1 }
119
120
121 /*************************************************************************************************
122 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: McuFlashRdOneByte
123 * <20><> <20><>: McuFlashAddr<64><72><EFBFBD><EFBFBD>ȡCODE<44><45><EFBFBD>ĵ<EFBFBD>ַ
124 * <20><><EFBFBD><EFBFBD>ֵ: <20><><EFBFBD>ص<EFBFBD>ǰCode<64>ֽ<EFBFBD>
125 * <20><> <20><>: <20><>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>
126 *************************************************************************************************/
127 U8 McuFlashRdOneByte(U32 xdata McuFlashAddr, U8 xdata McuType)
128 {
129 1 U8 GetData = 0;
130 1
131 1 FLASHCON = McuType;
132 1 GetData = CBYTE[McuFlashAddr];
133 1 FLASHCON = MCU_TYPE_CODE;
134 1 return GetData;
135 1 }
136
137
138 /*************************************************************************************************
139 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: BootProgram
140 * <20><> <20><>: <20><>
141 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
142 * <20><> <20><>: Boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Erase->Program->Verify
143 ÿ<><C3BF><EFBFBD><EFBFBD>1<EFBFBD><31>Sector<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
144 *************************************************************************************************/
145 U8 BootProgram(void)
146 {
147 1 U8 i, McuCode, McuFlashType;
148 1 U16 j;
149 1 U32 McuFlashAddr;
150 1
151 1 for(i=0; i<IAP_BK_CODE_SIZE/MCU_CODE_SECTOR_SIZE; i++) //<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SectorΪ<72>
-<2D>λ
152 1 {
153 2 BootMcuWdtClear();
154 2 if(i < IAP_CODE_SIZE/MCU_CODE_SECTOR_SIZE) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>CODE<44><45>29K
155 2 {
156 3 McuFlashType = MCU_TYPE_CODE; //IAP<41><50><EFBFBD><EFBFBD>CODE<44><45>
157 3 McuFlashAddr = IAP_CODE_START_ADDR + (U16)i*MCU_CODE_SECTOR_SIZE; //<2F>ӵ<EFBFBD>5K<35><4B>ʼ
158 3 }
159 2 else
160 2 {
161 3 McuFlashType = MCU_TYPE_E2P; //IAP<41><50><EFBFBD><EFBFBD>EEPROM<4F><4D>
162 3 McuFlashAddr = (U16)i*MCU_CODE_SECTOR_SIZE - IAP_CODE_SIZE;
163 3 }
164 2 ucMcuFlashWrValid = 0x55;
165 2 McuFlashEraseSector(McuFlashAddr, McuFlashType); //<2F><><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ
166 2 if(McuFlashBlankCheck(McuFlashAddr, McuFlashType)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
167 2 {
168 3 for(j=0; j<MCU_CODE_SECTOR_SIZE; j++) //<2F><><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>APP<50><50>Ӧ<EFBFBD><D3A6>ַ
169 3 {
170 4 McuCode = McuFlashRdOneByte(IAP_BK_CODE_START_ADDR+j+(U16)i*MCU_CODE_SECTOR_SIZE, MCU_TYPE_CODE); //ya
-ngweilei <20>˴<EFBFBD><CBB4>̻<EFBFBD>Ϊ<EFBFBD><CEAA>flashȡ<68><C8A1><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡCODE(1<>ֽ<EFBFBD>)
171 4 McuFlashWrOneByte(McuFlashAddr+j, McuCode, McuFlashType); //<2F><>CODEд<45><D0B4>APPִ<50><D6B4><EFBFBD><EFBFBD>
172 4 if(McuCode != McuFlashRdOneByte(McuFlashAddr+j, McuFlashType)) //У<><D0A3>д<EFBFBD><D0B4><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
173 4 {
174 5 return (BOOT_PGR_WR_ERR);
175 5 }
176 4 }
C51 COMPILER V9.01 FLASH 12/22/2023 12:15:06 PAGE 4
177 3 }
178 2 else
179 2 {
180 3 return (BOOT_PGR_ERASE_ERR);
181 3 }
182 2 }
183 1
184 1 return (BOOT_PGR_OK);
185 1 }
186
187
188 /*************************************************************************************************
189 * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: BootUpgradeCode
190 * <20><> <20><>: <20><>
191 * <20><><EFBFBD><EFBFBD>ֵ: <20><>
192 * <20><> <20><>: Boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Erase->Program->Verify
193 *************************************************************************************************/
194 BOOL BootUpgradeCode(void)
195 {
196 1 BOOL Result = 1;
197 1
198 1 if(BootProgram() == BOOT_PGR_OK)
199 1 {
200 2 McuFlashEraseSector(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //д<><D0B4><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
201 2 Result = McuFlashBlankCheck(BOOT_FLG_START_ADDR, MCU_TYPE_CODE); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
202 2 }
203 1 else
204 1 {
205 2 Result = 0;
206 2 }
207 1
208 1 return Result;
209 1 }
210
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 617 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 32
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)