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

📄 flash.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
  001e0	e59d2014	 ldr         r2, [sp, #0x14]
  001e4	e3a0360d	 mov         r3, #0xD, 12
  001e8	e38330d0	 orr         r3, r3, #0xD0
  001ec	e5823000	 str         r3, [r2]

; 401  : 
; 402  :         // DelayInuSec(500);
; 403  :         
; 404  :         //
; 405  :         // Occasionally write out a dot so they don't think
; 406  :         // the system is dead.
; 407  :         //
; 408  :         if(((ULONG)&pulDest[ulCount>>2] & (FLASH_BLOCK_SIZE - 1)) == 0)

  001f0	e59d3018	 ldr         r3, [sp, #0x18]
  001f4	e1a01123	 mov         r1, r3, lsr #2
  001f8	e3a03004	 mov         r3, #4
  001fc	e0020391	 mul         r2, r1, r3
  00200	e59d300c	 ldr         r3, [sp, #0xC]
  00204	e0832002	 add         r2, r3, r2
  00208	e3a03701	 mov         r3, #1, 14
  0020c	e2433001	 sub         r3, r3, #1
  00210	e1120003	 tst         r2, r3
  00214	1a000001	 bne         |$L38179|

; 409  :         {
; 410  :             EdbgOutputDebugString(".");

  00218	e59f00b4	 ldr         r0, [pc, #0xB4]
  0021c	eb000000	 bl          EdbgOutputDebugString
  00220		 |$L38179|

; 411  :         }            
; 412  :         //
; 413  :         // Wait for the Flash block command to succeed.
; 414  :         //
; 415  :         bSuccess = WaitForReady(pulBlockAddress, 6000, EXT_STATUS_WBUFFER_READY);

  00220	e3a03502	 mov         r3, #2, 10
  00224	e3832080	 orr         r2, r3, #0x80
  00228	e3a03d5d	 mov         r3, #0x5D, 26
  0022c	e3831030	 orr         r1, r3, #0x30
  00230	e59d0014	 ldr         r0, [sp, #0x14]
  00234	eb000000	 bl          WaitForReady
  00238	e58d0034	 str         r0, [sp, #0x34]
  0023c	e59d3034	 ldr         r3, [sp, #0x34]
  00240	e58d3004	 str         r3, [sp, #4]

; 416  :         if(!bSuccess)

  00244	e59d3004	 ldr         r3, [sp, #4]
  00248	e3530000	 cmp         r3, #0
  0024c	1a000011	 bne         |$L38180|

; 417  :         {
; 418  :             EdbgOutputDebugString("FLASH_BLOCK_PROGRAM_RESUME - Failed\n.");

  00250	e59f0078	 ldr         r0, [pc, #0x78]
  00254	eb000000	 bl          EdbgOutputDebugString

; 419  :             EdbgOutputDebugString("pulBlockAddress  = %x.\n",(ULONG)pulBlockAddress);

  00258	e59d1014	 ldr         r1, [sp, #0x14]
  0025c	e59f0068	 ldr         r0, [pc, #0x68]
  00260	eb000000	 bl          EdbgOutputDebugString

; 420  :             EdbgOutputDebugString("*pulBlockAddress = %x.\n",(ULONG)*pulBlockAddress);

  00264	e59d3014	 ldr         r3, [sp, #0x14]
  00268	e5931000	 ldr         r1, [r3]
  0026c	e59f0054	 ldr         r0, [pc, #0x54]
  00270	eb000000	 bl          EdbgOutputDebugString

; 421  :             *pulBlockAddress = FLASH_READ_STATUS;

  00274	e59d2014	 ldr         r2, [sp, #0x14]
  00278	e3a03607	 mov         r3, #7, 12
  0027c	e3833070	 orr         r3, r3, #0x70
  00280	e5823000	 str         r3, [r2]

; 422  :             EdbgOutputDebugString("*FLASH_READ_STATUS pulBlockAddress = %x.\n",(ULONG)*pulBlockAddress);

  00284	e59d3014	 ldr         r3, [sp, #0x14]
  00288	e5931000	 ldr         r1, [r3]
  0028c	e59f0030	 ldr         r0, [pc, #0x30]
  00290	eb000000	 bl          EdbgOutputDebugString
  00294		 |$L38186|

; 423  :             while(1);

  00294	eafffffe	 b           |$L38186|
  00298		 |$L38180|

; 424  :             break;
; 425  :         }            
; 426  :     }        

  00298	eaffff62	 b           |$L38152|
  0029c		 |$L38153|

; 427  :     *pulBlockAddress =  FLASH_READ_MODE;

  0029c	e59d2014	 ldr         r2, [sp, #0x14]
  002a0	e3a038ff	 mov         r3, #0xFF, 16
  002a4	e38330ff	 orr         r3, r3, #0xFF
  002a8	e5823000	 str         r3, [r2]

; 428  :     return TRUE;

  002ac	e3a03001	 mov         r3, #1
  002b0	e58d3028	 str         r3, [sp, #0x28]

; 371  :                 return FALSE;

  002b4	e59d0028	 ldr         r0, [sp, #0x28]

; 429  : }

  002b8	e28dd038	 add         sp, sp, #0x38
  002bc	e89d6000	 ldmia       sp, {sp, lr}
  002c0	e12fff1e	 bx          lr
  002c4		 |$L38409|
  002c4	00000000	 DCD         |??_C@_0CK@IHGKIHOF@?$CKFLASH_READ_STATUS?5pulBlockAddre@|
  002c8	00000000	 DCD         |??_C@_0BI@DAENKHLI@?$CKpulBlockAddress?5?$DN?5?$CFx?4?6?$AA@|
  002cc	00000000	 DCD         |??_C@_0BI@NJPDFMHF@pulBlockAddress?5?5?$DN?5?$CFx?4?6?$AA@|
  002d0	00000000	 DCD         |??_C@_0CG@GDOOMMMM@FLASH_BLOCK_PROGRAM_RESUME?5?9?5Fai@|
  002d4	00000000	 DCD         |??_C@_01LFCBOECM@?4?$AA@|
  002d8	00000000	 DCD         |??_C@_0CB@BBCEBAHK@FLASH_WRITE_TO_BUFFER?5?9?5Failed?6?4@|
  002dc		 |$M38405|

			 ENDP  ; |WriteFlashJ3_2x16|

	EXPORT	|??_C@_0BH@OIHBLNMB@?$CKpFlash?5?5?5?5?5?5?5?5?$DN?5?$CFx?5?4?6?$AA@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |WaitForReady| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$WaitForReady|, PDATA, SELECTION=5, ASSOC=|.text| { |WaitForReady| } ; comdat associative
|$T38416| DCD	|$L38415|
	DCD	0x40002c04

  00000			 AREA	 |.rdata| { |??_C@_0BH@OIHBLNMB@?$CKpFlash?5?5?5?5?5?5?5?5?$DN?5?$CFx?5?4?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BH@OIHBLNMB@?$CKpFlash?5?5?5?5?5?5?5?5?$DN?5?$CFx?5?4?6?$AA@| DCB "*"
	DCB	"pFlash        = %x .", 0xa, 0x0	; `string'
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |WaitForReady| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |WaitForReady| PROC

; 445  : {

  00000		 |$L38415|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0007	 stmdb       sp!, {r0 - r2}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd018	 sub         sp, sp, #0x18
  00010		 |$M38413|

; 446  :     ULONG       ulStart;
; 447  :     ULONG       ulCurrent;
; 448  :     BOOL        bSuccess = FALSE;

  00010	e3a03000	 mov         r3, #0
  00014	e58d3000	 str         r3, [sp]

; 449  :    
; 450  :     ulStart = GetSystemTimeInMsec();

  00018	eb000000	 bl          GetSystemTimeInMsec
  0001c	e58d0010	 str         r0, [sp, #0x10]
  00020	e59d3010	 ldr         r3, [sp, #0x10]
  00024	e58d3008	 str         r3, [sp, #8]
  00028		 |$L38198|

; 451  :     do
; 452  :     {
; 453  :         //
; 454  :         // See if there are errors.
; 455  :         //
; 456  :         if((*pFlash & ulBitField)== ulBitField)

  00028	e59d3020	 ldr         r3, [sp, #0x20]
  0002c	e5932000	 ldr         r2, [r3]
  00030	e59d3028	 ldr         r3, [sp, #0x28]
  00034	e0022003	 and         r2, r2, r3
  00038	e59d3028	 ldr         r3, [sp, #0x28]
  0003c	e1520003	 cmp         r2, r3
  00040	1a000002	 bne         |$L38201|

; 457  :         {
; 458  :             bSuccess = TRUE;

  00044	e3a03001	 mov         r3, #1
  00048	e58d3000	 str         r3, [sp]

; 459  :             break;

  0004c	ea000009	 b           |$L38200|
  00050		 |$L38201|

; 460  :         }
; 461  :         
; 462  :         //
; 463  :         // Get the current time.
; 464  :         //
; 465  :         ulCurrent = GetSystemTimeInMsec();

  00050	eb000000	 bl          GetSystemTimeInMsec
  00054	e58d0014	 str         r0, [sp, #0x14]
  00058	e59d3014	 ldr         r3, [sp, #0x14]
  0005c	e58d3004	 str         r3, [sp, #4]

; 466  :     } while(ulCurrent<ulStart + ulTimeoutInMsec);

  00060	e59d2008	 ldr         r2, [sp, #8]
  00064	e59d3024	 ldr         r3, [sp, #0x24]
  00068	e0822003	 add         r2, r2, r3
  0006c	e59d3004	 ldr         r3, [sp, #4]
  00070	e1530002	 cmp         r3, r2
  00074	3affffeb	 bcc         |$L38198|
  00078		 |$L38200|

; 467  : 
; 468  :     if(!bSuccess)

  00078	e59d3000	 ldr         r3, [sp]
  0007c	e3530000	 cmp         r3, #0
  00080	1a000003	 bne         |$L38202|

; 469  :     {
; 470  :         EdbgOutputDebugString("*pFlash        = %x .\n",(ULONG)*pFlash);

  00084	e59d3020	 ldr         r3, [sp, #0x20]
  00088	e5931000	 ldr         r1, [r3]
  0008c	e59f0018	 ldr         r0, [pc, #0x18]
  00090	eb000000	 bl          EdbgOutputDebugString
  00094		 |$L38202|

; 471  :     }        
; 472  :     
; 473  :     return bSuccess;

  00094	e59d3000	 ldr         r3, [sp]
  00098	e58d300c	 str         r3, [sp, #0xC]
  0009c	e59d000c	 ldr         r0, [sp, #0xC]

; 474  : }

  000a0	e28dd018	 add         sp, sp, #0x18
  000a4	e89d6000	 ldmia       sp, {sp, lr}
  000a8	e12fff1e	 bx          lr
  000ac		 |$L38418|
  000ac	00000000	 DCD         |??_C@_0BH@OIHBLNMB@?$CKpFlash?5?5?5?5?5?5?5?5?$DN?5?$CFx?5?4?6?$AA@|
  000b0		 |$M38414|

			 ENDP  ; |WaitForReady|

	EXPORT	|InitializeFlash|
	EXPORT	|??_C@_0BI@OJJDFABG@2X16?5J3?5Flash?5Defined?$AN?6?$AA@| [ DATA ] ; `string'
	EXPORT	|??_C@_0BM@BMFHPIME@Initialize?5Flash?0?5succeed?$AN?6?$AA@| [ DATA ] ; `string'
; File c:\wince500\platform\ep93xx\src\bootloader\common\flash.c

  00000			 AREA	 |.text| { |InitializeFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$InitializeFlash|, PDATA, SELECTION=5, ASSOC=|.text| { |InitializeFlash| } ; comdat associative
|$T38425| DCD	|$L38424|
	DCD	0x40004602

  00000			 AREA	 |.rdata| { |??_C@_0BM@BMFHPIME@Initialize?5Flash?0?5succeed?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BM@BMFHPIME@Initialize?5Flash?0?5succeed?$AN?6?$AA@| DCB "Initial"
	DCB	"ize Flash, succeed", 0xd, 0xa, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_0BI@OJJDFABG@2X16?5J3?5Flash?5Defined?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@OJJDFABG@2X16?5J3?5Flash?5Defined?$AN?6?$AA@| DCB "2X16 J3 Fla"
	DCB	"sh Defined", 0xd, 0xa, 0x0		; `string'
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |InitializeFlash| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |InitializeFlash| PROC

; 84   : {

  00000		 |$L38424|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd010	 sub         sp, sp, #0x10
  00008		 |$M38422|

; 85   :     ULONG   ulSMC=0;

  00008	e3a03000	 mov         r3, #0
  0000c	e58d3000	 str         r3, [sp]

; 86   : 	int wait1;
; 87   : 	int wait2;
; 88   : 
; 89   : 	//for WAIT_STATES(A), the largest value of 'A' should be 500, when A is 500,
; 90   : 	//WAIT_STATES(A) is 31, which has reached the largest value of WAIT_STATES(A).
; 91   : 	#if (EP93XX_FLASH_TYPE==FLASH_TYPE_C3)
; 92   : 
; 93   : 		wait2=0x1F;
; 94   : 		wait1=0x1F;
; 95   : 
; 96   : 	#elif (EP93XX_FLASH_TYPE == FLASH_TYPE_AMD)
; 97   : 
; 98   : 		wait2=0x1F;
; 99   : 		wait1=0x1F;
; 100  : 
; 101  : 	#elif (EP93XX_FLASH_TYPE == FLASH_TYPE_P3)
; 102  : 
; 103  : 		wait2=0x1F;
; 104  : 		wait1=0x1F;
; 105  : 
; 106  : 	#elif  (EP93XX_FLASH_TYPE == FLASH_TYPE_J3)
; 107  : 
; 108  : 		wait2=WAIT_STATES(35);

  00010	e3a03003	 mov         r3, #3
  00014	e58d3004	 str         r3, [sp, #4]

; 109  : 		wait1=WAIT_STATES(150);

  00018	e3a0300e	 mov         r3, #0xE
  0001c	e58d3008	 str         r3, [sp, #8]

; 110  : 
; 111  : 	#else  //The lowest value
; 112  : 		wait2=0x1F;
; 113  : 		wait1=0x1F;
; 114  : 	#endif
; 115  : 	//
; 116  : 	ulSMC   = (( wait2 <<SMCBCR_WST2_SHIFT) & SMCBCR_WST2_MASK) | 
; 117  : 			  (( wait1 <<SMCBCR_WST1_SHIFT) & SMCBCR_WST1_MASK);

  00020	e59d3004	 ldr         r3, [sp, #4]
  00024	e1a03583	 mov         r3, r3, lsl #11
  00028	e2032b3e	 and         r2, r3, #0x3E, 22
  0002c	e59d3008	 ldr         r3, [sp, #8]
  00030	e1a03283	 mov         r3, r3, lsl #5
  00034	e2033e3e	 and         r3, r3, #0x3E, 28
  00038	e1823003	 orr         r3, r2, r3
  0003c	e58d3000	 str         r3, [sp]

; 118  : 
; 119  : 	//Add other values:
; 120  : 	*FLASH_SMC = ulSMC |  ( 1 & SMCBCR_IDCY_MASK )  |SMCBCR_WP | SMCBCR_PME | SMCBCR_RBLE
; 121  : 
; 122  : 			#if EP93XX_FLASH_WIDTH==16
; 123  : 			|  SMCBCR_MW_16BIT
; 124  : 			#else
; 125  : 			|  SMCBCR_MW_32BIT
; 126  : 			#endif
; 127  : 			;

  00040	e59d3000	 ldr         r3, [sp]
  00044	e3833001	 orr         r3, r3, #1
  00048	e3833301	 orr         r3, r3, #1, 6
  0004c	e3833302	 orr         r3, r3, #2, 6
  00050	e3833b01	 orr         r3, r3, #1, 22
  00054	e3832202	 orr         r2, r3, #2, 4
  00058	e59f30b4	 ldr         r3, [pc, #0xB4]
  0005c	e5832000	 str         r2, [r3]

; 128  : 
; 129  : 
; 130  :     ulSMC        = *FLASH_SMC;

  00060	e59f30ac	 ldr         r3, [pc, #0xAC]
  00064	e5933000	 ldr         r3, [r3]
  00068	e58d3000	 str         r3, [sp]

; 131  :     ulSMC       |= SMCBCR_WPERR;

  0006c	e59d3000	 ldr         r3, [sp]
  00070	e3833402	 orr         r3, r3, #2, 8
  00074	e58d3000	 str         r3, [sp]

; 132  :     ulSMC       &= ~SMCBCR_WP;

  00078	e59d2000	 ldr         r2, [sp]
  0007c	e3e03301	 mvn         r3, #1, 6
  00080	e0023003	 and         r3, r2, r3
  00084	e58d3000	 str         r3, [sp]

; 133  :     *FLASH_SMC = ulSMC ;

  00088	e59f2084	 ldr         r2, [pc, #0x84]
  0008c	e59d3000	 ldr         r3, [sp]
  00090	e5823000	 str         r3, [r2]

; 134  : 
; 135  :     //
; 136  :     // Fill in the pointers for the following.
; 137  :     //
; 138  : 
; 139  : #if (EP93XX_FLASH_WIDTH==16)
; 140  : 
; 141  :     EdbgOutputDebugString("16 bit flash\r\n");
; 142  :     
; 143  : 	#if (EP93XX_FLASH_TYPE==FLASH_TYPE_C3)
; 144  : 
; 145  : 		EdbgOutputDebugString("1X16 C3 Flash Defined\r\n" );
; 146  : 		if( !QueryIntelFlashC3_1x16() ){
; 147  : 			EdbgOutputDebugString("Defined C3 Flash, but not found. stop.\r\n" );
; 148  : 			EdbgOutputDebugString("Defined C3 Flash, but not found. stop.\r\n" );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -