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

📄 flash.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 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 + -