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

📄 k9f1g08.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;585        if(NF1G08_IsBadBlock(block))
;;;586    	return FAIL;
;;;587    #endif
;;;588    
;;;589    	NF_nFCE_L();
000288  e3a0044e          MOV      r0,#0x4e000000
00028c  e5900004          LDR      r0,[r0,#4]
000290  e3c00002          BIC      r0,r0,#2
000294  e3a0144e          MOV      r1,#0x4e000000
000298  e5810004          STR      r0,[r1,#4]
;;;590        
;;;591    	NF_CMD(0x60);   // Erase one block 1st command, Block Addr:A9-A25
00029c  e3a00060          MOV      r0,#0x60
0002a0  e3a0144e          MOV      r1,#0x4e000000
0002a4  e5810008          STR      r0,[r1,#8]
;;;592    	// Address 2-cycle
;;;593    	NF_ADDR(blockPage&0xff);	    // Page number=0
0002a8  e20500ff          AND      r0,r5,#0xff
0002ac  e3a0144e          MOV      r1,#0x4e000000
0002b0  e581000c          STR      r0,[r1,#0xc]
;;;594    	NF_ADDR((blockPage>>8)&0xff);   
0002b4  e1a00805          MOV      r0,r5,LSL #16
0002b8  e1a00c20          MOV      r0,r0,LSR #24
0002bc  e3a0144e          MOV      r1,#0x4e000000
0002c0  e581000c          STR      r0,[r1,#0xc]
;;;595    	
;;;596    
;;;597    
;;;598    	NF_CLEAR_RB();
0002c4  e3a0044e          MOV      r0,#0x4e000000
0002c8  e5900020          LDR      r0,[r0,#0x20]
0002cc  e3800004          ORR      r0,r0,#4
0002d0  e3a0144e          MOV      r1,#0x4e000000
0002d4  e5810020          STR      r0,[r1,#0x20]
;;;599    	NF_CMD(0xd0);	// Erase one blcok 2nd command
0002d8  e3a000d0          MOV      r0,#0xd0
0002dc  e3a0144e          MOV      r1,#0x4e000000
0002e0  e5810008          STR      r0,[r1,#8]
;;;600    //	NF_DETECT_RB();
;;;601           while(NFConDone_1G08==0);
0002e4  e1a00000          NOP      
                  |L1.744|
0002e8  e51f00f0          LDR      r0,|L1.512|
0002ec  e5900000          LDR      r0,[r0,#0]  ; NFConDone_1G08
0002f0  e3500000          CMP      r0,#0
0002f4  0afffffb          BEQ      |L1.744|
;;;602    	 rNFCONT&=~(1<<9);
0002f8  e3a0044e          MOV      r0,#0x4e000000
0002fc  e5900004          LDR      r0,[r0,#4]
000300  e3c00f80          BIC      r0,r0,#0x200
000304  e3a0144e          MOV      r1,#0x4e000000
000308  e5810004          STR      r0,[r1,#4]
;;;603    	 rNFCONT&=~(1<<10); // Disable Illegal Access Interrupt
00030c  e3a0044e          MOV      r0,#0x4e000000
000310  e5900004          LDR      r0,[r0,#4]
000314  e3c00e40          BIC      r0,r0,#0x400
000318  e3a0144e          MOV      r1,#0x4e000000
00031c  e5810004          STR      r0,[r1,#4]
;;;604    	 if(rNFSTAT&0x8) return FAIL;
000320  e3a0044e          MOV      r0,#0x4e000000
000324  e5900020          LDR      r0,[r0,#0x20]
000328  e3100008          TST      r0,#8
00032c  0a000001          BEQ      |L1.824|
000330  e3a00000          MOV      r0,#0
;;;605    
;;;606    	NF_CMD(0x70);   // Read status command
;;;607    
;;;608          if (NF_RDDATA()&0x1) // Erase error
;;;609          {	
;;;610        	EXT_NF_nFCE_H();
;;;611    	Uart_Printf("[ERASE_ERROR:block#=%d]\n",block);
;;;612    //	NF8_MarkBadBlock(block);
;;;613    	return FAIL;
;;;614           }
;;;615           else 
;;;616           {
;;;617        	NF_nFCE_H();
;;;618           return OK;
;;;619           }
;;;620    }
                  |L1.820|
000334  e8bd8038          LDMFD    sp!,{r3-r5,pc}
                  |L1.824|
000338  e3a00070          MOV      r0,#0x70              ;606
00033c  e3a0144e          MOV      r1,#0x4e000000        ;606
000340  e5810008          STR      r0,[r1,#8]            ;606
000344  e3a0044e          MOV      r0,#0x4e000000        ;608
000348  e5900010          LDR      r0,[r0,#0x10]         ;608
00034c  e3100001          TST      r0,#1                 ;608
000350  0a000009          BEQ      |L1.892|              ;608
000354  e3a00456          MOV      r0,#0x56000000        ;610
000358  e5900004          LDR      r0,[r0,#4]            ;610
00035c  e3800b40          ORR      r0,r0,#0x10000        ;610
000360  e3a01456          MOV      r1,#0x56000000        ;610
000364  e5810004          STR      r0,[r1,#4]            ;610
000368  e1a01004          MOV      r1,r4                 ;611
00036c  e28f002c          ADR      r0,|L1.928|           ;611
000370  ebfffffe          BL       Uart_Printf           ;611
000374  e3a00000          MOV      r0,#0                 ;613
000378  eaffffed          B        |L1.820|              ;613
                  |L1.892|
00037c  e3a0044e          MOV      r0,#0x4e000000        ;617
000380  e5900004          LDR      r0,[r0,#4]            ;617
000384  e3800002          ORR      r0,r0,#2              ;617
000388  e3a0144e          MOV      r1,#0x4e000000        ;617
00038c  e5810004          STR      r0,[r1,#4]            ;617
000390  e3a00001          MOV      r0,#1                 ;618
000394  eaffffe6          B        |L1.820|              ;618
                  |L1.920|
000398  00000000          DCD      NFCon_Int_1G08        ;618
                  |L1.924|
00039c  31fff000          DCD      0x31fff000            ;618
                  |L1.928|
0003a0  4152455b          DCB      "[ERA"                ;618
0003a4  455f4553          DCB      "SE_E"                ;618
0003a8  524f5252          DCB      "RROR"                ;618
0003ac  6f6c623a          DCB      ":blo"                ;618
0003b0  3d236b63          DCB      "ck#="                ;618
0003b4  0a5d6425          DCB      "%d]\n"               ;618
0003b8  00000000          DCB      "\0\0\0\0"            ;618
                          ENDP

                  Test_NF1G08_Block_Erase PROC
;;;212    void Test_NF1G08_Block_Erase(void)
;;;213    {
0003bc  e92d4010          STMFD    sp!,{r4,lr}
;;;214    	U32 block=0;
0003c0  e3a04000          MOV      r4,#0
;;;215    
;;;216    	Uart_Printf("(K9F1G08) NAND Block erase\n");
0003c4  e28f004c          ADR      r0,|L1.1048|
0003c8  ebfffffe          BL       Uart_Printf
;;;217    
;;;218    	if((Read_Status()&0x80)==0) {
0003cc  ebfffffe          BL       Read_Status
0003d0  e3100080          TST      r0,#0x80
0003d4  1a000002          BNE      |L1.996|
;;;219    		Uart_Printf("Write protected.\n");
0003d8  e28f0054          ADR      r0,|L1.1076|
0003dc  ebfffffe          BL       Uart_Printf
;;;220    		return;
;;;221    	}
;;;222    
;;;223    	Uart_Printf("Block # to erase: ");
;;;224    	block = Uart_GetIntNum();
;;;225    
;;;226    //	NF8_Init();
;;;227    	
;;;228    	if(NF1G08_EraseBlock(block)==FAIL) return;
;;;229    
;;;230    	Uart_Printf("%d-block erased.\n", block);
;;;231    
;;;232    }
                  |L1.992|
0003e0  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.996|
0003e4  e28f005c          ADR      r0,|L1.1096|          ;223
0003e8  ebfffffe          BL       Uart_Printf           ;223
0003ec  ebfffffe          BL       Uart_GetIntNum        ;224
0003f0  e1a04000          MOV      r4,r0                 ;224
0003f4  e1a00004          MOV      r0,r4                 ;228
0003f8  ebfffffe          BL       NF1G08_EraseBlock     ;228
0003fc  e3500000          CMP      r0,#0                 ;228
000400  1a000000          BNE      |L1.1032|             ;228
000404  eafffff5          B        |L1.992|              ;228
                  |L1.1032|
000408  e1a01004          MOV      r1,r4                 ;230
00040c  e28f0048          ADR      r0,|L1.1116|          ;230
000410  ebfffffe          BL       Uart_Printf           ;230
000414  eafffff1          B        |L1.992|
                  |L1.1048|
000418  46394b28          DCB      "(K9F"
00041c  38304731          DCB      "1G08"
000420  414e2029          DCB      ") NA"
000424  4220444e          DCB      "ND B"
000428  6b636f6c          DCB      "lock"
00042c  61726520          DCB      " era"
000430  000a6573          DCB      "se\n\0"
                  |L1.1076|
000434  74697257          DCB      "Writ"
000438  72702065          DCB      "e pr"
00043c  6365746f          DCB      "otec"
000440  2e646574          DCB      "ted."
000444  0000000a          DCB      "\n\0\0\0"
                  |L1.1096|
000448  636f6c42          DCB      "Bloc"
00044c  2023206b          DCB      "k # "
000450  65206f74          DCB      "to e"
000454  65736172          DCB      "rase"
000458  0000203a          DCB      ": \0\0"
                  |L1.1116|
00045c  622d6425          DCB      "%d-b"
000460  6b636f6c          DCB      "lock"
000464  61726520          DCB      " era"
000468  2e646573          DCB      "sed."
00046c  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  NF1G08_ReadPage PROC
;;;725    static int NF1G08_ReadPage(U32 block,U32 page,U8 *buffer)
;;;726    {
000470  e92d47f0          STMFD    sp!,{r4-r10,lr}
000474  e1a07000          MOV      r7,r0
000478  e1a08001          MOV      r8,r1
00047c  e1a09002          MOV      r9,r2
;;;727           int i;
;;;728           unsigned int blockPage;
;;;729    	U32 Mecc, Secc;
;;;730    	U8 *bufPt=buffer;
000480  e1a0a009          MOV      r10,r9
;;;731    	    
;;;732           blockPage=(block<<6)+page;
000484  e0886307          ADD      r6,r8,r7,LSL #6
;;;733    	NF_RSTECC();    // Initialize ECC
000488  e3a0044e          MOV      r0,#0x4e000000
00048c  e5900004          LDR      r0,[r0,#4]
000490  e3800010          ORR      r0,r0,#0x10
000494  e3a0144e          MOV      r1,#0x4e000000
000498  e5810004          STR      r0,[r1,#4]
;;;734    	NF_MECC_UnLock();
00049c  e3a0044e          MOV      r0,#0x4e000000
0004a0  e5900004          LDR      r0,[r0,#4]
0004a4  e3c00020          BIC      r0,r0,#0x20
0004a8  e3a0144e          MOV      r1,#0x4e000000
0004ac  e5810004          STR      r0,[r1,#4]
;;;735        
;;;736    	NF_nFCE_L();    
0004b0  e3a0044e          MOV      r0,#0x4e000000
0004b4  e5900004          LDR      r0,[r0,#4]
0004b8  e3c00002          BIC      r0,r0,#2
0004bc  e3a0144e          MOV      r1,#0x4e000000
0004c0  e5810004          STR      r0,[r1,#4]
;;;737    
;;;738    	NF_CLEAR_RB();
0004c4  e3a0044e          MOV      r0,#0x4e000000
0004c8  e5900020          LDR      r0,[r0,#0x20]
0004cc  e3800004          ORR      r0,r0,#4
0004d0  e3a0144e          MOV      r1,#0x4e000000
0004d4  e5810020          STR      r0,[r1,#0x20]
;;;739    	NF_CMD(0x00);	// Read command
0004d8  e3a00000          MOV      r0,#0
0004dc  e3a0144e          MOV      r1,#0x4e000000
0004e0  e5810008          STR      r0,[r1,#8]
;;;740           NF_ADDR(0); 	// Column (A[7:0]) = 0
0004e4  e3a00000          MOV      r0,#0
0004e8  e3a0144e          MOV      r1,#0x4e000000
0004ec  e581000c          STR      r0,[r1,#0xc]
;;;741           NF_ADDR(0);		// A[11:8]
0004f0  e3a00000          MOV      r0,#0
0004f4  e3a0144e          MOV      r1,#0x4e000000
0004f8  e581000c          STR      r0,[r1,#0xc]
;;;742           NF_ADDR((blockPage)&0xff);	// A[19:12]
0004fc  e20600ff          AND      r0,r6,#0xff
000500  e3a0144e          MOV      r1,#0x4e000000
000504  e581000c          STR      r0,[r1,#0xc]
;;;743           NF_ADDR((blockPage>>8)&0xff);	// A[27:20]
000508  e1a00806          MOV      r0,r6,LSL #16
00050c  e1a00c20          MOV      r0,r0,LSR #24
000510  e3a0144e          MOV      r1,#0x4e000000
000514  e581000c          STR      r0,[r1,#0xc]
;;;744          
;;;745           NF_CMD(0x30);	// 2'nd command
000518  e3a00030          MOV      r0,#0x30
00051c  e3a0144e          MOV      r1,#0x4e000000
000520  e5810008          STR      r0,[r1,#8]
;;;746           NF_DETECT_RB();
000524  e1a00000          NOP      
                  |L1.1320|
000528  e3a0044e          MOV      r0,#0x4e000000
00052c  e5900020          LDR      r0,[r0,#0x20]
000530  e3100004          TST      r0,#4
000534  0afffffb          BEQ      |L1.1320|
;;;747    	
;;;748          #if TRANS_MODE==C_LANG
;;;749    	    for(i=0;i<2048;i++) {
;;;750    	    	*bufPt++=NF_RDDATA8();	// Read one page
;;;751    	    }
;;;752          #elif TRANS_MODE==DMA
;;;753    		// Nand to memory dma setting
;;;754    	    rSRCPND=BIT_DMA0;	// Init DMA src pending.
000538  e3a00b80          MOV      r0,#0x20000
00053c  e3a0144a          MOV      r1,#0x4a000000
000540  e5810000          STR      r0,[r1,#0]
;;;755    	    rDISRC0=NFDATA; 	// Nand flash data register
000544  e59f015c          LDR      r0,|L1.1704|
000548  e3a0144b          MOV      r1,#0x4b000000
00054c  e5810000          STR      r0,[r1,#0]
;;;756    	    rDISRCC0=(0<<1) | (1<<0); //arc=AHB,src_addr=fix
000550  e3a00001          MOV      r0,#1
000554  e3a0144b          MOV      r1,#0x4b000000
000558  e5810004          STR      r0,[r1,#4]
;;;757    	    rDIDST0=(unsigned)bufPt;
00055c  e3a0044b          MOV      r0,#0x4b000000
000560  e580a008          STR      r10,[r0,#8]
;;;758    	    rDIDSTC0=(0<<1) | (0<<0); //dst=AHB,dst_addr=inc;
000564  e3a00000          MOV      r0,#0
000568  e3a0144b          MOV      r1,#0x4b000000
00056c  e581000c          STR      r0,[r1,#0xc]
;;;759    	    rDCON0=(1<<31)|(1<<30)|(1<<29)|(1<<28)|(1<<27)|(0<<23)|(1<<22)|(2<<20)|(2048/4/4);
000570  e59f0134          LDR      r0,|L1.1708|
000574  e3a0144b          MOV      r1,#0x4b000000
000578  e5810010          STR      r0,[r1,#0x10]
;;;760    		//Handshake,AHB,interrupt,(4-burst),whole,S/W,no_autoreload,word,count=128;
;;;761    
;;;762    		// DMA on and start.
;;;763    	    rDMASKTRIG0=(1<<1)|(1<<0);
00057c  e3a00003          MOV      r0,#3

⌨️ 快捷键说明

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