⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.cod

📁 一个berry eboot 源代码
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 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 + -