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

📄 nand.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;204    }
000258  e1a0f00e          MOV      pc,lr
                          ENDP

                  NF8_CheckId PROC
;;;951    static U16 NF8_CheckId(void)
;;;952    {
00025c  e92d4038          STMFD    sp!,{r3-r5,lr}
;;;953        int i;
;;;954    	U16 id, id4th;
;;;955        
;;;956    	NF_nFCE_L();
000260  e3a0044e          MOV      r0,#0x4e000000
000264  e5900004          LDR      r0,[r0,#4]
000268  e3c00002          BIC      r0,r0,#2
00026c  e3a0144e          MOV      r1,#0x4e000000
000270  e5810004          STR      r0,[r1,#4]
;;;957          	NF_CMD(0x90);
000274  e3a00090          MOV      r0,#0x90
000278  e3a0144e          MOV      r1,#0x4e000000
00027c  e5810008          STR      r0,[r1,#8]
;;;958    	NF_ADDR(0x0);
000280  e3a00000          MOV      r0,#0
000284  e3a0144e          MOV      r1,#0x4e000000
000288  e581000c          STR      r0,[r1,#0xc]
;;;959    	for (i=0; i<10; i++);
00028c  e3a05000          MOV      r5,#0
                  |L1.656|
000290  e355000a          CMP      r5,#0xa
000294  aa000001          BGE      |L1.672|
000298  e2855001          ADD      r5,r5,#1
00029c  eafffffb          B        |L1.656|
;;;960    	Uart_Printf("NFSTAT: 0x%x\n", rNFSTAT);
                  |L1.672|
0002a0  e3a0044e          MOV      r0,#0x4e000000
0002a4  e5900020          LDR      r0,[r0,#0x20]
0002a8  e1a01000          MOV      r1,r0
0002ac  e28f0034          ADR      r0,|L1.744|
0002b0  ebfffffe          BL       Uart_Printf
;;;961           id=NF_RDDATA8()<<8;	// Maker code 0xec
0002b4  e3a0044e          MOV      r0,#0x4e000000
0002b8  e5d00010          LDRB     r0,[r0,#0x10]
0002bc  e1a04400          MOV      r4,r0,LSL #8
;;;962           id|=NF_RDDATA8();	// Devide code(K9S1208V:0x76), (K9K2G16U0M:0xca)
0002c0  e3a0044e          MOV      r0,#0x4e000000
0002c4  e5d00010          LDRB     r0,[r0,#0x10]
0002c8  e1804004          ORR      r4,r0,r4
;;;963    
;;;964    	NF_nFCE_H();
0002cc  e3a0044e          MOV      r0,#0x4e000000
0002d0  e5900004          LDR      r0,[r0,#4]
0002d4  e3800002          ORR      r0,r0,#2
0002d8  e3a0144e          MOV      r1,#0x4e000000
0002dc  e5810004          STR      r0,[r1,#4]
;;;965           return id;
0002e0  e1a00004          MOV      r0,r4
;;;966    }
0002e4  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.744|
0002e8  5453464e          DCB      "NFST"
0002ec  203a5441          DCB      "AT: "
0002f0  78257830          DCB      "0x%x"
0002f4  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  NF8_Print_Id PROC
;;;206    void NF8_Print_Id(void)
;;;207    {
0002f8  e92d4070          STMFD    sp!,{r4-r6,lr}
;;;208    	U16 id;
;;;209    	U8 maker, device;
;;;210    
;;;211    //	NF8_Init();
;;;212    	id = NF8_CheckId();
0002fc  ebfffffe          BL       NF8_CheckId
000300  e1a04000          MOV      r4,r0
;;;213    	
;;;214    	device = (U8)id;
000304  e20460ff          AND      r6,r4,#0xff
;;;215    	maker = (U8)(id>>8);
000308  e1a05424          MOV      r5,r4,LSR #8
;;;216    	
;;;217    	Uart_Printf("Maker:%x, Device:%x\n", maker, device);
00030c  e1a02006          MOV      r2,r6
000310  e1a01005          MOV      r1,r5
000314  e28f0004          ADR      r0,|L1.800|
000318  ebfffffe          BL       Uart_Printf
;;;218    }
00031c  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                  |L1.800|
000320  656b614d          DCB      "Make"
000324  78253a72          DCB      "r:%x"
000328  6544202c          DCB      ", De"
00032c  65636976          DCB      "vice"
000330  0a78253a          DCB      ":%x\n"
000334  00000000          DCB      "\0\0\0\0"
                          ENDP

                  NFCon_Int PROC
;;;626    void __irq NFCon_Int(void)
;;;627    {
000338  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;628           NFConDone=1;
00033c  e3a00001          MOV      r0,#1
000340  e59f1054          LDR      r1,|L1.924|
000344  e5810000          STR      r0,[r1,#0]  ; NFConDone
;;;629    	rINTMSK|=BIT_NFCON;
000348  e3a0044a          MOV      r0,#0x4a000000
00034c  e5900008          LDR      r0,[r0,#8]
000350  e3800740          ORR      r0,r0,#0x1000000
000354  e3a0144a          MOV      r1,#0x4a000000
000358  e5810008          STR      r0,[r1,#8]
;;;630    	ClearPending(BIT_NFCON);
00035c  e3a00740          MOV      r0,#0x1000000
000360  e3a0144a          MOV      r1,#0x4a000000
000364  e5810000          STR      r0,[r1,#0]
000368  e3a00740          MOV      r0,#0x1000000
00036c  e3a0144a          MOV      r1,#0x4a000000
000370  e5810010          STR      r0,[r1,#0x10]
000374  e3a0044a          MOV      r0,#0x4a000000
000378  e5900010          LDR      r0,[r0,#0x10]
;;;631    	if(rNFSTAT&0x8) Uart_Printf("Illegal Access is detected!!!\n");
00037c  e3a0044e          MOV      r0,#0x4e000000
000380  e5900020          LDR      r0,[r0,#0x20]
000384  e3100008          TST      r0,#8
000388  0a000001          BEQ      |L1.916|
00038c  e28f000c          ADR      r0,|L1.928|
000390  ebfffffe          BL       Uart_Printf
;;;632    //	else Uart_Printf("RnB is Detected!!!\n"); 
;;;633    }
                  |L1.916|
000394  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000398  e25ef004          SUBS     pc,lr,#4
                  |L1.924|
00039c  0000001c          DCD      ||.bss$2|| + 28
                  |L1.928|
0003a0  656c6c49          DCB      "Ille"
0003a4  206c6167          DCB      "gal "
0003a8  65636341          DCB      "Acce"
0003ac  69207373          DCB      "ss i"
0003b0  65642073          DCB      "s de"
0003b4  74636574          DCB      "tect"
0003b8  21216465          DCB      "ed!!"
0003bc  00000a21          DCB      "!\n\0\0"
                          ENDP

                  NF8_EraseBlock PROC
;;;575    static int NF8_EraseBlock(U32 block)
;;;576    {
0003c0  e92d4038          STMFD    sp!,{r3-r5,lr}
0003c4  e1a05000          MOV      r5,r0
;;;577    	U32 blockPage=(block<<5);
0003c8  e1a04285          MOV      r4,r5,LSL #5
;;;578        int i;
;;;579    
;;;580        NFConDone=0;
0003cc  e3a00000          MOV      r0,#0
0003d0  e51f103c          LDR      r1,|L1.924|
0003d4  e5810000          STR      r0,[r1,#0]  ; NFConDone
;;;581        rNFCONT|=(1<<9);
0003d8  e3a0044e          MOV      r0,#0x4e000000
0003dc  e5900004          LDR      r0,[r0,#4]
0003e0  e3800f80          ORR      r0,r0,#0x200
0003e4  e3a0144e          MOV      r1,#0x4e000000
0003e8  e5810004          STR      r0,[r1,#4]
;;;582        rNFCONT|=(1<<10);
0003ec  e3a0044e          MOV      r0,#0x4e000000
0003f0  e5900004          LDR      r0,[r0,#4]
0003f4  e3800e40          ORR      r0,r0,#0x400
0003f8  e3a0144e          MOV      r1,#0x4e000000
0003fc  e5810004          STR      r0,[r1,#4]
;;;583        pISR_NFCON= (unsigned)NFCon_Int;
000400  e59f013c          LDR      r0,|L1.1348|
000404  e59f113c          LDR      r1,|L1.1352|
000408  e5810f80          STR      r0,[r1,#0xf80]
;;;584        rSRCPND=BIT_NFCON;
00040c  e3a00740          MOV      r0,#0x1000000
000410  e3a0144a          MOV      r1,#0x4a000000
000414  e5810000          STR      r0,[r1,#0]
;;;585        rINTMSK=~(BIT_NFCON);
000418  e3e00740          MVN      r0,#0x1000000
00041c  e3a0144a          MOV      r1,#0x4a000000
000420  e5810008          STR      r0,[r1,#8]
;;;586    	
;;;587    #if BAD_CHECK
;;;588        if(NF8_IsBadBlock(block))
;;;589    	return FAIL;
;;;590    #endif
;;;591    
;;;592    	NF_nFCE_L();
000424  e3a0044e          MOV      r0,#0x4e000000
000428  e5900004          LDR      r0,[r0,#4]
00042c  e3c00002          BIC      r0,r0,#2
000430  e3a0144e          MOV      r1,#0x4e000000
000434  e5810004          STR      r0,[r1,#4]
;;;593        
;;;594    	NF_CMD(0x60);   // Erase one block 1st command, Block Addr:A9-A25
000438  e3a00060          MOV      r0,#0x60
00043c  e3a0144e          MOV      r1,#0x4e000000
000440  e5810008          STR      r0,[r1,#8]
;;;595    	// Address 3-cycle
;;;596    	NF_ADDR(blockPage&0xff);	    // Page number=0
000444  e20400ff          AND      r0,r4,#0xff
000448  e3a0144e          MOV      r1,#0x4e000000
00044c  e581000c          STR      r0,[r1,#0xc]
;;;597    	NF_ADDR((blockPage>>8)&0xff);   
000450  e1a00804          MOV      r0,r4,LSL #16
000454  e1a00c20          MOV      r0,r0,LSR #24
000458  e3a0144e          MOV      r1,#0x4e000000
00045c  e581000c          STR      r0,[r1,#0xc]
;;;598    	NF_ADDR((blockPage>>16)&0xff);
000460  e1a00404          MOV      r0,r4,LSL #8
000464  e1a00c20          MOV      r0,r0,LSR #24
000468  e3a0144e          MOV      r1,#0x4e000000
00046c  e581000c          STR      r0,[r1,#0xc]
;;;599    
;;;600    
;;;601    	NF_CLEAR_RB();
000470  e3a0044e          MOV      r0,#0x4e000000
000474  e5900020          LDR      r0,[r0,#0x20]
000478  e3800004          ORR      r0,r0,#4
00047c  e3a0144e          MOV      r1,#0x4e000000
000480  e5810020          STR      r0,[r1,#0x20]
;;;602    	NF_CMD(0xd0);	// Erase one blcok 2nd command
000484  e3a000d0          MOV      r0,#0xd0
000488  e3a0144e          MOV      r1,#0x4e000000
00048c  e5810008          STR      r0,[r1,#8]
;;;603    //	NF_DETECT_RB();
;;;604           while(NFConDone==0);
000490  e1a00000          NOP      
                  |L1.1172|
000494  e51f0100          LDR      r0,|L1.924|
000498  e5900000          LDR      r0,[r0,#0]  ; NFConDone
00049c  e3500000          CMP      r0,#0
0004a0  0afffffb          BEQ      |L1.1172|
;;;605    	 rNFCONT&=~(1<<9);
0004a4  e3a0044e          MOV      r0,#0x4e000000
0004a8  e5900004          LDR      r0,[r0,#4]
0004ac  e3c00f80          BIC      r0,r0,#0x200
0004b0  e3a0144e          MOV      r1,#0x4e000000
0004b4  e5810004          STR      r0,[r1,#4]
;;;606    	 rNFCONT&=~(1<<10); // Disable Illegal Access Interrupt
0004b8  e3a0044e          MOV      r0,#0x4e000000
0004bc  e5900004          LDR      r0,[r0,#4]
0004c0  e3c00e40          BIC      r0,r0,#0x400
0004c4  e3a0144e          MOV      r1,#0x4e000000
0004c8  e5810004          STR      r0,[r1,#4]
;;;607    	 if(rNFSTAT&0x8) return FAIL;
0004cc  e3a0044e          MOV      r0,#0x4e000000
0004d0  e5900020          LDR      r0,[r0,#0x20]
0004d4  e3100008          TST      r0,#8
0004d8  0a000001          BEQ      |L1.1252|
0004dc  e3a00000          MOV      r0,#0
;;;608    
;;;609    	NF_CMD(0x70);   // Read status command
;;;610    
;;;611          if (NF_RDDATA()&0x1) // Erase error
;;;612          {	
;;;613        	NF_nFCE_H();
;;;614    	Uart_Printf("[ERASE_ERROR:block#=%d]\n",block);
;;;615    //	NF8_MarkBadBlock(block);
;;;616    	return FAIL;
;;;617           }
;;;618           else 
;;;619           {
;;;620        	NF_nFCE_H();
;;;621           return OK;
;;;622           }
;;;623    }
                  |L1.1248|
0004e0  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.1252|
0004e4  e3a00070          MOV      r0,#0x70              ;609
0004e8  e3a0144e          MOV      r1,#0x4e000000        ;609
0004ec  e5810008          STR      r0,[r1,#8]            ;609
0004f0  e3a0044e          MOV      r0,#0x4e000000        ;611
0004f4  e5900010          LDR      r0,[r0,#0x10]         ;611
0004f8  e3100001          TST      r0,#1                 ;611
0004fc  0a000009          BEQ      |L1.1320|             ;611
000500  e3a0044e          MOV      r0,#0x4e000000        ;613
000504  e5900004          LDR      r0,[r0,#4]            ;613
000508  e3800002          ORR      r0,r0,#2              ;613
00050c  e3a0144e          MOV      r1,#0x4e000000        ;613
000510  e5810004          STR      r0,[r1,#4]            ;613
000514  e1a01005          MOV      r1,r5                 ;614
000518  e28f002c          ADR      r0,|L1.1356|          ;614
00051c  ebfffffe          BL       Uart_Printf           ;614
000520  e3a00000          MOV      r0,#0                 ;616
000524  eaffffed          B        |L1.1248|             ;616
                  |L1.1320|
000528  e3a0044e          MOV      r0,#0x4e000000        ;620
00052c  e5900004          LDR      r0,[r0,#4]            ;620
000530  e3800002          ORR      r0,r0,#2              ;620
000534  e3a0144e          MOV      r1,#0x4e000000        ;620
000538  e5810004          STR      r0,[r1,#4]            ;620
00053c  e3a00001          MOV      r0,#1                 ;621
000540  eaffffe6          B        |L1.1248|             ;621
                  |L1.1348|
000544  00000000          DCD      NFCon_Int             ;621
                  |L1.1352|
000548  31fff000          DCD      0x31fff000            ;621
                  |L1.1356|
00054c  4152455b          DCB      "[ERA"                ;621
000550  455f4553          DCB      "SE_E"                ;621
000554  524f5252          DCB      "RROR"                ;621
000558  6f6c623a          DCB      ":blo"                ;621
00055c  3d236b63          DCB      "ck#="                ;621
000560  0a5d6425          DCB      "%d]\n"               ;621
000564  00000000          DCB      "\0\0\0\0"            ;621
                          ENDP

                  Test_NF8_Block_Erase PROC
;;;221    void Test_NF8_Block_Erase(void)
;;;222    {

⌨️ 快捷键说明

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