📄 flash.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091
TTL D:\WINCE500\PLATFORM\BERRYDALE\SRC\BOOTLOADER\EBOOT\.\flash.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.bss|, NOINIT
|g_BlockArrayType| % 0x4
|g_FlashDeviceType| % 0x4
00000 AREA |.data|, DATA
|L3_BLOCK_SIZE| DCD 0x10000
|ERASE_BLOCKS| DCD 0x80
|FLASH_SIZE| DCD 0x2000000
00000 AREA |.rdata|, DATA, READONLY
|EdbgVendorIds| DCW 0x0
DCW 0x0
DCD 0x4033
DCB 0x1
DCB "AD", 0x0
DCW 0x1050
DCW 0x940
DCD 0x4005
DCB 0x1
DCB "LS", 0x0
DCW 0x1050
DCW 0x940
DCD 0x2078
DCB 0x1
DCB "LS", 0x0
DCW 0x10ec
DCW 0x8029
DCD 0xc0f0
DCB 0x1
DCB "KS", 0x0
DCW 0x10ec
DCW 0x8129
DCD 0x0
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0x900b
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xd0c9
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xe04c
DCB 0x4
DCB "RT", 0x0
DCW 0x1186
DCW 0x1300
DCD 0x50ba
DCB 0x4
DCB "DL", 0x0
DCW 0x100b
DCW 0x20
DCD 0xa0cc
DCB 0x5
DCB "NG", 0x0
DCW 0x10b7
DCW 0x9050
DCD 0x6008
DCB 0x6
DCB "3C", 0x0
DCW 0x10b7
DCW 0x9200
DCD 0x476
DCB 0x6
DCB "3C", 0x0
EXPORT |OEMIsFlashAddr|
IMPORT |OALPAtoVA|
; File d:\wince500\platform\berrydale\src\bootloader\eboot\flash.c
00000 AREA |.text| { |OEMIsFlashAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMIsFlashAddr|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMIsFlashAddr| } ; comdat associative
|$T40281| DCD |$L40280|
DCD 0x40000f01
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMIsFlashAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMIsFlashAddr| PROC
; 79 : {
00000 |$L40280|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M40278|
00004 e1a04000 mov r4, r0
; 80 : DWORD dwVirtFlashStart = (DWORD) OALPAtoVA(MAINSTONEII_BASE_PA_BOOT_FLASH, TRUE);
00008 e3a01001 mov r1, #1
0000c e3a00000 mov r0, #0
00010 eb000000 bl OALPAtoVA
; 81 :
; 82 : if ((dwAddr >= dwVirtFlashStart) && (dwAddr <= (dwVirtFlashStart + MAINSTONEII_SIZE_BOOT_FLASH)))
00014 e1540000 cmp r4, r0
00018 3a000004 bcc |$L39989|
0001c e2803402 add r3, r0, #2, 8
00020 e1540003 cmp r4, r3
; 83 : {
; 84 : return(TRUE);
00024 93a00001 movls r0, #1
; 88 : }
00028 98bd4010 ldmlsia sp!, {r4, lr}
0002c 912fff1e bxls lr
00030 |$L39989|
; 85 : }
; 86 :
; 87 : return(FALSE);
00030 e3a00000 mov r0, #0
; 88 : }
00034 e8bd4010 ldmia sp!, {r4, lr}
00038 e12fff1e bx lr
0003c |$M40279|
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
|$T40292| DCD |$L40291|
DCD 0x40000d01
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMMapMemAddr| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMMapMemAddr| PROC
; 99 : {
00000 |$L40291|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M40289|
00004 e1a04001 mov r4, r1
00008 e1a05000 mov r5, r0
; 100 :
; 101 : if (OEMIsFlashAddr(dwAddr))
0000c e1a00004 mov r0, r4
00010 eb000000 bl OEMIsFlashAddr
00014 e3500000 cmp r0, #0
; 102 : {
; 103 : // The image being downloaded is a flash image - temporarily
; 104 : // cache the image in RAM until it's completely downloaded.
; 105 : //
; 106 : dwAddr -= dwImageStart;
; 107 : //TODO - constant.
; 108 : dwAddr += 0x80100000;
00018 13a0247f movne r2, #0x7F, 8
0001c 1382260f orrne r2, r2, #0xF, 12
00020 10443005 subne r3, r4, r5
00024 10434002 subne r4, r3, r2
; 109 : }
; 110 :
; 111 : return((LPBYTE) (dwAddr));
00028 e1a00004 mov r0, r4
; 112 : }
0002c e8bd4030 ldmia sp!, {r4, r5, lr}
00030 e12fff1e bx lr
00034 |$M40290|
ENDP ; |OEMMapMemAddr|
EXPORT |OEMStartEraseFlash|
00000 AREA |.text| { |OEMStartEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMStartEraseFlash|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMStartEraseFlash| } ; comdat associative
|$T40301| DCD |$L40300|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMStartEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMStartEraseFlash| PROC
; 122 : {
00000 |$L40300|
00000 |$M40298|
; 123 : return(TRUE);
00000 e3a00001 mov r0, #1
; 124 : }
00004 e12fff1e bx lr
00008 |$M40299|
ENDP ; |OEMStartEraseFlash|
EXPORT |OEMContinueEraseFlash|
00000 AREA |.text| { |OEMContinueEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMContinueEraseFlash|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMContinueEraseFlash| } ; comdat associative
|$T40308| DCD |$L40307|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMContinueEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMContinueEraseFlash| PROC
; 135 : {
00000 |$L40307|
00000 |$M40305|
; 136 : }
00000 e12fff1e bx lr
00004 |$M40306|
ENDP ; |OEMContinueEraseFlash|
EXPORT |OEMFinishEraseFlash|
00000 AREA |.text| { |OEMFinishEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMFinishEraseFlash|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMFinishEraseFlash| } ; comdat associative
|$T40317| DCD |$L40316|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMFinishEraseFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMFinishEraseFlash| PROC
; 146 : {
00000 |$L40316|
00000 |$M40314|
; 147 : return(TRUE);
00000 e3a00001 mov r0, #1
; 148 : }
00004 e12fff1e bx lr
00008 |$M40315|
ENDP ; |OEMFinishEraseFlash|
EXPORT |??_C@_0DH@OBMGOPJF@INFO?3?5DetectFlashDevice?3?5flash?5t@| [ DATA ] ; `string'
IMPORT |EdbgOutputDebugString|
00000 AREA |.text| { |DetectFlashDevice| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DetectFlashDevice|, PDATA, SELECTION=5, ASSOC=|.text| { |DetectFlashDevice| } ; comdat associative
|$T40328| DCD |$L40327|
DCD 0x40003201
00000 AREA |.rdata| { |??_C@_0DH@OBMGOPJF@INFO?3?5DetectFlashDevice?3?5flash?5t@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DH@OBMGOPJF@INFO?3?5DetectFlashDevice?3?5flash?5t@| DCB "INFO: De"
DCB "tectFlashDevice: flash type is undetermined.", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |DetectFlashDevice| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DetectFlashDevice| PROC
; 174 : {
00000 |$L40327|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M40325|
; 175 : UINT32 nDeviceID = 0;
; 176 : volatile UINT32 *pFlash = (volatile UINT32 *)(FlashBaseAddress);
; 177 :
; 178 : // Get the flash part ID.
; 179 : //
; 180 : *pFlash = 0x00900090;
00004 e3a03609 mov r3, #9, 12
00008 e3833090 orr r3, r3, #0x90
; 181 : nDeviceID = (*(pFlash + 1) & 0xFFFF);
; 182 :
; 183 : // Put the flash part in read array mode.
; 184 : //
; 185 : *pFlash = 0x00FF00FF;
; 186 :
; 187 : if ((nDeviceID >= FLASH_DEVICE_ID_L18_MIN) && (nDeviceID <= FLASH_DEVICE_ID_L18_MAX))
0000c e5803000 str r3, [r0]
00010 e5903004 ldr r3, [r0, #4]
00014 e3a01cff mov r1, #0xFF, 24
00018 e38110ff orr r1, r1, #0xFF
0001c e3a0eb22 mov lr, #0x22, 22
00020 e0031001 and r1, r3, r1
00024 e38ee00c orr lr, lr, #0xC
00028 e3a028ff mov r2, #0xFF, 16
0002c e041300e sub r3, r1, lr
00030 e38220ff orr r2, r2, #0xFF
00034 e3530003 cmp r3, #3
00038 e5802000 str r2, [r0]
; 188 : {
; 189 : //EdbgOutputDebugString("INFO: DetectFlashDevice: flash type is L18.\r\n");
; 190 : return(L18);
0003c 93a00001 movls r0, #1
; 215 : }
00040 949de004 ldrls lr, [sp], #4
00044 912fff1e bxls lr
; 191 : }
; 192 : if ((nDeviceID >= FLASH_DEVICE_ID_L30_MIN) && (nDeviceID <= FLASH_DEVICE_ID_L30_MAX))
00048 e3a03b22 mov r3, #0x22, 22
0004c e3833012 orr r3, r3, #0x12
00050 e0413003 sub r3, r1, r3
00054 e3530003 cmp r3, #3
; 193 : {
; 194 : //EdbgOutputDebugString("INFO: DetectFlashDevice: flash type is L30.\r\n");
; 195 : return(L30);
00058 93a00002 movls r0, #2
; 215 : }
0005c 949de004 ldrls lr, [sp], #4
00060 912fff1e bxls lr
; 196 : }
; 197 : if ((nDeviceID >= FLASH_DEVICE_ID_K3_MIN) && (nDeviceID <= FLASH_DEVICE_ID_K3_MAX))
00064 e3a03b22 mov r3, #0x22, 22
00068 e3833001 orr r3, r3, #1
0006c e0413003 sub r3, r1, r3
00070 e3530002 cmp r3, #2
; 198 : {
; 199 : //EdbgOutputDebugString("INFO: DetectFlashDevice: flash type is K3.\r\n");
; 200 : return(K3);
00074 93a00003 movls r0, #3
; 215 : }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -