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

📄 k9f1g08.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000580  e3a0144b          MOV      r1,#0x4b000000
000584  e5810020          STR      r0,[r1,#0x20]
;;;764    
;;;765    		while(!(rSRCPND & BIT_DMA0));	// Wait until Dma transfer is done.
000588  e1a00000          NOP      
                  |L1.1420|
00058c  e3a0044a          MOV      r0,#0x4a000000
000590  e5900000          LDR      r0,[r0,#0]
000594  e3100b80          TST      r0,#0x20000
000598  0afffffb          BEQ      |L1.1420|
;;;766    		
;;;767    	    rSRCPND=BIT_DMA0;
00059c  e3a00b80          MOV      r0,#0x20000
0005a0  e3a0144a          MOV      r1,#0x4a000000
0005a4  e5810000          STR      r0,[r1,#0]
;;;768    
;;;769          #endif
;;;770    
;;;771      /*  
;;;772    	  NF_MECC_Lock();
;;;773    	  
;;;774    	  rNFMECCD0=NF_RDDATA();
;;;775    	  
;;;776    	  NF_nFCE_H();	  
;;;777    	  
;;;778    	  if ((rNFESTAT0&0x3) == 0x0) 	  return OK;
;;;779    	  else   return FAIL;
;;;780    */
;;;781    
;;;782    	 NF_MECC_Lock();
0005a8  e3a0044e          MOV      r0,#0x4e000000
0005ac  e5900004          LDR      r0,[r0,#4]
0005b0  e3800020          ORR      r0,r0,#0x20
0005b4  e3a0144e          MOV      r1,#0x4e000000
0005b8  e5810004          STR      r0,[r1,#4]
;;;783    
;;;784    //	 NF_SECC_UnLock();
;;;785            NF1G08_Spare_Data[0]=NF_RDDATA8();
0005bc  e3a0044e          MOV      r0,#0x4e000000
0005c0  e5d00010          LDRB     r0,[r0,#0x10]
0005c4  e59f10e4          LDR      r1,|L1.1712|
0005c8  e5c10000          STRB     r0,[r1,#0]  ; NF1G08_Spare_Data
;;;786    	 Mecc=NF_RDDATA();
0005cc  e3a0044e          MOV      r0,#0x4e000000
0005d0  e5904010          LDR      r4,[r0,#0x10]
;;;787    	 rNFMECCD0=((Mecc&0xff00)<<8)|(Mecc&0xff);
0005d4  e20400ff          AND      r0,r4,#0xff
0005d8  e2041cff          AND      r1,r4,#0xff00
0005dc  e1800401          ORR      r0,r0,r1,LSL #8
0005e0  e3a0144e          MOV      r1,#0x4e000000
0005e4  e5810014          STR      r0,[r1,#0x14]
;;;788    	 rNFMECCD1=((Mecc&0xff000000)>>8)|((Mecc&0xff0000)>>16);
0005e8  e3c408ff          BIC      r0,r4,#0xff0000
0005ec  e3c00cff          BIC      r0,r0,#0xff00
0005f0  e1a00420          MOV      r0,r0,LSR #8
0005f4  e1a01404          MOV      r1,r4,LSL #8
0005f8  e1800c21          ORR      r0,r0,r1,LSR #24
0005fc  e3a0144e          MOV      r1,#0x4e000000
000600  e5810018          STR      r0,[r1,#0x18]
;;;789    	
;;;790    //	 NF_SECC_Lock();
;;;791    	 NF1G08_Spare_Data[1]=(U8)(Mecc&0xff);
000604  e59f00a4          LDR      r0,|L1.1712|
000608  e5c04001          STRB     r4,[r0,#1]  ; NF1G08_Spare_Data
;;;792    	 NF1G08_Spare_Data[2]=(U8)((Mecc>>8) & 0xff);
00060c  e1a00804          MOV      r0,r4,LSL #16
000610  e1a00c20          MOV      r0,r0,LSR #24
000614  e59f1094          LDR      r1,|L1.1712|
000618  e5c10002          STRB     r0,[r1,#2]  ; NF1G08_Spare_Data
;;;793    	 NF1G08_Spare_Data[3]=(U8)((Mecc>>16) & 0xff);
00061c  e1a00404          MOV      r0,r4,LSL #8
000620  e1a00c20          MOV      r0,r0,LSR #24
000624  e59f1084          LDR      r1,|L1.1712|
000628  e5c10003          STRB     r0,[r1,#3]  ; NF1G08_Spare_Data
;;;794    	 NF1G08_Spare_Data[4]=(U8)((Mecc>>24) & 0xff);
00062c  e1a00c24          MOV      r0,r4,LSR #24
000630  e59f1078          LDR      r1,|L1.1712|
000634  e5c10004          STRB     r0,[r1,#4]  ; NF1G08_Spare_Data
;;;795    
;;;796    	 for(i=5;i<64;i++) {
000638  e3a05005          MOV      r5,#5
                  |L1.1596|
00063c  e3550040          CMP      r5,#0x40
000640  aa000007          BGE      |L1.1636|
000644  ea000001          B        |L1.1616|
                  |L1.1608|
000648  e2855001          ADD      r5,r5,#1
00064c  eafffffa          B        |L1.1596|
;;;797        	NF1G08_Spare_Data[i]=NF_RDDATA8();	// Read spare array with 4byte width
                  |L1.1616|
000650  e3a0044e          MOV      r0,#0x4e000000
000654  e5d00010          LDRB     r0,[r0,#0x10]
000658  e59f1050          LDR      r1,|L1.1712|
00065c  e7c10005          STRB     r0,[r1,r5]
;;;798           }
000660  eafffff8          B        |L1.1608|
;;;799    /*	 NF_RDDATA();  // read 4~7
;;;800    	 Secc=NF_RDDATA();
;;;801    	 rNFSECCD=((Secc&0xff00)<<8)|(Secc&0xff);
;;;802    	 NF8_Spare_Data[8]=Secc&0xff;
;;;803    	 NF8_Spare_Data[9]=(Secc&0xff00)>>8;
;;;804    	 NF8_Spare_Data[10]=(Secc&0xff0000)>>16;
;;;805    	 NF8_Spare_Data[11]=(Secc&0xff000000)>>24;
;;;806    	 */
;;;807    	 EXT_NF_nFCE_H();    
                  |L1.1636|
000664  e3a00456          MOV      r0,#0x56000000
000668  e5900004          LDR      r0,[r0,#4]
00066c  e3800b40          ORR      r0,r0,#0x10000
000670  e3a01456          MOV      r1,#0x56000000
000674  e5810004          STR      r0,[r1,#4]
;;;808    
;;;809    	 if ((rNFESTAT0&0x3) == 0x0){
000678  e3a0044e          MOV      r0,#0x4e000000
00067c  e5900024          LDR      r0,[r0,#0x24]
000680  e3100003          TST      r0,#3
000684  1a000003          BNE      |L1.1688|
;;;810    	       Uart_Printf("ECC OK!\n");
000688  e28f0024          ADR      r0,|L1.1716|
00068c  ebfffffe          BL       Uart_Printf
;;;811    		return OK;
000690  e3a00001          MOV      r0,#1
;;;812    	 }
;;;813    	 else {
;;;814    		Uart_Printf("ECC FAIL!\n");
;;;815    	       return FAIL;
;;;816    	 }
;;;817    
;;;818    
;;;819    }
                  |L1.1684|
000694  e8bd87f0          LDMFD    sp!,{r4-r10,pc}
                  |L1.1688|
000698  e28f0020          ADR      r0,|L1.1728|          ;814
00069c  ebfffffe          BL       Uart_Printf           ;814
0006a0  e3a00000          MOV      r0,#0                 ;815
0006a4  eafffffa          B        |L1.1684|             ;815
                  |L1.1704|
0006a8  4e000010          DCD      0x4e000010            ;815
                  |L1.1708|
0006ac  f8600080          DCD      0xf8600080            ;815
                  |L1.1712|
0006b0  00000000          DCD      ||.bss$2||            ;815
                  |L1.1716|
0006b4  20434345          DCB      "ECC "                ;815
0006b8  0a214b4f          DCB      "OK!\n"               ;815
0006bc  00000000          DCB      "\0\0\0\0"            ;815
                  |L1.1728|
0006c0  20434345          DCB      "ECC "                ;815
0006c4  4c494146          DCB      "FAIL"                ;815
0006c8  00000a21          DCB      "!\n\0\0"             ;815
                          ENDP

                  Test_NF1G08_Page_Read PROC
;;;234    void Test_NF1G08_Page_Read(void)
;;;235    {
0006cc  e92d40f8          STMFD    sp!,{r3-r7,lr}
;;;236    	U32 block=0, page=0;
0006d0  e3a06000          MOV      r6,#0
0006d4  e3a07000          MOV      r7,#0
;;;237    	U32 i;
;;;238    	unsigned char * downPt;
;;;239    	
;;;240    	downPt=(unsigned char *)_NONCACHE_STARTADDRESS;
0006d8  e3a055c4          MOV      r5,#0x31000000
;;;241    		
;;;242    	Uart_Printf("(K9F1G08) NAND Page Read.\n");
0006dc  e28f00f4          ADR      r0,|L1.2008|
0006e0  ebfffffe          BL       Uart_Printf
;;;243    
;;;244    	Uart_Printf("Block # to read: ");
0006e4  e28f0f42          ADR      r0,|L1.2036|
0006e8  ebfffffe          BL       Uart_Printf
;;;245    	block = Uart_GetIntNum();
0006ec  ebfffffe          BL       Uart_GetIntNum
0006f0  e1a06000          MOV      r6,r0
;;;246    	Uart_Printf("Page # to read: ");
0006f4  e28f0f43          ADR      r0,|L1.2056|
0006f8  ebfffffe          BL       Uart_Printf
;;;247    	page = Uart_GetIntNum();
0006fc  ebfffffe          BL       Uart_GetIntNum
000700  e1a07000          MOV      r7,r0
;;;248    
;;;249    	if(NF1G08_ReadPage(block, page, (U8 *)downPt )==FAIL) {
000704  e1a02005          MOV      r2,r5
000708  e1a01007          MOV      r1,r7
00070c  e1a00006          MOV      r0,r6
000710  ebfffffe          BL       NF1G08_ReadPage
000714  e3500000          CMP      r0,#0
000718  1a000002          BNE      |L1.1832|
;;;250    		Uart_Printf("Read error.\n");
00071c  e28f00f8          ADR      r0,|L1.2076|
000720  ebfffffe          BL       Uart_Printf
000724  ea000001          B        |L1.1840|
;;;251    	} else {
;;;252    		Uart_Printf("Read OK.\n");
                  |L1.1832|
000728  e28f00fc          ADR      r0,|L1.2092|
00072c  ebfffffe          BL       Uart_Printf
;;;253    	}
;;;254    	// Print data.
;;;255    	Uart_Printf("Read data(%d-block,%d-page)\n", block, page);
                  |L1.1840|
000730  e1a02007          MOV      r2,r7
000734  e1a01006          MOV      r1,r6
000738  e28f00f8          ADR      r0,|L1.2104|
00073c  ebfffffe          BL       Uart_Printf
;;;256    	
;;;257    	for(i=0; i<2048; i++) {
000740  e3a04000          MOV      r4,#0
                  |L1.1860|
000744  e3540e80          CMP      r4,#0x800
000748  2a00000b          BCS      |L1.1916|
00074c  ea000001          B        |L1.1880|
                  |L1.1872|
000750  e2844001          ADD      r4,r4,#1
000754  eafffffa          B        |L1.1860|
;;;258    		if((i%16)==0) Uart_Printf("\n%4x: ", i);
                  |L1.1880|
000758  e314000f          TST      r4,#0xf
00075c  1a000002          BNE      |L1.1900|
000760  e1a01004          MOV      r1,r4
000764  e28f00ec          ADR      r0,|L1.2136|
000768  ebfffffe          BL       Uart_Printf
;;;259    		Uart_Printf("%02x ", *(U8 *)downPt++);
                  |L1.1900|
00076c  e4d51001          LDRB     r1,[r5],#1
000770  e28f00e8          ADR      r0,|L1.2144|
000774  ebfffffe          BL       Uart_Printf
;;;260    		}
000778  eafffff4          B        |L1.1872|
;;;261    	Uart_Printf("\n");
                  |L1.1916|
00077c  e28f00b0          ADR      r0,|L1.2100|
000780  ebfffffe          BL       Uart_Printf
;;;262    	Uart_Printf("Spare:");
000784  e28f00dc          ADR      r0,|L1.2152|
000788  ebfffffe          BL       Uart_Printf
;;;263    	for(i=0; i<64; i++) {
00078c  e3a04000          MOV      r4,#0
                  |L1.1936|
000790  e3540040          CMP      r4,#0x40
000794  2a00000c          BCS      |L1.1996|
000798  ea000001          B        |L1.1956|
                  |L1.1948|
00079c  e2844001          ADD      r4,r4,#1
0007a0  eafffffa          B        |L1.1936|
;;;264    		if((i%16)==0) Uart_Printf("\n%4x: ", i);
                  |L1.1956|
0007a4  e314000f          TST      r4,#0xf
0007a8  1a000002          BNE      |L1.1976|
0007ac  e1a01004          MOV      r1,r4
0007b0  e28f00a0          ADR      r0,|L1.2136|
0007b4  ebfffffe          BL       Uart_Printf
;;;265    	 	Uart_Printf("%02x ", NF1G08_Spare_Data[i]);
                  |L1.1976|
0007b8  e51f0110          LDR      r0,|L1.1712|
0007bc  e7d01004          LDRB     r1,[r0,r4]
0007c0  e28f0098          ADR      r0,|L1.2144|
0007c4  ebfffffe          BL       Uart_Printf
;;;266    	}
0007c8  eafffff3          B        |L1.1948|
;;;267    	Uart_Printf("\n");
                  |L1.1996|
0007cc  e28f0060          ADR      r0,|L1.2100|
0007d0  ebfffffe          BL       Uart_Printf
;;;268    
;;;269    }
0007d4  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                  |L1.2008|
0007d8  46394b28          DCB      "(K9F"
0007dc  38304731          DCB      "1G08"
0007e0  414e2029          DCB      ") NA"
0007e4  5020444e          DCB      "ND P"
0007e8  20656761          DCB      "age "
0007ec  64616552          DCB      "Read"
0007f0  00000a2e          DCB      ".\n\0\0"
                  |L1.2036|
0007f4  636f6c42          DCB      "Bloc"
0007f8  2023206b          DCB      "k # "
0007fc  72206f74          DCB      "to r"
000800  3a646165          DCB      "ead:"
000804  00000020          DCB      " \0\0\0"
                  |L1.2056|
000808  65676150          DCB      "Page"
00080c  74202320          DCB      " # t"
000810  6572206f          DCB      "o re"
000814  203a6461          DCB      "ad: "
000818  00000000          DCB      "\0\0\0\0"
                  |L1.2076|
00081c  64616552          DCB      "Read"
000820  72726520          DCB      " err"
000824  0a2e726f          DCB      "or.\n"
000828  00000000          DCB      "\0\0\0\0"
                  |L1.2092|
00082c  64616552          DCB      "Read"
000830  2e4b4f20          DCB      " OK."
                  |L1.2100|
000834  0000000a          DCB      "\n\0\0\0"
                  |L1.2104|
000838  64616552          DCB      "Read"
00083c  74616420          DCB      " dat"
000840  64252861          DCB      "a(%d"
000844  6f6c622d          DCB      "-blo"
000848  252c6b63          DCB      "ck,%"
00084c  61702d64          DCB      "d-pa"
000850  0a296567          DCB      "ge)\n"

⌨️ 快捷键说明

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