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

📄 nandfls.cod

📁 平台PXA270, Mobile6.0 这是270的mobile6.0的bootloader
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 384  : 		goto WRITE_ERROR;
; 385  :     }
; 386  :     
; 387  :     for(i = 0; i < dwNumSectors; i++)

  00034	e3a09000	 mov         r9, #0
  00038	e35a0000	 cmp         r10, #0
  0003c	0a00004e	 beq         |$L35658|
  00040	e59f5160	 ldr         r5, [pc, #0x160]
  00044	e3a0b080	 mov         r11, #0x80
  00048	e5958044	 ldr         r8, [r5, #0x44]
  0004c		 |$L35656|

; 388  :     {
; 389  :         memset(g_bSectorInfo, 0xff, 64);

  0004c	e3a02040	 mov         r2, #0x40
  00050	e3a010ff	 mov         r1, #0xFF
  00054	e1a00005	 mov         r0, r5
  00058	eb000000	 bl          memset

; 390  :         if(pSectorBuff) 

  0005c	e3570000	 cmp         r7, #0
  00060	0a000022	 beq         |$L35659|

; 391  :         {
; 392  : 			if(pSectorInfoBuff)

  00064	e3540000	 cmp         r4, #0

; 393  : 			{
; 394  : 				g_bSectorInfo[0] = pSectorInfoBuff->bBadBlock;

  00068	15d43005	 ldrneb      r3, [r4, #5]

; 395  : 				g_bSectorInfo[1] = pSectorInfoBuff->bOEMReserved;
; 396  : 				*((WORD*)g_bSectorInfo + 1) = pSectorInfoBuff->wReserved2;
; 397  : 				*((DWORD*)g_bSectorInfo + 1) = pSectorInfoBuff->dwReserved1;
; 398  : 			}
; 399  : #ifdef IMGENABLEECC    
; 400  : 			bpEcc = (BYTE *)(g_bSectorInfo + 8);
; 401  : 			bpECCBuff = pSectorBuff;
; 402  : 			for( j = 0; j < ECC_CAL_TIMES; j++ )
; 403  : 			{
; 404  : 				NandCalECC(bpECCBuff, bpEcc);
; 405  : 				/*
; 406  : 				if(!Nand_ECC_ComputeECC(bpECCBuff, 512, bpEcc, ECC_BUFF_LEN))
; 407  : 				{
; 408  : 					RETAILMSG(1, (TEXT("Mass_FMD_WriteSector: Unable to compute ECC(sector 0x%x) !!!\r\n"), startSectorAddr));
; 409  : 					goto WRITE_ERROR;
; 410  : 				}
; 411  : 				*/
; 412  :                 bpEcc += ECC_LEN;
; 413  : 				bpECCBuff += 512;
; 414  : 			}
; 415  : #endif	       
; 416  : 			PXANandInputCmd(CMD_WRITE);
; 417  :             PXANandInputAdd(startSectorAddr, 0);

  0006c	e3a01000	 mov         r1, #0
  00070	e1a00006	 mov         r0, r6
  00074	15c53000	 strneb      r3, [r5]
  00078	15d43004	 ldrneb      r3, [r4, #4]
  0007c	15c53001	 strneb      r3, [r5, #1]
  00080	11d430b6	 ldrneh      r3, [r4, #6]
  00084	11c530b2	 strneh      r3, [r5, #2]
  00088	15943000	 ldrne       r3, [r4]
  0008c	15853004	 strne       r3, [r5, #4]
  00090	e5c8b004	 strb        r11, [r8, #4]
  00094	eb000000	 bl          |?PXANandInputAdd@@YAXKK@Z|

; 418  :             PXANandInputData(sg_PXANandFlash.Info.wDataBytesPerSector, pSectorBuff);

  00098	e1d535be	 ldrh        r3, [r5, #0x5E]
  0009c	e3a01000	 mov         r1, #0
  000a0	e1b00003	 movs        r0, r3
  000a4	0a000005	 beq         |$L36138|
  000a8		 |$L36136|
  000a8	e7d12007	 ldrb        r2, [r1, +r7]
  000ac	e5953044	 ldr         r3, [r5, #0x44]
  000b0	e2811001	 add         r1, r1, #1
  000b4	e1510000	 cmp         r1, r0
  000b8	e5c32000	 strb        r2, [r3]
  000bc	3afffff9	 bcc         |$L36136|
  000c0		 |$L36138|

; 419  : #ifdef IMGENABLEECC
; 420  : 			PXANandInputData(ECC_PLUS_SECTORINFO, g_bSectorInfo);
; 421  : 			pSectorInfoBuff++;
; 422  : #else
; 423  :             if(pSectorInfoBuff)

  000c0	e3540000	 cmp         r4, #0
  000c4	0a000007	 beq         |$L35663|

; 424  :             {
; 425  :             	PXANandInputData(8, g_bSectorInfo);

  000c8	e3a01000	 mov         r1, #0
  000cc		 |$L36144|
  000cc	e7d12005	 ldrb        r2, [r1, +r5]
  000d0	e5953044	 ldr         r3, [r5, #0x44]
  000d4	e2811001	 add         r1, r1, #1
  000d8	e3510008	 cmp         r1, #8
  000dc	e5c32000	 strb        r2, [r3]
  000e0	3afffff9	 bcc         |$L36144|

; 426  :             	pSectorInfoBuff++;

  000e4	e2844008	 add         r4, r4, #8
  000e8		 |$L35663|

; 427  :             }
; 428  : #endif
; 429  :             pSectorBuff++;

  000e8	e2877001	 add         r7, r7, #1

; 430  :         }
; 431  :         else

  000ec	ea000013	 b           |$L35664|
  000f0		 |$L35659|

; 432  :         {
; 433  : 			g_bSectorInfo[0] = pSectorInfoBuff->bBadBlock;

  000f0	e5d43005	 ldrb        r3, [r4, #5]

; 434  : 			g_bSectorInfo[1] = pSectorInfoBuff->bOEMReserved;
; 435  : 			*((WORD*)g_bSectorInfo + 1) = pSectorInfoBuff->wReserved2;
; 436  : 			*((DWORD*)g_bSectorInfo + 1) = pSectorInfoBuff->dwReserved1;
; 437  : 	        PXANandInputCmd(CMD_WRITE);
; 438  :             PXANandInputAdd(startSectorAddr, sg_PXANandFlash.Info.wDataBytesPerSector);

  000f4	e1a00006	 mov         r0, r6
  000f8	e5c53000	 strb        r3, [r5]
  000fc	e5d43004	 ldrb        r3, [r4, #4]
  00100	e5c53001	 strb        r3, [r5, #1]
  00104	e1d430b6	 ldrh        r3, [r4, #6]
  00108	e1c530b2	 strh        r3, [r5, #2]
  0010c	e5943000	 ldr         r3, [r4]
  00110	e5853004	 str         r3, [r5, #4]
  00114	e5c8b004	 strb        r11, [r8, #4]
  00118	e1d515be	 ldrh        r1, [r5, #0x5E]
  0011c	eb000000	 bl          |?PXANandInputAdd@@YAXKK@Z|

; 439  :             PXANandInputData(8, g_bSectorInfo);

  00120	e3a01000	 mov         r1, #0
  00124		 |$L36151|
  00124	e7d12005	 ldrb        r2, [r1, +r5]
  00128	e5953044	 ldr         r3, [r5, #0x44]
  0012c	e2811001	 add         r1, r1, #1
  00130	e3510008	 cmp         r1, #8
  00134	e5c32000	 strb        r2, [r3]
  00138	3afffff9	 bcc         |$L36151|

; 440  : 			pSectorInfoBuff++;

  0013c	e2844008	 add         r4, r4, #8
  00140		 |$L35664|

; 441  :         }
; 442  :         PXANandInputCmd(CMD_WRITE2);

  00140	e5953044	 ldr         r3, [r5, #0x44]
  00144	e3a02010	 mov         r2, #0x10
  00148	e5c32004	 strb        r2, [r3, #4]

; 443  :         NandDeviceReady();

  0014c	eb000000	 bl          |?NandDeviceReady@@YAXXZ|

; 444  :         PXANandCheckStatus(&status);

  00150	e5953044	 ldr         r3, [r5, #0x44]
  00154	e3a02070	 mov         r2, #0x70
  00158	e5c32004	 strb        r2, [r3, #4]
  0015c	e5958044	 ldr         r8, [r5, #0x44]
  00160	e5d83000	 ldrb        r3, [r8]

; 445  :         
; 446  :         if(status & 0x01)

  00164	e3130001	 tst         r3, #1
  00168	1a000006	 bne         |$L36175|
  0016c	e2899001	 add         r9, r9, #1
  00170	e159000a	 cmp         r9, r10

; 449  :             goto WRITE_ERROR;
; 450  :         }
; 451  :         
; 452  :         startSectorAddr++;

  00174	e2866001	 add         r6, r6, #1
  00178	3affffb3	 bcc         |$L35656|
  0017c		 |$L35658|

; 453  :     }
; 454  : 
; 455  :     return TRUE;

  0017c	e3a00001	 mov         r0, #1

; 460  : }

  00180	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  00184	e12fff1e	 bx          lr
  00188		 |$L36175|

; 447  :         {
; 448  :             RETAILMSG(1,(TEXT("FMD_WriteSector: Unable to FMD_WriteSector(sector 0x%x), status=0x%x !!!\r\n"), startSectorAddr, status));

  00188	e59f0014	 ldr         r0, [pc, #0x14]
  0018c	e1a02003	 mov         r2, r3
  00190	e1a01006	 mov         r1, r6
  00194	eb000000	 bl          NKDbgPrintfW

; 456  : 
; 457  : WRITE_ERROR:
; 458  : 
; 459  :     return FALSE;

  00198	e3a00000	 mov         r0, #0
  0019c		 |$WRITE_ERROR$35654|

; 460  : }

  0019c	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  001a0	e12fff1e	 bx          lr
  001a4		 |$L36198|
  001a4	00000000	 DCD         |??_C@_1JG@PAJOOBDI@?$AAF?$AAM?$AAD?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AAS?$AAe?$AAc?$AAt?$AAo?$AAr?$AA?3?$AA?5?$AAU?$AAn?$AAa@|
  001a8	00000000	 DCD         |g_bSectorInfo|
  001ac	00000000	 DCD         |??_C@_1FG@IIEAIPBG@?$AAM?$AAa?$AAs?$AAs?$AA_?$AAF?$AAM?$AAD?$AA_?$AAW?$AAr?$AAi?$AAt?$AAe?$AAS?$AAe?$AAc?$AAt?$AAo?$AAr@|
  001b0		 |$M36194|

			 ENDP  ; |Nand_FMD_WriteSector|

	EXPORT	|Nand_FMD_EraseBlock|
	EXPORT	|??_C@_1CC@OHMNCLGB@?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AA?$CF?$AAd?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$Nand_FMD_EraseBlock|, PDATA, SELECTION=5, ASSOC=|.text| { |Nand_FMD_EraseBlock| } ; comdat associative
|$T36240| DCD	|$L36239|
	DCD	0x40002a01

  00000			 AREA	 |.rdata| { |??_C@_1CC@OHMNCLGB@?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AA?$CF?$AAd?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CC@OHMNCLGB@?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AA?$CF?$AAd?$AA?$AN?$AA?6?$AA?$AA@| DCB "E"
	DCB	0x0, "r", 0x0, "a", 0x0, "s", 0x0, "e", 0x0, " ", 0x0, "B"
	DCB	0x0, "l", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, " ", 0x0, "%"
	DCB	0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

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

  00000		 |Nand_FMD_EraseBlock| PROC

; 475  : {

  00000		 |$L36239|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M36237|
  00004	e1a04000	 mov         r4, r0

; 476  :     BYTE status;
; 477  : 	
; 478  : 	RETAILMSG(1, (TEXT("Erase Block %d\r\n"), blockID));

  00008	e59f0094	 ldr         r0, [pc, #0x94]
  0000c	e1a01004	 mov         r1, r4
  00010	eb000000	 bl          NKDbgPrintfW

; 479  : 	
; 480  :     PXANandInputCmd(CMD_ERASE);

  00014	e59f5084	 ldr         r5, [pc, #0x84]
  00018	e3a02060	 mov         r2, #0x60
  0001c	e5953004	 ldr         r3, [r5, #4]
  00020	e5c32004	 strb        r2, [r3, #4]

; 481  :     PXANandInputRowAdd(blockID * sg_PXANandFlash.Info.wSectorsPerBlock);

  00024	e1d521bc	 ldrh        r2, [r5, #0x1C]
  00028	e5953028	 ldr         r3, [r5, #0x28]
  0002c	e0000492	 mul         r0, r2, r4
  00030	e3530000	 cmp         r3, #0
  00034	0a00000a	 beq         |$L36209|
  00038	e3a01000	 mov         r1, #0
  0003c		 |$L36207|
  0003c	e5952004	 ldr         r2, [r5, #4]
  00040	e1a03181	 mov         r3, r1, lsl #3
  00044	e1a03330	 mov         r3, r0, lsr r3
  00048	e2811001	 add         r1, r1, #1
  0004c	e5c23008	 strb        r3, [r2, #8]
  00050	e5953028	 ldr         r3, [r5, #0x28]
  00054	e1a01801	 mov         r1, r1, lsl #16
  00058	e1a01821	 mov         r1, r1, lsr #16
  0005c	e1510003	 cmp         r1, r3
  00060	3afffff5	 bcc         |$L36207|
  00064		 |$L36209|

; 482  :     PXANandInputCmd(CMD_ERASE2);

  00064	e5953004	 ldr         r3, [r5, #4]
  00068	e3a020d0	 mov         r2, #0xD0
  0006c	e5c32004	 strb        r2, [r3, #4]

; 483  :     NandDeviceReady();

  00070	eb000000	 bl          |?NandDeviceReady@@YAXXZ|

; 484  : 	PXANandCheckStatus(&status);

  00074	e5953004	 ldr         r3, [r5, #4]
  00078	e3a02070	 mov         r2, #0x70
  0007c	e5c32004	 strb        r2, [r3, #4]
  00080	e5953004	 ldr         r3, [r5, #4]
  00084	e5d33000	 ldrb        r3, [r3]

; 485  : 
; 486  :     if(status & 0x01)

  00088	e3130001	 tst         r3, #1

; 487  :         return FALSE;

  0008c	13a00000	 movne       r0, #0

; 490  : }

  00090	18bd4030	 ldmneia     sp!, {r4, r5, lr}

; 488  : 
; 489  : 	return TRUE;

  00094	03a00001	 moveq       r0, #1

; 490  : }

  00098	08bd4030	 ldmeqia     sp!, {r4, r5, lr}
  0009c	e12fff1e	 bx          lr
  000a0		 |$L36242|
  000a0	00000000	 DCD         |?sg_PXANandFlash@@3UstPXANandFlash@@A|
  000a4	00000000	 DCD         |??_C@_1CC@OHMNCLGB@?$AAE?$AAr?$AAa?$AAs?$AAe?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AA?$CF?$AAd?$AA?$AN?$AA?6?$AA?$AA@|
  000a8		 |$M36238|

			 ENDP  ; |Nand_FMD_EraseBlock|

	EXPORT	|Nand_FMD_GetBlockStatus|
	EXPORT	|??_C@_1GK@NOOCEMEK@?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?3?$AA0?$AAx?$AA?$CF?$AAX?$AA?5?$AA?3?$AA?5?$AAV?$AAA?$AAL?$AAI?$AAD?$AAA?$AAD@| [ DATA ] ; `string'
	EXPORT	|??_C@_1HE@JEMHKBHM@?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?3?$AA0?$AAx?$AA?$CF?$AAX?$AA?5?$AAp?$AAa?$AAg?$AAe?$AA?3?$AA1?$AA?5?$AAV?$AAA@| [ DATA ] ; `string'

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

  00000			 AREA	 |.pdata$$Nand_FMD_GetBlockStatus|, PDATA, SELECTION=5, ASSOC=|.text| { |Nand_FMD_GetBlockStatus| } ; comdat associative
|$T36259| DCD	|$L36258|
	DCD	0x40002d02

  00000			 AREA	 |.rdata| { |??_C@_1HE@JEMHKBHM@?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?3?$AA0?$AAx?$AA?$CF?$AAX?$AA?5?$AAp?$AAa?$AAg?$AAe?$AA?3?$AA1?$AA?5?$AAV?

⌨️ 快捷键说明

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