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

📄 k9k2g16.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]

; commandline [-errors .\err\k9k2g16.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  NF16_ReadPage PROC
;;;438    static int NF16_ReadPage(U32 block,U32 page,U16 *buffer)
;;;439    {
                  |L1.0|
000000  e92d43f8          STMFD    sp!,{r3-r9,lr}
000004  e1a08000          MOV      r8,r0
000008  e1a07001          MOV      r7,r1
00000c  e1a09002          MOV      r9,r2
;;;440        int i,j;
;;;441        register U16 * bufPt=buffer;
000010  e1a04009          MOV      r4,r9
;;;442        unsigned int blockPage;
;;;443       
;;;444        blockPage=(block<<6)+page;
000014  e0876308          ADD      r6,r7,r8,LSL #6
;;;445        NF_RSTECC();    // Reset ECC
000018  e59f01fc          LDR      r0,|L1.540|
00001c  e5900004          LDR      r0,[r0,#4]
000020  e3800f40          ORR      r0,r0,#0x100
000024  e59f11f0          LDR      r1,|L1.540|
000028  e5810004          STR      r0,[r1,#4]
;;;446        NF_MECC_UnLock();
00002c  e1a00001          MOV      r0,r1
000030  e5900004          LDR      r0,[r0,#4]
000034  e3c00f80          BIC      r0,r0,#0x200
000038  e5810004          STR      r0,[r1,#4]
;;;447        NF_CLRRnB(); 
00003c  e1a00001          MOV      r0,r1
000040  e590002c          LDR      r0,[r0,#0x2c]
000044  e3800d80          ORR      r0,r0,#0x2000
000048  e581002c          STR      r0,[r1,#0x2c]
;;;448        NF_nFCE_L();      // nCE enable
00004c  e1a00001          MOV      r0,r1
000050  e5900004          LDR      r0,[r0,#4]
000054  e3c00080          BIC      r0,r0,#0x80
000058  e5810004          STR      r0,[r1,#4]
;;;449        
;;;450        NF_CMD(0x00);   // 1st Read command
00005c  e3a00000          MOV      r0,#0
000060  e1c11000          BIC      r1,r1,r0
000064  e5810008          STR      r0,[r1,#8]
;;;451        
;;;452    	NF_ADDR(0); 	// Column (A[7:0]) = 0
000068  e3a00000          MOV      r0,#0
00006c  e1c11000          BIC      r1,r1,r0
000070  e581000c          STR      r0,[r1,#0xc]
;;;453    	NF_ADDR(0);		// A[10:8]
000074  e3a00000          MOV      r0,#0
000078  e1c11000          BIC      r1,r1,r0
00007c  e581000c          STR      r0,[r1,#0xc]
;;;454    	NF_ADDR((blockPage)&0xff);	// A[18:11]
000080  e20600ff          AND      r0,r6,#0xff
000084  e581000c          STR      r0,[r1,#0xc]
;;;455    	NF_ADDR((blockPage>>8)&0xff);	// A[26:19]
000088  e1a00806          MOV      r0,r6,LSL #16
00008c  e1a00c20          MOV      r0,r0,LSR #24
000090  e581000c          STR      r0,[r1,#0xc]
;;;456    	NF_ADDR((blockPage>>16)&0xff);  // A27
000094  e1a00406          MOV      r0,r6,LSL #8
000098  e1a00c20          MOV      r0,r0,LSR #24
00009c  e581000c          STR      r0,[r1,#0xc]
;;;457    
;;;458        NF_CMD(0x30);   // 2nd Read command   
0000a0  e3a00030          MOV      r0,#0x30
0000a4  e1c11000          BIC      r1,r1,r0
0000a8  e5810008          STR      r0,[r1,#8]
;;;459    
;;;460    //    for(i=0;i<5;i++); //wait tWB(100ns)
;;;461        
;;;462        NF_TRANSRnB();    // Wait tRnB(max 12us)
0000ac  e1a00000          NOP      
                  |L1.176|
0000b0  e59f0164          LDR      r0,|L1.540|
0000b4  e590002c          LDR      r0,[r0,#0x2c]
0000b8  e3100d80          TST      r0,#0x2000
0000bc  0afffffb          BEQ      |L1.176|
;;;463    
;;;464    #if 0
;;;465    /*
;;;466        i=1024;
;;;467        while(i--!=0)
;;;468        {
;;;469           
;;;470    	 *bufPt++=NF_RDDATA();	// Read one page
;;;471     
;;;472        }
;;;473    */
;;;474    	for(i=0;i<1024;i++)   // 1 page 
;;;475    	{
;;;476    		*bufPt++=NF_RDDATA();  // Read one page
;;;477    
;;;478    	}
;;;479    
;;;480    #elif 1
;;;481    		//DMA 
;;;482    	  
;;;483    	//	  rINTMSK=~(BIT_DMA);
;;;484    	//	  rINTSUBMSK=~(BIT_SUB_DMA0);
;;;485    		  rSUBSRCPND=BIT_SUB_DMA0;	
0000c0  e3a00780          MOV      r0,#0x2000000
0000c4  e59f1154          LDR      r1,|L1.544|
0000c8  e5810018          STR      r0,[r1,#0x18]
;;;486    	
;;;487    		  rDISRC0=0x40c00010; //NF_RDDATA()
0000cc  e59f0150          LDR      r0,|L1.548|
0000d0  e0811880          ADD      r1,r1,r0,LSL #17
0000d4  e5810000          STR      r0,[r1,#0]
;;;488    		  rDISRCC0=(0<<1)|(1<<0); //arc=AHB,src_addr=fix
0000d8  e3a00001          MOV      r0,#1
0000dc  e1c11000          BIC      r1,r1,r0
0000e0  e5810004          STR      r0,[r1,#4]
;;;489    		  rDIDST0=(unsigned)bufPt;
0000e4  e1c10000          BIC      r0,r1,r0
0000e8  e5804008          STR      r4,[r0,#8]
;;;490    		  rDIDSTC0=(0<<1)|(0<<0); //dst=AHB,dst_addr=inc;
0000ec  e3a00000          MOV      r0,#0
0000f0  e1c11000          BIC      r1,r1,r0
0000f4  e581000c          STR      r0,[r1,#0xc]
;;;491    		  rDCON0=(1<<31)|(1<<30)|(1<<29)|(1<<28)|(1<<27)|(0<<23)|(1<<22)|(1<<20)|(2048/8);
0000f8  e59f0128          LDR      r0,|L1.552|
0000fc  e0011000          AND      r1,r1,r0
000100  e5810010          STR      r0,[r1,#0x10]
;;;492    		  //Handshake,AHB,interrupt,(BURST),whole,S/W,no_autoreload,16bit,count=2048/8;
;;;493    		  
;;;494    		  rDMASKTRIG0=(1<<1)|(1<<0);
000104  e3a00003          MOV      r0,#3
000108  e1c11000          BIC      r1,r1,r0
00010c  e5810020          STR      r0,[r1,#0x20]
;;;495    	  
;;;496    	  //   while(dmaDone==0);
;;;497    	  
;;;498    	  //   rINTSUBMSK=BIT_ALLMSK;
;;;499    	  //	rINTMSK=BIT_ALLMSK;
;;;500    	  
;;;501    		  while(!(rSUBSRCPND & BIT_SUB_DMA0));
000110  e1a00000          NOP      
                  |L1.276|
000114  e59f0104          LDR      r0,|L1.544|
000118  e5900018          LDR      r0,[r0,#0x18]
00011c  e3100780          TST      r0,#0x2000000
000120  0afffffb          BEQ      |L1.276|
;;;502    		  rSUBSRCPND=BIT_SUB_DMA0;
000124  e3a00780          MOV      r0,#0x2000000
000128  e59f10f0          LDR      r1,|L1.544|
00012c  e5810018          STR      r0,[r1,#0x18]
;;;503    	  
;;;504    	  //	  while(!(rNF_STAT&(1<<10)));
;;;505    	
;;;506    #elif 0
;;;507        __RdPage1024(bufPt);
;;;508    #endif
;;;509        NF_MECC_Lock();
000130  e28005fb          ADD      r0,r0,#0x3ec00000
000134  e5900004          LDR      r0,[r0,#4]
000138  e3800f80          ORR      r0,r0,#0x200
00013c  e28118a0          ADD      r1,r1,#0xa00000
000140  e5810004          STR      r0,[r1,#4]
;;;510    
;;;511    	for(i=0;i<32;i++)   // 1 page 
000144  e3a05000          MOV      r5,#0
                  |L1.328|
000148  e3550020          CMP      r5,#0x20
00014c  aa000013          BGE      |L1.416|
000150  ea000001          B        |L1.348|
                  |L1.340|
000154  e2855001          ADD      r5,r5,#1
000158  eafffffa          B        |L1.328|
;;;512    	{
;;;513    		se16Buf[i]=NF_RDDATA();  // Read one page
                  |L1.348|
00015c  e59f00b8          LDR      r0,|L1.540|
000160  e5900010          LDR      r0,[r0,#0x10]
000164  e59f10c0          LDR      r1,|L1.556|
000168  e0811085          ADD      r1,r1,r5,LSL #1
00016c  e1c100b0          STRH     r0,[r1,#0]
;;;514    		
;;;515    		if(page==0)
000170  e3570000          CMP      r7,#0
000174  1a000008          BNE      |L1.412|
;;;516    		{
;;;517    		if(i%16==0)
000178  e315000f          TST      r5,#0xf
00017c  1a000001          BNE      |L1.392|
;;;518    		Uart_Printf("\nR-SECC:");
000180  e28f00a8          ADR      r0,|L1.560|
000184  ebfffffe          BL       _printf
;;;519    		Uart_Printf("%04x ",se16Buf[i]);
                  |L1.392|
000188  e59f009c          LDR      r0,|L1.556|
00018c  e0800085          ADD      r0,r0,r5,LSL #1
000190  e1d010b0          LDRH     r1,[r0,#0]
000194  e28f00a0          ADR      r0,|L1.572|
000198  ebfffffe          BL       _printf
;;;520    		}
;;;521    		
;;;522    	}
                  |L1.412|
00019c  eaffffec          B        |L1.340|
;;;523    	
;;;524        rNFMECCDATA0=se16Buf[0];
                  |L1.416|
0001a0  e59f0084          LDR      r0,|L1.556|
0001a4  e1d000b0          LDRH     r0,[r0,#0]  ; se16Buf
0001a8  e59f106c          LDR      r1,|L1.540|
0001ac  e5810014          STR      r0,[r1,#0x14]
;;;525        rNFMECCDATA1=se16Buf[1];
0001b0  e59f0074          LDR      r0,|L1.556|
0001b4  e1d000b2          LDRH     r0,[r0,#2]  ; se16Buf
0001b8  e5810018          STR      r0,[r1,#0x18]
;;;526        rNFMECCDATA2=se16Buf[2];
0001bc  e59f0068          LDR      r0,|L1.556|
0001c0  e1d000b4          LDRH     r0,[r0,#4]  ; se16Buf
0001c4  e581001c          STR      r0,[r1,#0x1c]
;;;527        rNFMECCDATA3=se16Buf[3];
0001c8  e59f005c          LDR      r0,|L1.556|
0001cc  e1d000b6          LDRH     r0,[r0,#6]  ; se16Buf
0001d0  e5810020          STR      r0,[r1,#0x20]
;;;528    
;;;529        NF_nFCE_H();  
0001d4  e1a00001          MOV      r0,r1
0001d8  e5900004          LDR      r0,[r0,#4]
0001dc  e3800080          ORR      r0,r0,#0x80
0001e0  e5810004          STR      r0,[r1,#4]
;;;530    
;;;531        if(((rNFESTAT0&0x03)||(rNFESTAT1&0x03))==0x0)
0001e4  e1a00001          MOV      r0,r1
0001e8  e5900030          LDR      r0,[r0,#0x30]
0001ec  e3100003          TST      r0,#3
0001f0  1a000005          BNE      |L1.524|
0001f4  e1a00001          MOV      r0,r1
0001f8  e5900034          LDR      r0,[r0,#0x34]
0001fc  e3100003          TST      r0,#3
000200  1a000001          BNE      |L1.524|
;;;532        	{
;;;533        	     //Uart_Printf("[ECC OK!!!]\n");
;;;534          	     return 1;
000204  e3a00001          MOV      r0,#1
;;;535           }
;;;536    	else
;;;537    	{
;;;538    		  Uart_Printf(" ECC FAIL !!!\n");
;;;539    		return 0;
;;;540    	}
;;;541    
;;;542    }    	
                  |L1.520|
000208  e8bd83f8          LDMFD    sp!,{r3-r9,pc}
                  |L1.524|
00020c  e28f0030          ADR      r0,|L1.580|           ;538
000210  ebfffffe          BL       _printf               ;538
000214  e3a00000          MOV      r0,#0                 ;539
000218  eafffffa          B        |L1.520|              ;539
                  |L1.540|
00021c  40c00000          DCD      0x40c00000            ;539
                  |L1.544|
000220  40200000          DCD      0x40200000            ;539
                  |L1.548|
000224  40c00010          DCD      0x40c00010            ;539
                  |L1.552|
000228  f8500100          DCD      0xf8500100            ;539
                  |L1.556|
00022c  00000000          DCD      ||.data$0||           ;539
                  |L1.560|
000230  532d520a          DCB      "\nR-S"               ;539
000234  3a434345          DCB      "ECC:"                ;539
000238  00000000          DCB      "\0\0\0\0"            ;539
                  |L1.572|
00023c  78343025          DCB      "%04x"                ;539
000240  00000020          DCB      " \0\0\0"             ;539
                  |L1.580|
000244  43434520          DCB      " ECC"                ;539
000248  49414620          DCB      " FAI"                ;539
00024c  2121204c          DCB      "L !!"                ;539
000250  00000a21          DCB      "!\n\0\0"             ;539
                          ENDP

                  NF16_MarkBadBlock PROC
;;;380    static int NF16_MarkBadBlock(U32 block)
;;;381    {
000254  e92d4070          STMFD    sp!,{r4-r6,lr}
000258  e1a06000          MOV      r6,r0
;;;382        int i;
;;;383        U32 blockPage;
;;;384        blockPage=(block<<6);
00025c  e1a05306          MOV      r5,r6,LSL #6
;;;385        
;;;386        se16Buf[0]=0xffff;
000260  e3e00000          MVN      r0,#0
000264  e51f1040          LDR      r1,|L1.556|
000268  e1c100b0          STRH     r0,[r1,#0]  ; se16Buf
;;;387        se16Buf[1]=0xffff;    
00026c  e3e00000          MVN      r0,#0
000270  e51f104c          LDR      r1,|L1.556|
000274  e1c100b2          STRH     r0,[r1,#2]  ; se16Buf
;;;388        se16Buf[2]=0xffff;
000278  e3e00000          MVN      r0,#0
00027c  e51f1058          LDR      r1,|L1.556|
000280  e1c100b4          STRH     r0,[r1,#4]  ; se16Buf
;;;389        se16Buf[3]=0xffff;  	
000284  e3e00000          MVN      r0,#0
000288  e51f1064          LDR      r1,|L1.556|
00028c  e1c100b6          STRH     r0,[r1,#6]  ; se16Buf
;;;390        se16Buf[5]=0x4444;   // Bad blcok mark=0x4444
000290  e59f0160          LDR      r0,|L1.1016|
000294  e51f1070          LDR      r1,|L1.556|
000298  e1c100ba          STRH     r0,[r1,#0xa]  ; se16Buf
;;;391      
;;;392      //  NF_CLRRnB(); 
;;;393        NF_nFCE_L(); 
00029c  e51f0088          LDR      r0,|L1.540|
0002a0  e5900004          LDR      r0,[r0,#4]

⌨️ 快捷键说明

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