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

📄 k9f1g08.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000854  00000000          DCB      "\0\0\0\0"
                  |L1.2136|
000858  7834250a          DCB      "\n%4x"
00085c  0000203a          DCB      ": \0\0"
                  |L1.2144|
000860  78323025          DCB      "%02x"
000864  00000020          DCB      " \0\0\0"
                  |L1.2152|
000868  72617053          DCB      "Spar"
00086c  00003a65          DCB      "e:\0\0"
                          ENDP

                  NF1G08_MarkBadBlock PROC
;;;671    static int NF1G08_MarkBadBlock(U32 block)
;;;672    {
000870  e92d4070          STMFD    sp!,{r4-r6,lr}
000874  e1a05000          MOV      r5,r0
;;;673           int i;
;;;674    	U32 blockPage=(block<<6);
000878  e1a06305          MOV      r6,r5,LSL #6
;;;675     
;;;676         se8Buf[0]=0x44;
00087c  e3a00044          MOV      r0,#0x44
000880  e59f11a0          LDR      r1,|L1.2600|
000884  e5c10000          STRB     r0,[r1,#0]  ; se8Buf
;;;677         se8Buf[1]=0xff;    
000888  e3a000ff          MOV      r0,#0xff
00088c  e59f1194          LDR      r1,|L1.2600|
000890  e5c10001          STRB     r0,[r1,#1]  ; se8Buf
;;;678         se8Buf[2]=0xff;    
000894  e3a000ff          MOV      r0,#0xff
000898  e59f1188          LDR      r1,|L1.2600|
00089c  e5c10002          STRB     r0,[r1,#2]  ; se8Buf
;;;679         se8Buf[5]=0xff;   // Bad blcok mark=44
0008a0  e3a000ff          MOV      r0,#0xff
0008a4  e59f117c          LDR      r1,|L1.2600|
0008a8  e5c10005          STRB     r0,[r1,#5]  ; se8Buf
;;;680    
;;;681    	NF_nFCE_L(); 
0008ac  e3a0044e          MOV      r0,#0x4e000000
0008b0  e5900004          LDR      r0,[r0,#4]
0008b4  e3c00002          BIC      r0,r0,#2
0008b8  e3a0144e          MOV      r1,#0x4e000000
0008bc  e5810004          STR      r0,[r1,#4]
;;;682    	NF_CMD(0x80);   // Write 1st command
0008c0  e3a00080          MOV      r0,#0x80
0008c4  e3a0144e          MOV      r1,#0x4e000000
0008c8  e5810008          STR      r0,[r1,#8]
;;;683    	
;;;684    	NF_ADDR((1024+0)&0xff);			// 2060 = 0x080c
0008cc  e3a00000          MOV      r0,#0
0008d0  e3a0144e          MOV      r1,#0x4e000000
0008d4  e581000c          STR      r0,[r1,#0xc]
;;;685    	NF_ADDR(((1024+0)>>8)&0xff);	// A[10:8]
0008d8  e3a00004          MOV      r0,#4
0008dc  e3a0144e          MOV      r1,#0x4e000000
0008e0  e581000c          STR      r0,[r1,#0xc]
;;;686    	NF_ADDR((blockPage)&0xff);	// A[11;18]
0008e4  e20600ff          AND      r0,r6,#0xff
0008e8  e3a0144e          MOV      r1,#0x4e000000
0008ec  e581000c          STR      r0,[r1,#0xc]
;;;687    	NF_ADDR((blockPage>>8)&0xff);	// A[26:19]
0008f0  e1a00806          MOV      r0,r6,LSL #16
0008f4  e1a00c20          MOV      r0,r0,LSR #24
0008f8  e3a0144e          MOV      r1,#0x4e000000
0008fc  e581000c          STR      r0,[r1,#0xc]
;;;688    	
;;;689    	
;;;690    	NF_WRDATA(se8Buf[0]);	// Write Bad block information
000900  e59f0120          LDR      r0,|L1.2600|
000904  e5d00000          LDRB     r0,[r0,#0]  ; se8Buf
000908  e3a0144e          MOV      r1,#0x4e000000
00090c  e5810010          STR      r0,[r1,#0x10]
;;;691    
;;;692    	NF_CLEAR_RB();
000910  e3a0044e          MOV      r0,#0x4e000000
000914  e5900020          LDR      r0,[r0,#0x20]
000918  e3800004          ORR      r0,r0,#4
00091c  e3a0144e          MOV      r1,#0x4e000000
000920  e5810020          STR      r0,[r1,#0x20]
;;;693    	NF_CMD(0x10);   // Write 2nd command
000924  e3a00010          MOV      r0,#0x10
000928  e3a0144e          MOV      r1,#0x4e000000
00092c  e5810008          STR      r0,[r1,#8]
;;;694    	NF_DETECT_RB();
000930  e1a00000          NOP      
                  |L1.2356|
000934  e3a0044e          MOV      r0,#0x4e000000
000938  e5900020          LDR      r0,[r0,#0x20]
00093c  e3100004          TST      r0,#4
000940  0afffffb          BEQ      |L1.2356|
;;;695    
;;;696    	NF_CMD(0x70);
000944  e3a00070          MOV      r0,#0x70
000948  e3a0144e          MOV      r1,#0x4e000000
00094c  e5810008          STR      r0,[r1,#8]
;;;697      
;;;698    	for(i=0;i<64;i++)
000950  e3a04000          MOV      r4,#0
                  |L1.2388|
000954  e3540040          CMP      r4,#0x40
000958  aa000007          BGE      |L1.2428|
00095c  ea000001          B        |L1.2408|
                  |L1.2400|
000960  e2844001          ADD      r4,r4,#1
000964  eafffffa          B        |L1.2388|
;;;699          {
;;;700    	   NF_WRDATA(se8Buf[i]);	// Write spare array
                  |L1.2408|
000968  e59f00b8          LDR      r0,|L1.2600|
00096c  e7d00004          LDRB     r0,[r0,r4]
000970  e3a0144e          MOV      r1,#0x4e000000
000974  e5810010          STR      r0,[r1,#0x10]
;;;701          }
000978  eafffff8          B        |L1.2400|
;;;702    
;;;703    	NF_CLEAR_RB();
                  |L1.2428|
00097c  e3a0044e          MOV      r0,#0x4e000000
000980  e5900020          LDR      r0,[r0,#0x20]
000984  e3800004          ORR      r0,r0,#4
000988  e3a0144e          MOV      r1,#0x4e000000
00098c  e5810020          STR      r0,[r1,#0x20]
;;;704    	NF_CMD(0x10);   // Write 2nd command
000990  e3a00010          MOV      r0,#0x10
000994  e3a0144e          MOV      r1,#0x4e000000
000998  e5810008          STR      r0,[r1,#8]
;;;705    	NF_DETECT_RB();
00099c  e1a00000          NOP      
                  |L1.2464|
0009a0  e3a0044e          MOV      r0,#0x4e000000
0009a4  e5900020          LDR      r0,[r0,#0x20]
0009a8  e3100004          TST      r0,#4
0009ac  0afffffb          BEQ      |L1.2464|
;;;706    
;;;707    	NF_CMD(0x70);
0009b0  e3a00070          MOV      r0,#0x70
0009b4  e3a0144e          MOV      r1,#0x4e000000
0009b8  e5810008          STR      r0,[r1,#8]
;;;708        
;;;709    	for(i=0;i<3;i++);  //twhr=60ns////??????
0009bc  e3a04000          MOV      r4,#0
                  |L1.2496|
0009c0  e3540003          CMP      r4,#3
0009c4  aa000001          BGE      |L1.2512|
0009c8  e2844001          ADD      r4,r4,#1
0009cc  eafffffb          B        |L1.2496|
;;;710        
;;;711          if (NF_RDDATA()&0x1) // Spare arrray write error
                  |L1.2512|
0009d0  e3a0044e          MOV      r0,#0x4e000000
0009d4  e5900010          LDR      r0,[r0,#0x10]
0009d8  e3100001          TST      r0,#1
0009dc  0a000007          BEQ      |L1.2560|
;;;712          {	
;;;713        	NF_nFCE_H();
0009e0  e3a0044e          MOV      r0,#0x4e000000
0009e4  e5900004          LDR      r0,[r0,#4]
0009e8  e3800002          ORR      r0,r0,#2
0009ec  e3a0144e          MOV      r1,#0x4e000000
0009f0  e5810004          STR      r0,[r1,#4]
;;;714        	Uart_Printf("[Program error is occurred but ignored]\n");
0009f4  e28f0030          ADR      r0,|L1.2604|
0009f8  ebfffffe          BL       Uart_Printf
0009fc  ea000004          B        |L1.2580|
;;;715           }
;;;716          else 
;;;717          {
;;;718        	NF_nFCE_H();
                  |L1.2560|
000a00  e3a0044e          MOV      r0,#0x4e000000
000a04  e5900004          LDR      r0,[r0,#4]
000a08  e3800002          ORR      r0,r0,#2
000a0c  e3a0144e          MOV      r1,#0x4e000000
000a10  e5810004          STR      r0,[r1,#4]
;;;719          }
;;;720    
;;;721    	Uart_Printf("[block #%d is marked as a bad block]\n",block);
                  |L1.2580|
000a14  e1a01005          MOV      r1,r5
000a18  e28f0038          ADR      r0,|L1.2648|
000a1c  ebfffffe          BL       Uart_Printf
;;;722           return OK;
000a20  e3a00001          MOV      r0,#1
;;;723    }
000a24  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                  |L1.2600|
000a28  00000000          DCD      ||.data$0||
                  |L1.2604|
000a2c  6f72505b          DCB      "[Pro"
000a30  6d617267          DCB      "gram"
000a34  72726520          DCB      " err"
000a38  6920726f          DCB      "or i"
000a3c  636f2073          DCB      "s oc"
000a40  72727563          DCB      "curr"
000a44  62206465          DCB      "ed b"
000a48  69207475          DCB      "ut i"
000a4c  726f6e67          DCB      "gnor"
000a50  0a5d6465          DCB      "ed]\n"
000a54  00000000          DCB      "\0\0\0\0"
                  |L1.2648|
000a58  6f6c625b          DCB      "[blo"
000a5c  23206b63          DCB      "ck #"
000a60  69206425          DCB      "%d i"
000a64  616d2073          DCB      "s ma"
000a68  64656b72          DCB      "rked"
000a6c  20736120          DCB      " as "
000a70  61622061          DCB      "a ba"
000a74  6c622064          DCB      "d bl"
000a78  5d6b636f          DCB      "ock]"
000a7c  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  NF1G08_WritePage PROC
;;;822    static int NF1G08_WritePage(U32 block,U32 page,U8 *buffer)
;;;823    {
000a80  e92d47f0          STMFD    sp!,{r4-r10,lr}
000a84  e1a06000          MOV      r6,r0
000a88  e1a09001          MOV      r9,r1
000a8c  e1a08002          MOV      r8,r2
;;;824        int i;
;;;825    	U32 blockPage, Mecc, Secc;
;;;826    	U8 *bufPt=buffer;
000a90  e1a0a008          MOV      r10,r8
;;;827    
;;;828    	NFConDone_1G08=0;
000a94  e3a00000          MOV      r0,#0
000a98  e51f18a0          LDR      r1,|L1.512|
000a9c  e5810000          STR      r0,[r1,#0]  ; NFConDone_1G08
;;;829           rNFCONT|=(1<<9);
000aa0  e3a0044e          MOV      r0,#0x4e000000
000aa4  e5900004          LDR      r0,[r0,#4]
000aa8  e3800f80          ORR      r0,r0,#0x200
000aac  e3a0144e          MOV      r1,#0x4e000000
000ab0  e5810004          STR      r0,[r1,#4]
;;;830           rNFCONT|=(1<<10);
000ab4  e3a0044e          MOV      r0,#0x4e000000
000ab8  e5900004          LDR      r0,[r0,#4]
000abc  e3800e40          ORR      r0,r0,#0x400
000ac0  e3a0144e          MOV      r1,#0x4e000000
000ac4  e5810004          STR      r0,[r1,#4]
;;;831           pISR_NFCON= (unsigned)NFCon_Int_1G08;
000ac8  e51f0738          LDR      r0,|L1.920|
000acc  e51f1738          LDR      r1,|L1.924|
000ad0  e5810f80          STR      r0,[r1,#0xf80]
;;;832           rSRCPND=BIT_NFCON;
000ad4  e3a00740          MOV      r0,#0x1000000
000ad8  e3a0144a          MOV      r1,#0x4a000000
000adc  e5810000          STR      r0,[r1,#0]
;;;833           rINTMSK=~(BIT_NFCON);
000ae0  e3e00740          MVN      r0,#0x1000000
000ae4  e3a0144a          MOV      r1,#0x4a000000
000ae8  e5810008          STR      r0,[r1,#8]
;;;834    	  
;;;835    	NF_RSTECC();    // Initialize ECC
000aec  e3a0044e          MOV      r0,#0x4e000000
000af0  e5900004          LDR      r0,[r0,#4]
000af4  e3800010          ORR      r0,r0,#0x10
000af8  e3a0144e          MOV      r1,#0x4e000000
000afc  e5810004          STR      r0,[r1,#4]
;;;836           NF_MECC_UnLock();
000b00  e3a0044e          MOV      r0,#0x4e000000
000b04  e5900004          LDR      r0,[r0,#4]
000b08  e3c00020          BIC      r0,r0,#0x20
000b0c  e3a0144e          MOV      r1,#0x4e000000
000b10  e5810004          STR      r0,[r1,#4]
;;;837    	blockPage=(block<<6)+page;
000b14  e0897306          ADD      r7,r9,r6,LSL #6
;;;838    
;;;839    	NF_nFCE_L(); 
000b18  e3a0044e          MOV      r0,#0x4e000000
000b1c  e5900004          LDR      r0,[r0,#4]
000b20  e3c00002          BIC      r0,r0,#2
000b24  e3a0144e          MOV      r1,#0x4e000000
000b28  e5810004          STR      r0,[r1,#4]
;;;840    	NF_CMD(0x80);   // Write 1st command
000b2c  e3a00080          MOV      r0,#0x80
000b30  e3a0144e          MOV      r1,#0x4e000000
000b34  e5810008          STR      r0,[r1,#8]
;;;841    	NF_ADDR(0); 	// Column (A[7:0]) = 0
000b38  e3a00000          MOV      r0,#0
000b3c  e3a0144e          MOV      r1,#0x4e000000
000b40  e581000c          STR      r0,[r1,#0xc]
;;;842    	NF_ADDR(0); 	// A[11:8]
000b44  e3a00000          MOV      r0,#0
000b48  e3a0144e          MOV      r1,#0x4e000000
000b4c  e581000c          STR      r0,[r1,#0xc]
;;;843    	NF_ADDR((blockPage)&0xff);	// A[19:12]
000b50  e20700ff          AND      r0,r7,#0xff
000b54  e3a0144e          MOV      r1,#0x4e000000
000b58  e581000c          STR      r0,[r1,#0xc]
;;;844    	NF_ADDR((blockPage>>8)&0xff);	// A[27:20]
000b5c  e1a00807          MOV      r0,r7,LSL #16
000b60  e1a00c20          MOV      r0,r0,LSR #24
000b64  e3a0144e          MOV      r1,#0x4e000000
000b68  e581000c          STR      r0,[r1,#0xc]
;;;845    	
;;;846    	
;;;847    #if TRANS_MODE==C_LANG
;;;848         
;;;849    	for(i=0;i<2048;i++) {
;;;850    		NF_WRDATA8(*bufPt++);	// Write one page to NFM from buffer
;;;851        }
;;;852    #elif TRANS_MODE==DMA
;;;853          
;;;854    	// Memory to Nand dma setting
;;;855    	rSRCPND=BIT_DMA0;	// Init DMA src pending.

⌨️ 快捷键说明

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