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

📄 k9k2g16.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;73         U16 *srcPt,*saveSrcPt; //for x16 *
;;;74         U16 *testdata;
;;;75         U32 blockIndex;
;;;76     	
;;;77         Uart_Printf("\n[ SOP(K9K2G16) NAND Flash writing program]\n");
000b90  e28f0f61          ADR      r0,|L1.3356|
000b94  ebfffffe          BL       _printf
;;;78     
;;;79          rNFCONT&=~(1<<2); // Lock disable
000b98  e51f0984          LDR      r0,|L1.540|
000b9c  e5900004          LDR      r0,[r0,#4]
000ba0  e3c00004          BIC      r0,r0,#4
000ba4  e51f1990          LDR      r1,|L1.540|
000ba8  e5810004          STR      r0,[r1,#4]
;;;80     
;;;81     	srcAddress=0x10300000; 
000bac  e1a00141          MOV      r0,r1,ASR #2
000bb0  e59f1194          LDR      r1,|L1.3404|
000bb4  e5810000          STR      r0,[r1,#0]  ; srcAddress
;;;82     /*
;;;83     	// Initializing Buffer ----------------INIT
;;;84     	testdata = (U16 *)(srcAddress);
;;;85     	for(i=0;i<4096;i++)
;;;86     		*(testdata++) = i; 
;;;87     */
;;;88         Input_x16_TargetBlock();
000bb8  ebfffffe          BL       Input_x16_TargetBlock
;;;89     
;;;90         Uart_Printf("source base address(0x1030000x)=0x%x\n",srcAddress);
000bbc  e59f0188          LDR      r0,|L1.3404|
000bc0  e5901000          LDR      r1,[r0,#0]  ; srcAddress
000bc4  e28f0f61          ADR      r0,|L1.3408|
000bc8  ebfffffe          BL       _printf
;;;91         Uart_Printf("target start block number      =%d\n",targetBlock);
000bcc  e51f0078          LDR      r0,|L1.2908|
000bd0  e5901000          LDR      r1,[r0,#0]  ; targetBlock
000bd4  e28f0f67          ADR      r0,|L1.3448|
000bd8  ebfffffe          BL       _printf
;;;92         Uart_Printf("target size        (0x20000*Block)  =0x%x\n",targetSize);
000bdc  e51f0060          LDR      r0,|L1.2948|
000be0  e5901000          LDR      r1,[r0,#0]  ; targetSize
000be4  e28f0f6c          ADR      r0,|L1.3484|
000be8  ebfffffe          BL       _printf
;;;93     	
;;;94         srcPt=(U16 *)srcAddress; // for x16 *
000bec  e59f0158          LDR      r0,|L1.3404|
000bf0  e5905000          LDR      r5,[r0,#0]  ; srcAddress
;;;95         blockIndex=targetBlock;
000bf4  e51f00a0          LDR      r0,|L1.2908|
000bf8  e5904000          LDR      r4,[r0,#0]  ; targetBlock
;;;96     	
;;;97         while(1)
000bfc  e1a00000          NOP      
                  |L1.3072|
000c00  e1a00000          NOP      
;;;98         {
;;;99             saveSrcPt=srcPt;	
000c04  e1a08005          MOV      r8,r5
;;;100    		
;;;101    	#if BAD_CHECK_x16
;;;102    	if(NF16_IsBadBlock(blockIndex))	// 1:bad 0:good
000c08  e1a00004          MOV      r0,r4
000c0c  ebfffffe          BL       NF16_IsBadBlock
000c10  e3500000          CMP      r0,#0
000c14  0a000001          BEQ      |L1.3104|
;;;103            {
;;;104    	    blockIndex++;   // for next block
000c18  e2844001          ADD      r4,r4,#1
;;;105    	    continue;
000c1c  eafffff7          B        |L1.3072|
;;;106    	}
;;;107    	#endif
;;;108        
;;;109    	if(!NF16_EraseBlock(blockIndex))
                  |L1.3104|
000c20  e1a00004          MOV      r0,r4
000c24  ebfffffe          BL       NF16_EraseBlock
000c28  e3500000          CMP      r0,#0
000c2c  1a000001          BNE      |L1.3128|
;;;110    	{
;;;111               blockIndex++;   // for next block
000c30  e2844001          ADD      r4,r4,#1
;;;112    	    continue;
000c34  eafffff1          B        |L1.3072|
;;;113    	}
;;;114    	   
;;;115    	for(i=0;i<64;i++) //for advance ** page number
                  |L1.3128|
000c38  e3a06000          MOV      r6,#0
                  |L1.3132|
000c3c  e3560040          CMP      r6,#0x40
000c40  aa000022          BGE      |L1.3280|
000c44  ea000001          B        |L1.3152|
                  |L1.3144|
000c48  e2866001          ADD      r6,r6,#1
000c4c  eafffffa          B        |L1.3132|
;;;116    	{
;;;117    		if(!NF16_WritePage(blockIndex,i,srcPt))// block num, page num, buffer
                  |L1.3152|
000c50  e1a02005          MOV      r2,r5
000c54  e1a01006          MOV      r1,r6
000c58  e1a00004          MOV      r0,r4
000c5c  ebfffffe          BL       NF16_WritePage
000c60  e3500000          CMP      r0,#0
000c64  1a000005          BNE      |L1.3200|
;;;118    	    	{
;;;119    	        	programError=1;
000c68  e3a07001          MOV      r7,#1
;;;120    		 	Uart_Printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
000c6c  e1a02006          MOV      r2,r6
000c70  e1a01004          MOV      r1,r4
000c74  e28f0f53          ADR      r0,|L1.3528|
000c78  ebfffffe          BL       _printf
;;;121    	       	 break;
000c7c  ea000013          B        |L1.3280|
;;;122    	    	}
;;;123    			
;;;124    		#if ECC_CHECK_x16    
;;;125    	    	if(!NF16_ReadPage(blockIndex,i,srcPt))
                  |L1.3200|
000c80  e1a02005          MOV      r2,r5
000c84  e1a01006          MOV      r1,r6
000c88  e1a00004          MOV      r0,r4
000c8c  ebfffffe          BL       NF16_ReadPage
000c90  e3500000          CMP      r0,#0
000c94  1a000003          BNE      |L1.3240|
;;;126    	    	{
;;;127    			Uart_Printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
000c98  e1a02006          MOV      r2,r6
000c9c  e1a01004          MOV      r1,r4
000ca0  e28f0f48          ADR      r0,|L1.3528|
000ca4  ebfffffe          BL       _printf
;;;128    	    	}
;;;129    		#endif	    
;;;130    		
;;;131    	    	srcPt+=1024;	// 1 page for advance ** for x16 *
                  |L1.3240|
000ca8  e2855e80          ADD      r5,r5,#0x800
;;;132    	    	//Increase buffer addr one page size 
;;;133    
;;;134    
;;;135    	    	if((U32)srcPt>=(srcAddress+targetSize)) // Check end of buffer
000cac  e59f0098          LDR      r0,|L1.3404|
000cb0  e5900000          LDR      r0,[r0,#0]  ; srcAddress
000cb4  e51f1138          LDR      r1,|L1.2948|
000cb8  e5911000          LDR      r1,[r1,#0]  ; targetSize
000cbc  e0800001          ADD      r0,r0,r1
000cc0  e1500005          CMP      r0,r5
000cc4  8a000000          BHI      |L1.3276|
;;;136    			break;	// Exit for loop
000cc8  ea000000          B        |L1.3280|
;;;137    	}
                  |L1.3276|
000ccc  eaffffdd          B        |L1.3144|
;;;138    	Uart_Printf(".");		
                  |L1.3280|
000cd0  e28f0f44          ADR      r0,|L1.3560|
000cd4  ebfffffe          BL       _printf
;;;139            if(programError==1)
000cd8  e3570001          CMP      r7,#1
000cdc  1a000003          BNE      |L1.3312|
;;;140    	{
;;;141    	    blockIndex++;
000ce0  e2844001          ADD      r4,r4,#1
;;;142    	    srcPt=saveSrcPt;
000ce4  e1a05008          MOV      r5,r8
;;;143    	    programError=0;
000ce8  e3a07000          MOV      r7,#0
;;;144    	    continue;
000cec  eaffffc3          B        |L1.3072|
;;;145    	}
;;;146    	
;;;147    	if((U32)srcPt>=(srcAddress+targetSize))
                  |L1.3312|
000cf0  e59f0054          LDR      r0,|L1.3404|
000cf4  e5900000          LDR      r0,[r0,#0]  ; srcAddress
000cf8  e51f117c          LDR      r1,|L1.2948|
000cfc  e5911000          LDR      r1,[r1,#0]  ; targetSize
000d00  e0800001          ADD      r0,r0,r1
000d04  e1500005          CMP      r0,r5
000d08  8a000000          BHI      |L1.3344|
;;;148    	    break;	// Exit while loop
000d0c  ea000001          B        |L1.3352|
;;;149    	blockIndex++;
                  |L1.3344|
000d10  e2844001          ADD      r4,r4,#1
;;;150    	
;;;151    
;;;152        }
000d14  eaffffb9          B        |L1.3072|
;;;153    
;;;154    
;;;155    }
                  |L1.3352|
000d18  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                  |L1.3356|
000d1c  53205b0a          DCB      "\n[ S"
000d20  4b28504f          DCB      "OP(K"
000d24  47324b39          DCB      "9K2G"
000d28  20293631          DCB      "16) "
000d2c  444e414e          DCB      "NAND"
000d30  616c4620          DCB      " Fla"
000d34  77206873          DCB      "sh w"
000d38  69746972          DCB      "riti"
000d3c  7020676e          DCB      "ng p"
000d40  72676f72          DCB      "rogr"
000d44  0a5d6d61          DCB      "am]\n"
000d48  00000000          DCB      "\0\0\0\0"
                  |L1.3404|
000d4c  00000000          DCD      ||.bss$2||
                  |L1.3408|
000d50  72756f73          DCB      "sour"
000d54  62206563          DCB      "ce b"
000d58  20657361          DCB      "ase "
000d5c  72646461          DCB      "addr"
000d60  28737365          DCB      "ess("
000d64  30317830          DCB      "0x10"
000d68  30303033          DCB      "3000"
000d6c  3d297830          DCB      "0x)="
000d70  78257830          DCB      "0x%x"
                  |L1.3444|
000d74  0000000a          DCB      "\n\0\0\0"
                  |L1.3448|
000d78  67726174          DCB      "targ"
000d7c  73207465          DCB      "et s"
000d80  74726174          DCB      "tart"
000d84  6f6c6220          DCB      " blo"
000d88  6e206b63          DCB      "ck n"
000d8c  65626d75          DCB      "umbe"
000d90  20202072          DCB      "r   "
000d94  3d202020          DCB      "   ="
000d98  000a6425          DCB      "%d\n\0"
                  |L1.3484|
000d9c  67726174          DCB      "targ"
000da0  73207465          DCB      "et s"
000da4  20657a69          DCB      "ize "
000da8  20202020          DCB      "    "
000dac  28202020          DCB      "   ("
000db0  30327830          DCB      "0x20"
000db4  2a303030          DCB      "000*"
000db8  636f6c42          DCB      "Bloc"
000dbc  2020296b          DCB      "k)  "
000dc0  2578303d          DCB      "=0x%"
000dc4  00000a78          DCB      "x\n\0\0"
                  |L1.3528|
000dc8  20434345          DCB      "ECC "
000dcc  6f727245          DCB      "Erro"
000dd0  6c622872          DCB      "r(bl"
000dd4  3d6b636f          DCB      "ock="
000dd8  702c6425          DCB      "%d,p"
000ddc  3d656761          DCB      "age="
000de0  21216425          DCB      "%d!!"
000de4  00000a21          DCB      "!\n\0\0"
                  |L1.3560|
000de8  0000002e          DCB      ".\0\0\0"
                          ENDP

                  K9k2g16_PrintBadBlockNum PROC
;;;157    void K9k2g16_PrintBadBlockNum(void)
;;;158    {
000dec  e92d4010          STMFD    sp!,{r4,lr}
;;;159        int i;
;;;160    
;;;161        Uart_Printf("\n[ SOP(K9K2G16) NAND Flash bad block check]\n");
000df0  e28f0028          ADR      r0,|L1.3616|
000df4  ebfffffe          BL       _printf
;;;162    
;;;163        for(i=0;i<2048;i++) //  Read [spre area of first page] per Block number(0~2047)
000df8  e3a04000          MOV      r4,#0
                  |L1.3580|
000dfc  e3540e80          CMP      r4,#0x800
000e00  aa000005          BGE      |L1.3612|
000e04  ea000001          B        |L1.3600|
                  |L1.3592|
000e08  e2844001          ADD      r4,r4,#1
000e0c  eafffffa          B        |L1.3580|
;;;164        {
;;;165    	NF16_IsBadBlock(i);   // Print bad block
                  |L1.3600|
000e10  e1a00004          MOV      r0,r4
000e14  ebfffffe          BL       NF16_IsBadBlock
;;;166        }
000e18  eafffffa          B        |L1.3592|
;;;167    }
                  |L1.3612|
000e1c  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.3616|
000e20  53205b0a          DCB      "\n[ S"
000e24  4b28504f          DCB      "OP(K"
000e28  47324b39          DCB      "9K2G"
000e2c  20293631          DCB      "16) "
000e30  444e414e          DCB      "NAND"
000e34  616c4620          DCB      " Fla"
000e38  62206873          DCB      "sh b"
000e3c  62206461          DCB      "ad b"
000e40  6b636f6c          DCB      "lock"
000e44  65686320          DCB      " che"
000e48  0a5d6b63          DCB      "ck]\n"
000e4c  00000000          DCB      "\0\0\0\0"
                          ENDP

                  K9k2g16_PrintBlock PROC
;;;169    void K9k2g16_PrintBlock(void)// Printf one page
;;;170    {
000e50  e92d40f8          STMFD    sp!,{r3-r7,lr}
;;;171        int i,j;
;;;172        U32 block,page;
;;;173        U16 * downPt; //for x16 ** for advance *
;;;174    	
;;;175        downPt=(U16 *)0x11000000;
000e54  e3a05544          MOV      r5,#0x11000000
;;;176    
;;;177        Uart_Printf("\n[ SOP(K9K2G16) NAND Flash block read]\n");	
000e58  e28f0088          ADR      r0,|L1.3816|
000e5c  ebfffffe          BL       _printf
;;;178    
;;;179        

⌨️ 快捷键说明

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