📄 flash.cod
字号:
; 149 : return FALSE;
; 150 : }
; 151 : pfnStartErase = StartEraseFlashC3_1x16;
; 152 : pfnContinueErase = ContinueEraseFlashC3_1x16;
; 153 : pfnFinishErase = FinishEraseFlashC3_1x16;
; 154 : pfnWriteFlash = WriteFlashC3_1x16;
; 155 :
; 156 : #elif (EP93XX_FLASH_TYPE == FLASH_TYPE_P3)
; 157 :
; 158 : EdbgOutputDebugString("1X16 P3 Flash Defined\r\n" );
; 159 : if( !QueryIntelFlashP30_1x16() ){
; 160 : EdbgOutputDebugString("Defined P3 Flash, but not found. stop.\r\n" );
; 161 : return FALSE;
; 162 : }
; 163 : pfnStartErase = StartEraseFlashP30_1x16;
; 164 : pfnContinueErase = ContinueEraseFlashP30_1x16;
; 165 : pfnFinishErase = FinishEraseFlashP30_1x16;
; 166 : pfnWriteFlash = WriteFlashP30_1x16;
; 167 :
; 168 : #elif (EP93XX_FLASH_TYPE == FLASH_TYPE_AMD)
; 169 : EdbgOutputDebugString("1X16 AMD Flash Defined\r\n" );
; 170 : if(!AmdFlashSpansion29LV320D_1x16() ){
; 171 : EdbgOutputDebugString("Defined C3 Flash, but not found. stop.\r\n" );
; 172 : return FALSE;
; 173 : }
; 174 : pfnStartErase = StartEraseSpansion29LV320D_1x16;
; 175 : pfnContinueErase = ContinueEraseSpansion29LV320D_1x16;
; 176 : pfnFinishErase = FinishEraseSpansion29LV320D_1x16;
; 177 : pfnWriteFlash = WriteSpansion29LV320D_1x16;
; 178 :
; 179 : #elif (EP93XX_FLASH_TYPE == FLASH_TYPE_J3)
; 180 :
; 181 : EdbgOutputDebugString("1X16 J3 Flash Defined\r\n" );
; 182 :
; 183 : pfnStartErase = StartEraseFlashJ3_1x16;
; 184 : pfnContinueErase = ContinueEraseFlashJ3_1x16;
; 185 : pfnFinishErase = FinishEraseFlashJ3_1x16;
; 186 : pfnWriteFlash = WriteFlashJ3_1x16;
; 187 : #else
; 188 : #error "Error, Please specify Flash Type\r\n"
; 189 : #endif
; 190 :
; 191 : #elif EP93XX_FLASH_WIDTH == 32
; 192 :
; 193 : #if EP93XX_FLASH_TYPE == FLASH_TYPE_C3
; 194 : EdbgOutputDebugString("2X16 C3 Flash Defined\r\n" );
; 195 : if(!QueryIntelFlashC3_2x16() ){
; 196 : EdbgOutputDebugString("Defined C3 Flash, but not found. stop.\r\n" );
; 197 : return FALSE;
; 198 : }
; 199 : pfnStartErase = StartEraseFlashC3_2x16;
; 200 : pfnContinueErase = ContinueEraseFlashC3_2x16;
; 201 : pfnFinishErase = FinishEraseFlashC3_2x16;
; 202 : pfnWriteFlash = WriteFlashC3_2x16;
; 203 :
; 204 : #elif EP93XX_FLASH_TYPE == FLASH_TYPE_P3
; 205 : EdbgOutputDebugString("2X16 P3 Flash Defined\r\n" );
; 206 : if(!QueryIntelFlashP30_2x16() ){
; 207 : EdbgOutputDebugString("Defined P3 Flash, but not found. stop.\r\n" );
; 208 : return FALSE;
; 209 : }
; 210 : pfnStartErase = StartEraseFlashP30_2x16;
; 211 : pfnContinueErase = ContinueEraseFlashP30_2x16;
; 212 : pfnFinishErase = FinishEraseFlashP30_2x16;
; 213 : pfnWriteFlash = WriteFlashP30_2x16;
; 214 :
; 215 : #elif EP93XX_FLASH_TYPE == FLASH_TYPE_AMD
; 216 : EdbgOutputDebugString("2X16 AMD Flash Defined\r\n" );
; 217 : if(!AmdFlashSpansion29LV320D_2x16() ){
; 218 : EdbgOutputDebugString("Defined C3 Flash, but not found. stop.\r\n" );
; 219 : return FALSE;
; 220 : }
; 221 : pfnStartErase = StartEraseSpansion29LV320D_2x16;
; 222 : pfnContinueErase = ContinueEraseSpansion29LV320D_2x16;
; 223 : pfnFinishErase = FinishEraseSpansion29LV320D_2x16;
; 224 : pfnWriteFlash = WriteSpansion29LV320D_2x16;
; 225 :
; 226 : #elif (EP93XX_FLASH_TYPE == FLASH_TYPE_J3)
; 227 :
; 228 : EdbgOutputDebugString("2X16 J3 Flash Defined\r\n" );
00094 e59f0074 ldr r0, [pc, #0x74]
00098 eb000000 bl EdbgOutputDebugString
; 229 : pfnStartErase = StartEraseFlashJ3_2x16;
0009c e59f2068 ldr r2, [pc, #0x68]
000a0 e59f3060 ldr r3, [pc, #0x60]
000a4 e5832000 str r2, [r3]
; 230 : pfnContinueErase = ContinueEraseFlashJ3_2x16;
000a8 e59f2054 ldr r2, [pc, #0x54]
000ac e59f304c ldr r3, [pc, #0x4C]
000b0 e5832000 str r2, [r3]
; 231 : pfnFinishErase = FinishEraseFlashJ3_2x16;
000b4 e59f2040 ldr r2, [pc, #0x40]
000b8 e59f3038 ldr r3, [pc, #0x38]
000bc e5832000 str r2, [r3]
; 232 : pfnWriteFlash = WriteFlashJ3_2x16;
000c0 e59f202c ldr r2, [pc, #0x2C]
000c4 e59f3024 ldr r3, [pc, #0x24]
000c8 e5832000 str r2, [r3]
; 233 : #else
; 234 : #error "Error, Please specify Flash Type\r\n"
; 235 : #endif
; 236 :
; 237 : #else
; 238 : #error "Error, Flash width is not specified\n"
; 239 :
; 240 : #endif
; 241 :
; 242 : EdbgOutputDebugString("Initialize Flash, succeed\r\n" );
000cc e59f0018 ldr r0, [pc, #0x18]
000d0 eb000000 bl EdbgOutputDebugString
; 243 : return TRUE;
000d4 e3a03001 mov r3, #1
000d8 e58d300c str r3, [sp, #0xC]
000dc e59d000c ldr r0, [sp, #0xC]
; 244 : }
000e0 e28dd010 add sp, sp, #0x10
000e4 e49de004 ldr lr, [sp], #4
000e8 e12fff1e bx lr
000ec |$L38427|
000ec 00000000 DCD |??_C@_0BM@BMFHPIME@Initialize?5Flash?0?5succeed?$AN?6?$AA@|
000f0 00000000 DCD |pfnWriteFlash|
000f4 00000000 DCD |WriteFlashJ3_2x16|
000f8 00000000 DCD |pfnFinishErase|
000fc 00000000 DCD |FinishEraseFlashJ3_2x16|
00100 00000000 DCD |pfnContinueErase|
00104 00000000 DCD |ContinueEraseFlashJ3_2x16|
00108 00000000 DCD |pfnStartErase|
0010c 00000000 DCD |StartEraseFlashJ3_2x16|
00110 00000000 DCD |??_C@_0BI@OJJDFABG@2X16?5J3?5Flash?5Defined?$AN?6?$AA@|
00114 80080018 DCD 0x80080018
00118 |$M38423|
ENDP ; |InitializeFlash|
EXPORT |OEMIsFlashAddr|
00000 AREA |.text| { |OEMIsFlashAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMIsFlashAddr|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMIsFlashAddr| } ; comdat associative
|$T38434| DCD |$L38433|
DCD 0x40001404
; Function compile flags: /Ods
00000 AREA |.text| { |OEMIsFlashAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMIsFlashAddr| PROC
; 256 : {
00000 |$L38433|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M38431|
; 257 : BOOL bReturnValue = FALSE;
00010 e3a03000 mov r3, #0
00014 e58d3000 str r3, [sp]
; 258 :
; 259 : if(PHYSICAL_ADDR_FLASH <= dwAddr &&
; 260 : dwAddr < (PHYSICAL_ADDR_FLASH + FLASH_SIZE ))
00018 e59d3010 ldr r3, [sp, #0x10]
0001c e3530206 cmp r3, #6, 4
00020 3a000004 bcc |$L38221|
00024 e59d3010 ldr r3, [sp, #0x10]
00028 e3530462 cmp r3, #0x62, 8
0002c 2a000001 bcs |$L38221|
; 261 : {
; 262 : bReturnValue = TRUE;
00030 e3a03001 mov r3, #1
00034 e58d3000 str r3, [sp]
00038 |$L38221|
; 263 : }
; 264 :
; 265 : return bReturnValue;
00038 e59d3000 ldr r3, [sp]
0003c e58d3004 str r3, [sp, #4]
00040 e59d0004 ldr r0, [sp, #4]
; 266 : }
00044 e28dd008 add sp, sp, #8
00048 e89d6000 ldmia sp, {sp, lr}
0004c e12fff1e bx lr
00050 |$M38432|
ENDP ; |OEMIsFlashAddr|
EXPORT |OEMMapMemAddr|
00000 AREA |.text| { |OEMMapMemAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMMapMemAddr|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMMapMemAddr| } ; comdat associative
|$T38442| DCD |$L38441|
DCD 0x40002204
; Function compile flags: /Ods
00000 AREA |.text| { |OEMMapMemAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMMapMemAddr| PROC
; 289 : {
00000 |$L38441|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd00c sub sp, sp, #0xC
00010 |$M38439|
; 290 : LPBYTE pReturnValue;
; 291 :
; 292 : if(OEMIsFlashAddr(dwImageStart))
00010 e59d0014 ldr r0, [sp, #0x14]
00014 eb000000 bl OEMIsFlashAddr
00018 e58d0008 str r0, [sp, #8]
0001c e59d3008 ldr r3, [sp, #8]
00020 e3530000 cmp r3, #0
00024 0a000004 beq |$L38229|
; 293 : {
; 294 : #if (defined EDB9302A )
; 295 : pReturnValue = (LPBYTE)( (dwAddr - FLASH_VIRTUAL_MEMORY) + (0x00000000| FLASH_CACHE_MEMORY_OFFSET) );
; 296 : #else
; 297 : pReturnValue = (LPBYTE)( (dwAddr - FLASH_VIRTUAL_MEMORY) + FLASH_CACHE_PHYSICAL_MEMORY );
00028 e59d3018 ldr r3, [sp, #0x18]
0002c e2433206 sub r3, r3, #6, 4
00030 e2833603 add r3, r3, #3, 12
00034 e58d3000 str r3, [sp]
; 298 : #endif
; 299 :
; 300 : }
; 301 : //
; 302 : // Hack hack hack. Looks like eboot thinks that this is the wrong address.
; 303 : //
; 304 : else if((0x80000000 < dwAddr) && (dwAddr < 0x84000000 ))
00038 ea00000c b |$L38231|
0003c |$L38229|
0003c e59d3018 ldr r3, [sp, #0x18]
00040 e3530102 cmp r3, #2, 2
00044 9a000007 bls |$L38232|
00048 e59d3018 ldr r3, [sp, #0x18]
0004c e3530321 cmp r3, #0x21, 6
00050 2a000004 bcs |$L38232|
; 305 : {
; 306 : pReturnValue = (LPBYTE)(dwAddr & 0x7FFFFFFF);
00054 e59d2018 ldr r2, [sp, #0x18]
00058 e3e03102 mvn r3, #2, 2
0005c e0023003 and r3, r2, r3
00060 e58d3000 str r3, [sp]
; 307 : }
; 308 : else
00064 ea000001 b |$L38234|
00068 |$L38232|
; 309 : {
; 310 : #if (defined EDB9302A )
; 311 : pReturnValue = (LPBYTE)(dwAddr & 0x0FFFFFFF);
; 312 : #else
; 313 : pReturnValue = (LPBYTE)(dwAddr);
00068 e59d3018 ldr r3, [sp, #0x18]
0006c e58d3000 str r3, [sp]
00070 |$L38234|
00070 |$L38231|
; 314 : #endif
; 315 : }
; 316 :
; 317 :
; 318 : return pReturnValue;
00070 e59d3000 ldr r3, [sp]
00074 e58d3004 str r3, [sp, #4]
00078 e59d0004 ldr r0, [sp, #4]
; 319 : }
0007c e28dd00c add sp, sp, #0xC
00080 e89d6000 ldmia sp, {sp, lr}
00084 e12fff1e bx lr
00088 |$M38440|
ENDP ; |OEMMapMemAddr|
EXPORT |OEMStartEraseFlash|
EXPORT |??_C@_0EC@FKDPAOHI@ERROR?3?5OEMStartEraseFlash?5?9?5not?5@| [ DATA ] ; `string'
EXPORT |??_C@_0FD@DAOMBOHE@ERROR?3?5OEMStartEraseFlash?5?9?5leng@| [ DATA ] ; `string'
EXPORT |??_C@_0EC@GKLNPDJB@ERROR?3?5No?5Flash?5located?5in?5the?5l@| [ DATA ] ; `string'
EXPORT |??_C@_0DJ@CGJEFNCE@Erasing?5flash?5blocks?3?5start?5Addr@| [ DATA ] ; `string'
EXPORT |??_C@_0CC@NBADOKKL@Error?0?5NO?5Flash?5is?5defined?0stop?$AN@| [ DATA ] ; `string'
00000 AREA |.text| { |OEMStartEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMStartEraseFlash|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMStartEraseFlash| } ; comdat associative
|$T38450| DCD |$L38449|
DCD 0x40005f04
00000 AREA |.rdata| { |??_C@_0CC@NBADOKKL@Error?0?5NO?5Flash?5is?5defined?0stop?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CC@NBADOKKL@Error?0?5NO?5Flash?5is?5defined?0stop?$AN@| DCB "Erro"
DCB "r, NO Flash is defined,stop", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0DJ@CGJEFNCE@Erasing?5flash?5blocks?3?5start?5Addr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DJ@CGJEFNCE@Erasing?5flash?5blocks?3?5start?5Addr@| DCB "Erasing "
DCB "flash blocks: start Addr = 0x%x length = 0x%x", 0xd, 0xa
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0EC@GKLNPDJB@ERROR?3?5No?5Flash?5located?5in?5the?5l@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EC@GKLNPDJB@ERROR?3?5No?5Flash?5located?5in?5the?5l@| DCB "ERROR:"
DCB " No Flash located in the locations from %x (%x)len %x(%x"
DCB ")", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0FD@DAOMBOHE@ERROR?3?5OEMStartEraseFlash?5?9?5leng@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0FD@DAOMBOHE@ERROR?3?5OEMStartEraseFlash?5?9?5leng@| DCB "ERROR: O"
DCB "EMStartEraseFlash - length isn't an integral number of l"
DCB "ongwords (0x%x).", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0EC@FKDPAOHI@ERROR?3?5OEMStartEraseFlash?5?9?5not?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EC@FKDPAOHI@ERROR?3?5OEMStartEraseFlash?5?9?5not?5@| DCB "ERROR: "
DCB "OEMStartEraseFlash - not a flash address (0x%x or 0x%x)."
DCB 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |OEMStartEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMStartEraseFlash| PROC
; 334 : {
00000 |$L38449|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd01c sub sp, sp, #0x1C
00010 |$M38447|
; 335 : ULONG i = 0;
00010 e3a03000 mov r3, #0
00014 e58d3004 str r3, [sp, #4]
; 336 : ULONG nNumBlocks = 0;
00018 e3a03000 mov r3, #0
0001c e58d3008 str r3, [sp, #8]
; 337 : //
; 338 : // Make sure the start and end addresses are in flash.
; 339 : //
; 340 : if (!OEMIsFlashAddr(dwStartAddr) || !OEMIsFlashAddr(dwStartAddr + dwLength - 1))
00020 e59d0024 ldr r0, [sp, #0x24]
00024 eb000000 bl OEMIsFlashAddr
00028 e58d0010 str r0, [sp, #0x10]
0002c e59d3010 ldr r3, [sp, #0x10]
00030 e3530000 cmp r3, #0
00034 0a000008 beq |$L38245|
00038 e59d2024 ldr r2, [sp, #0x24]
0003c e59d3028 ldr r3, [sp, #0x28]
00040 e0823003 add r3, r2, r3
00044 e2430001 sub r0, r3, #1
00048 eb000000 bl OEMIsFlashAddr
0004c e58d0014 str r0, [sp, #0x14]
00050 e59d3014 ldr r3, [sp, #0x14]
00054 e3530000 cmp r3, #0
00058 1a000009 bne |$L38244|
0005c |$L38245|
; 341 : {
; 342 : EdbgOutputDebugString
; 343 : (
; 344 : "ERROR: OEMStartEraseFlash - not a flash address (0x%x or 0x%x)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -