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

📄 k9s1208.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:

                  Input_x8_TargetBlock PROC
;;;262    static void Input_x8_TargetBlock(void)
;;;263    {
0008a0  e92d4008          STMFD    sp!,{r3,lr}
;;;264        Uart_Printf("\nAvailable target block number: 0~4095\n");
0008a4  e28f003c          ADR      r0,|L1.2280|
0008a8  ebfffffe          BL       _printf
;;;265        Uart_Printf("Input target start block number:");
0008ac  e28f005c          ADR      r0,|L1.2320|
0008b0  ebfffffe          BL       _printf
;;;266        targetBlock=Uart_GetIntNum();	// Block number(0~4095)
0008b4  ebfffffe          BL       Uart_GetIntNum
0008b8  e59f1074          LDR      r1,|L1.2356|
0008bc  e5810000          STR      r0,[r1,#0]  ; targetBlock
;;;267        if(targetSize==0)
0008c0  e59f0070          LDR      r0,|L1.2360|
0008c4  e5900000          LDR      r0,[r0,#0]  ; targetSize
0008c8  e3500000          CMP      r0,#0
0008cc  1a000004          BNE      |L1.2276|
;;;268        {
;;;269    //       Uart_Printf("1,048,576 = 0x100000,  31,457,280 = 0x1e00000 \n");
;;;270       	Uart_Printf("Input program file size(bytes): ");
0008d0  e28f0064          ADR      r0,|L1.2364|
0008d4  ebfffffe          BL       _printf
;;;271    	targetSize=Uart_GetIntNum();	// Total byte size
0008d8  ebfffffe          BL       Uart_GetIntNum
0008dc  e59f1054          LDR      r1,|L1.2360|
0008e0  e5810000          STR      r0,[r1,#0]  ; targetSize
;;;272        }
;;;273    }
                  |L1.2276|
0008e4  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.2280|
0008e8  6176410a          DCB      "\nAva"
0008ec  62616c69          DCB      "ilab"
0008f0  7420656c          DCB      "le t"
0008f4  65677261          DCB      "arge"
0008f8  6c622074          DCB      "t bl"
0008fc  206b636f          DCB      "ock "
000900  626d756e          DCB      "numb"
000904  203a7265          DCB      "er: "
000908  30347e30          DCB      "0~40"
00090c  000a3539          DCB      "95\n\0"
                  |L1.2320|
000910  75706e49          DCB      "Inpu"
000914  61742074          DCB      "t ta"
000918  74656772          DCB      "rget"
00091c  61747320          DCB      " sta"
000920  62207472          DCB      "rt b"
000924  6b636f6c          DCB      "lock"
000928  6d756e20          DCB      " num"
00092c  3a726562          DCB      "ber:"
000930  00000000          DCB      "\0\0\0\0"
                  |L1.2356|
000934  00000008          DCD      ||.bss$2|| + 8
                  |L1.2360|
000938  0000000c          DCD      ||.bss$2|| + 12
                  |L1.2364|
00093c  75706e49          DCB      "Inpu"
000940  72702074          DCB      "t pr"
000944  6172676f          DCB      "ogra"
000948  6966206d          DCB      "m fi"
00094c  7320656c          DCB      "le s"
000950  28657a69          DCB      "ize("
000954  65747962          DCB      "byte"
000958  203a2973          DCB      "s): "
00095c  00000000          DCB      "\0\0\0\0"
                          ENDP

                  K9S1208_Program PROC
;;;64     void K9S1208_Program(void)
;;;65     {
000960  e92d41f0          STMFD    sp!,{r4-r8,lr}
;;;66         int i,j;
;;;67         int programError=0;
000964  e3a07000          MOV      r7,#0
;;;68         U8 *srcPt,*saveSrcPt;
;;;69         U32 blockIndex;
;;;70         U8 *testdata;	
;;;71     
;;;72         Uart_Printf("\n[ SMC(K9S1208V0M) NAND Flash writing program]\n");
000968  e28f0f59          ADR      r0,|L1.2772|
00096c  ebfffffe          BL       _printf
;;;73     
;;;74          rNFCONT&=~(1<<2); // Lock disable
000970  e51f07e4          LDR      r0,|L1.404|
000974  e5900004          LDR      r0,[r0,#4]
000978  e3c00004          BIC      r0,r0,#4
00097c  e51f17f0          LDR      r1,|L1.404|
000980  e5810004          STR      r0,[r1,#4]
;;;75     
;;;76         srcAddress=0x10300000; 
000984  e1a00141          MOV      r0,r1,ASR #2
000988  e59f1174          LDR      r1,|L1.2820|
00098c  e5810000          STR      r0,[r1,#0]  ; srcAddress
;;;77         Uart_Printf("source base address(0x10300000)=0x%x\n",srcAddress);	
000990  e59f016c          LDR      r0,|L1.2820|
000994  e5901000          LDR      r1,[r0,#0]  ; srcAddress
000998  e28f0f5a          ADR      r0,|L1.2824|
00099c  ebfffffe          BL       _printf
;;;78     /*
;;;79     		// Initializing Buffer ----------------INIT
;;;80     		testdata = (U8 *)(srcAddress);
;;;81     		for(i=0;i<4096;i++)
;;;82     			*(testdata++) = i; 
;;;83     
;;;84     */
;;;85     
;;;86         Input_x8_TargetBlock();
0009a0  ebfffffe          BL       Input_x8_TargetBlock
;;;87     
;;;88     
;;;89         //Uart_Printf("target start block number      =%d\n",targetBlock);
;;;90         //Uart_Printf("target size        (0x4000*n)  =0x%x\n",targetSize);
;;;91     	
;;;92         srcPt=(U8 *)srcAddress;
0009a4  e59f0158          LDR      r0,|L1.2820|
0009a8  e5905000          LDR      r5,[r0,#0]  ; srcAddress
;;;93         blockIndex=targetBlock;
0009ac  e51f0080          LDR      r0,|L1.2356|
0009b0  e5904000          LDR      r4,[r0,#0]  ; targetBlock
;;;94     	
;;;95         while(1)
0009b4  e1a00000          NOP      
                  |L1.2488|
0009b8  e1a00000          NOP      
;;;96         {
;;;97     	saveSrcPt=srcPt;
0009bc  e1a08005          MOV      r8,r5
;;;98     	
;;;99     	#if BAD_CHECK
;;;100    	if(NF_IsBadBlock(blockIndex))	// 1:bad 0:good
0009c0  e1a00004          MOV      r0,r4
0009c4  ebfffffe          BL       NF_IsBadBlock
0009c8  e3500000          CMP      r0,#0
0009cc  0a000001          BEQ      |L1.2520|
;;;101            {
;;;102    	    blockIndex++;   // for next block
0009d0  e2844001          ADD      r4,r4,#1
;;;103    	    continue;
0009d4  eafffff7          B        |L1.2488|
;;;104    	}
;;;105    	#endif
;;;106        
;;;107    	if(!NF_EraseBlock(blockIndex))
                  |L1.2520|
0009d8  e1a00004          MOV      r0,r4
0009dc  ebfffffe          BL       NF_EraseBlock
0009e0  e3500000          CMP      r0,#0
0009e4  1a000001          BNE      |L1.2544|
;;;108    	{
;;;109               blockIndex++;   // for next block
0009e8  e2844001          ADD      r4,r4,#1
;;;110    	    continue;
0009ec  eafffff1          B        |L1.2488|
;;;111    	}
;;;112    	   
;;;113    	for(i=0;i<32;i++)
                  |L1.2544|
0009f0  e3a06000          MOV      r6,#0
                  |L1.2548|
0009f4  e3560020          CMP      r6,#0x20
0009f8  aa000022          BGE      |L1.2696|
0009fc  ea000001          B        |L1.2568|
                  |L1.2560|
000a00  e2866001          ADD      r6,r6,#1
000a04  eafffffa          B        |L1.2548|
;;;114    	{
;;;115    		if(!NF_WritePage(blockIndex,i,srcPt))// block num, page num, buffer
                  |L1.2568|
000a08  e1a02005          MOV      r2,r5
000a0c  e1a01006          MOV      r1,r6
000a10  e1a00004          MOV      r0,r4
000a14  ebfffffe          BL       NF_WritePage
000a18  e3500000          CMP      r0,#0
000a1c  1a000005          BNE      |L1.2616|
;;;116    		{
;;;117    	        	programError=1;
000a20  e3a07001          MOV      r7,#1
;;;118    		 	Uart_Printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
000a24  e1a02006          MOV      r2,r6
000a28  e1a01004          MOV      r1,r4
000a2c  e28f00fc          ADR      r0,|L1.2864|
000a30  ebfffffe          BL       _printf
;;;119    	        	break;
000a34  ea000013          B        |L1.2696|
;;;120    		}
;;;121    		
;;;122    		#if ECC_CHECK    
;;;123    		if(!NF_ReadPage(blockIndex,i,srcPt))
                  |L1.2616|
000a38  e1a02005          MOV      r2,r5
000a3c  e1a01006          MOV      r1,r6
000a40  e1a00004          MOV      r0,r4
000a44  ebfffffe          BL       NF_ReadPage
000a48  e3500000          CMP      r0,#0
000a4c  1a000003          BNE      |L1.2656|
;;;124    		{
;;;125    			Uart_Printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
000a50  e1a02006          MOV      r2,r6
000a54  e1a01004          MOV      r1,r4
000a58  e28f00d0          ADR      r0,|L1.2864|
000a5c  ebfffffe          BL       _printf
;;;126    		}
;;;127    		#endif	    
;;;128    		
;;;129    		srcPt+=512;	// Increase buffer addr one page size
                  |L1.2656|
000a60  e2855f80          ADD      r5,r5,#0x200
;;;130    
;;;131    		if((U32)srcPt>=(srcAddress+targetSize)) // Check end of buffer
000a64  e59f0098          LDR      r0,|L1.2820|
000a68  e5900000          LDR      r0,[r0,#0]  ; srcAddress
000a6c  e51f113c          LDR      r1,|L1.2360|
000a70  e5911000          LDR      r1,[r1,#0]  ; targetSize
000a74  e0800001          ADD      r0,r0,r1
000a78  e1500005          CMP      r0,r5
000a7c  8a000000          BHI      |L1.2692|
;;;132    			break;	// Exit for loop
000a80  ea000000          B        |L1.2696|
;;;133    	}
                  |L1.2692|
000a84  eaffffdd          B        |L1.2560|
;;;134    	Uart_Printf(".");		
                  |L1.2696|
000a88  e28f00c0          ADR      r0,|L1.2896|
000a8c  ebfffffe          BL       _printf
;;;135            if(programError==1)
000a90  e3570001          CMP      r7,#1
000a94  1a000003          BNE      |L1.2728|
;;;136    	{
;;;137    	    blockIndex++;
000a98  e2844001          ADD      r4,r4,#1
;;;138    	    srcPt=saveSrcPt;
000a9c  e1a05008          MOV      r5,r8
;;;139    	    programError=0;
000aa0  e3a07000          MOV      r7,#0
;;;140    	    continue;
000aa4  eaffffc3          B        |L1.2488|
;;;141    	}
;;;142    	
;;;143    	if((U32)srcPt>=(srcAddress+targetSize))
                  |L1.2728|
000aa8  e59f0054          LDR      r0,|L1.2820|
000aac  e5900000          LDR      r0,[r0,#0]  ; srcAddress
000ab0  e51f1180          LDR      r1,|L1.2360|
000ab4  e5911000          LDR      r1,[r1,#0]  ; targetSize
000ab8  e0800001          ADD      r0,r0,r1
000abc  e1500005          CMP      r0,r5
000ac0  8a000000          BHI      |L1.2760|
;;;144    	    break;	// Exit while loop
000ac4  ea000001          B        |L1.2768|
;;;145    	blockIndex++;
                  |L1.2760|
000ac8  e2844001          ADD      r4,r4,#1
;;;146    	
;;;147    
;;;148        }
000acc  eaffffb9          B        |L1.2488|
;;;149    
;;;150    
;;;151    }
                  |L1.2768|
000ad0  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                  |L1.2772|
000ad4  53205b0a          DCB      "\n[ S"
000ad8  4b28434d          DCB      "MC(K"
000adc  32315339          DCB      "9S12"
000ae0  30563830          DCB      "08V0"
000ae4  4e20294d          DCB      "M) N"
000ae8  20444e41          DCB      "AND "
000aec  73616c46          DCB      "Flas"
000af0  72772068          DCB      "h wr"
000af4  6e697469          DCB      "itin"
000af8  72702067          DCB      "g pr"
000afc  6172676f          DCB      "ogra"
000b00  000a5d6d          DCB      "m]\n\0"
                  |L1.2820|
000b04  00000000          DCD      ||.bss$2||
                  |L1.2824|
000b08  72756f73          DCB      "sour"
000b0c  62206563          DCB      "ce b"
000b10  20657361          DCB      "ase "
000b14  72646461          DCB      "addr"
000b18  28737365          DCB      "ess("
000b1c  30317830          DCB      "0x10"
000b20  30303033          DCB      "3000"
000b24  3d293030          DCB      "00)="
000b28  78257830          DCB      "0x%x"
000b2c  0000000a          DCB      "\n\0\0\0"
                  |L1.2864|
000b30  20434345          DCB      "ECC "
000b34  6f727245          DCB      "Erro"
000b38  6c622872          DCB      "r(bl"
000b3c  3d6b636f          DCB      "ock="
000b40  702c6425          DCB      "%d,p"
000b44  3d656761          DCB      "age="
000b48  21216425          DCB      "%d!!"
000b4c  00000a21          DCB      "!\n\0\0"
                  |L1.2896|
000b50  0000002e          DCB      ".\0\0\0"
                          ENDP

                  K9S1208_PrintBadBlockNum PROC
;;;153    void K9S1208_PrintBadBlockNum(void)
;;;154    {
000b54  e92d4010          STMFD    sp!,{r4,lr}
;;;155        int i;
;;;156    
;;;157        Uart_Printf("\n[SMC(K9S1208V0M) NAND Flash bad block check]\n");
000b58  e28f0028          ADR      r0,|L1.2952|
000b5c  ebfffffe          BL       _printf
;;;158    
;;;159        
;;;160        for(i=0;i<4096;i++)
000b60  e3a04000          MOV      r4,#0
                  |L1.2916|
000b64  e3540d40          CMP      r4,#0x1000
000b68  aa000005          BGE      |L1.2948|

⌨️ 快捷键说明

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