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

📄 k9d1g08.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0008a8  62206120          DCB      " a b"                ;306
0008ac  62206461          DCB      "ad b"                ;306
0008b0  6b636f6c          DCB      "lock"                ;306
0008b4  29782528          DCB      "(%x)"                ;306
0008b8  00000a5d          DCB      "]\n\0\0"             ;306
                          ENDP

                  Input_x8_TargetBlock PROC
;;;261    static void Input_x8_TargetBlock(void)
;;;262    {
0008bc  e92d4008          STMFD    sp!,{r3,lr}
;;;263        Uart_Printf("\nAvailable target block number: 0~8191\n");
0008c0  e28f002c          ADR      r0,|L1.2292|
0008c4  ebfffffe          BL       _printf
;;;264        Uart_Printf("Input target start block number:");
0008c8  e28f004c          ADR      r0,|L1.2332|
0008cc  ebfffffe          BL       _printf
;;;265        targetBlock=Uart_GetIntNum();	// Block number(0~8191)
0008d0  ebfffffe          BL       Uart_GetIntNum
0008d4  e59f1064          LDR      r1,|L1.2368|
0008d8  e5810000          STR      r0,[r1,#0]  ; targetBlock
;;;266    //    if(targetSize==0)
;;;267        {
;;;268    //       Uart_Printf("1,048,576 = 0x100000,  31,457,280 = 0x1e00000 \n");
;;;269       	Uart_Printf("Input program file size(bytes): ");
0008dc  e28f0060          ADR      r0,|L1.2372|
0008e0  ebfffffe          BL       _printf
;;;270    	targetSize=Uart_GetIntNum();	// Total byte size
0008e4  ebfffffe          BL       Uart_GetIntNum
0008e8  e59f1078          LDR      r1,|L1.2408|
0008ec  e5810000          STR      r0,[r1,#0]  ; targetSize
;;;271        }
;;;272    }
0008f0  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.2292|
0008f4  6176410a          DCB      "\nAva"
0008f8  62616c69          DCB      "ilab"
0008fc  7420656c          DCB      "le t"
000900  65677261          DCB      "arge"
000904  6c622074          DCB      "t bl"
000908  206b636f          DCB      "ock "
00090c  626d756e          DCB      "numb"
000910  203a7265          DCB      "er: "
000914  31387e30          DCB      "0~81"
000918  000a3139          DCB      "91\n\0"
                  |L1.2332|
00091c  75706e49          DCB      "Inpu"
000920  61742074          DCB      "t ta"
000924  74656772          DCB      "rget"
000928  61747320          DCB      " sta"
00092c  62207472          DCB      "rt b"
000930  6b636f6c          DCB      "lock"
000934  6d756e20          DCB      " num"
000938  3a726562          DCB      "ber:"
00093c  00000000          DCB      "\0\0\0\0"
                  |L1.2368|
000940  00000008          DCD      ||.bss$2|| + 8
                  |L1.2372|
000944  75706e49          DCB      "Inpu"
000948  72702074          DCB      "t pr"
00094c  6172676f          DCB      "ogra"
000950  6966206d          DCB      "m fi"
000954  7320656c          DCB      "le s"
000958  28657a69          DCB      "ize("
00095c  65747962          DCB      "byte"
000960  203a2973          DCB      "s): "
000964  00000000          DCB      "\0\0\0\0"
                  |L1.2408|
000968  0000000c          DCD      ||.bss$2|| + 12
                          ENDP

                  K9D1G08_Program PROC
;;;64     void K9D1G08_Program(void)
;;;65     {
00096c  e92d41f0          STMFD    sp!,{r4-r8,lr}
;;;66         int i,j;
;;;67         int programError=0;
000970  e3a07000          MOV      r7,#0
;;;68         U8 *srcPt,*saveSrcPt;
;;;69         U32 blockIndex;
;;;70         U8 *testdata;	
;;;71     
;;;72         Uart_Printf("\n[ SMC(K9D1G08V0M) NAND Flash writing program]\n");
000974  e28f0f61          ADR      r0,|L1.2816|
000978  ebfffffe          BL       _printf
;;;73      
;;;74         rNFCONT&=~(1<<2); // Lock disable
00097c  e51f07f4          LDR      r0,|L1.400|
000980  e5900004          LDR      r0,[r0,#4]
000984  e3c00004          BIC      r0,r0,#4
000988  e51f1800          LDR      r1,|L1.400|
00098c  e5810004          STR      r0,[r1,#4]
;;;75     
;;;76         srcAddress=0x10300000; 
000990  e1a00141          MOV      r0,r1,ASR #2
000994  e59f1194          LDR      r1,|L1.2864|
000998  e5810000          STR      r0,[r1,#0]  ; srcAddress
;;;77         Uart_Printf("source base address(0x10300000)=0x%x\n",srcAddress);	
00099c  e59f018c          LDR      r0,|L1.2864|
0009a0  e5901000          LDR      r1,[r0,#0]  ; srcAddress
0009a4  e28f0f62          ADR      r0,|L1.2868|
0009a8  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();
0009ac  ebfffffe          BL       Input_x8_TargetBlock
;;;87     
;;;88     
;;;89         Uart_Printf("target start block number      =%d\n",targetBlock);
0009b0  e51f0078          LDR      r0,|L1.2368|
0009b4  e5901000          LDR      r1,[r0,#0]  ; targetBlock
0009b8  e28f0f67          ADR      r0,|L1.2908|
0009bc  ebfffffe          BL       _printf
;;;90         Uart_Printf("target size        (0x4000*n)  =0x%x\n",targetSize);
0009c0  e51f0060          LDR      r0,|L1.2408|
0009c4  e5901000          LDR      r1,[r0,#0]  ; targetSize
0009c8  e28f0f6c          ADR      r0,|L1.2944|
0009cc  ebfffffe          BL       _printf
;;;91     	
;;;92         srcPt=(U8 *)srcAddress;
0009d0  e59f0158          LDR      r0,|L1.2864|
0009d4  e5905000          LDR      r5,[r0,#0]  ; srcAddress
;;;93         blockIndex=targetBlock;
0009d8  e51f00a0          LDR      r0,|L1.2368|
0009dc  e5904000          LDR      r4,[r0,#0]  ; targetBlock
;;;94     	
;;;95         while(1)
0009e0  e1a00000          NOP      
                  |L1.2532|
0009e4  e1a00000          NOP      
;;;96         {
;;;97     	saveSrcPt=srcPt;
0009e8  e1a08005          MOV      r8,r5
;;;98     	
;;;99     	#if BAD_CHECK
;;;100    	if(NF_IsBadBlock(blockIndex))	// 1:bad 0:good
0009ec  e1a00004          MOV      r0,r4
0009f0  ebfffffe          BL       NF_IsBadBlock
0009f4  e3500000          CMP      r0,#0
0009f8  0a000001          BEQ      |L1.2564|
;;;101            {
;;;102    	    blockIndex++;   // for next block
0009fc  e2844001          ADD      r4,r4,#1
;;;103    	    continue;
000a00  eafffff7          B        |L1.2532|
;;;104    	}
;;;105    	#endif
;;;106        
;;;107    	if(!NF_EraseBlock(blockIndex))
                  |L1.2564|
000a04  e1a00004          MOV      r0,r4
000a08  ebfffffe          BL       NF_EraseBlock
000a0c  e3500000          CMP      r0,#0
000a10  1a000001          BNE      |L1.2588|
;;;108    	{
;;;109               blockIndex++;   // for next block
000a14  e2844001          ADD      r4,r4,#1
;;;110    	    continue;
000a18  eafffff1          B        |L1.2532|
;;;111    	}
;;;112    	   
;;;113    	for(i=0;i<32;i++)
                  |L1.2588|
000a1c  e3a06000          MOV      r6,#0
                  |L1.2592|
000a20  e3560020          CMP      r6,#0x20
000a24  aa000022          BGE      |L1.2740|
000a28  ea000001          B        |L1.2612|
                  |L1.2604|
000a2c  e2866001          ADD      r6,r6,#1
000a30  eafffffa          B        |L1.2592|
;;;114    	{
;;;115    		if(!NF_WritePage(blockIndex,i,srcPt))// block num, page num, buffer
                  |L1.2612|
000a34  e1a02005          MOV      r2,r5
000a38  e1a01006          MOV      r1,r6
000a3c  e1a00004          MOV      r0,r4
000a40  ebfffffe          BL       NF_WritePage
000a44  e3500000          CMP      r0,#0
000a48  1a000005          BNE      |L1.2660|
;;;116    		{
;;;117    	        	programError=1;
000a4c  e3a07001          MOV      r7,#1
;;;118    		 	Uart_Printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
000a50  e1a02006          MOV      r2,r6
000a54  e1a01004          MOV      r1,r4
000a58  e28f0f52          ADR      r0,|L1.2984|
000a5c  ebfffffe          BL       _printf
;;;119    	        	break;
000a60  ea000013          B        |L1.2740|
;;;120    		}
;;;121    		
;;;122    		#if ECC_CHECK    
;;;123    		if(!NF_ReadPage(blockIndex,i,srcPt))
                  |L1.2660|
000a64  e1a02005          MOV      r2,r5
000a68  e1a01006          MOV      r1,r6
000a6c  e1a00004          MOV      r0,r4
000a70  ebfffffe          BL       NF_ReadPage
000a74  e3500000          CMP      r0,#0
000a78  1a000003          BNE      |L1.2700|
;;;124    		{
;;;125    			Uart_Printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
000a7c  e1a02006          MOV      r2,r6
000a80  e1a01004          MOV      r1,r4
000a84  e28f0f47          ADR      r0,|L1.2984|
000a88  ebfffffe          BL       _printf
;;;126    		}
;;;127    		#endif	    
;;;128    		
;;;129    		srcPt+=512;	// Increase buffer addr one page size
                  |L1.2700|
000a8c  e2855f80          ADD      r5,r5,#0x200
;;;130    
;;;131    		if((U32)srcPt>=(srcAddress+targetSize)) // Check end of buffer
000a90  e59f0098          LDR      r0,|L1.2864|
000a94  e5900000          LDR      r0,[r0,#0]  ; srcAddress
000a98  e51f1138          LDR      r1,|L1.2408|
000a9c  e5911000          LDR      r1,[r1,#0]  ; targetSize
000aa0  e0800001          ADD      r0,r0,r1
000aa4  e1500005          CMP      r0,r5
000aa8  8a000000          BHI      |L1.2736|
;;;132    			break;	// Exit for loop
000aac  ea000000          B        |L1.2740|
;;;133    	}
                  |L1.2736|
000ab0  eaffffdd          B        |L1.2604|
;;;134    	Uart_Printf(".");		
                  |L1.2740|
000ab4  e28f0f43          ADR      r0,|L1.3016|
000ab8  ebfffffe          BL       _printf
;;;135            if(programError==1)
000abc  e3570001          CMP      r7,#1
000ac0  1a000003          BNE      |L1.2772|
;;;136    	{
;;;137    	    blockIndex++;
000ac4  e2844001          ADD      r4,r4,#1
;;;138    	    srcPt=saveSrcPt;
000ac8  e1a05008          MOV      r5,r8
;;;139    	    programError=0;
000acc  e3a07000          MOV      r7,#0
;;;140    	    continue;
000ad0  eaffffc3          B        |L1.2532|
;;;141    	}
;;;142    	
;;;143    	if((U32)srcPt>=(srcAddress+targetSize))
                  |L1.2772|
000ad4  e59f0054          LDR      r0,|L1.2864|
000ad8  e5900000          LDR      r0,[r0,#0]  ; srcAddress
000adc  e51f117c          LDR      r1,|L1.2408|
000ae0  e5911000          LDR      r1,[r1,#0]  ; targetSize
000ae4  e0800001          ADD      r0,r0,r1
000ae8  e1500005          CMP      r0,r5
000aec  8a000000          BHI      |L1.2804|
;;;144    	    break;	// Exit while loop
000af0  ea000001          B        |L1.2812|
;;;145    	blockIndex++;
                  |L1.2804|
000af4  e2844001          ADD      r4,r4,#1
;;;146    	
;;;147    
;;;148        }
000af8  eaffffb9          B        |L1.2532|
;;;149    
;;;150    
;;;151    }
                  |L1.2812|
000afc  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                  |L1.2816|
000b00  53205b0a          DCB      "\n[ S"
000b04  4b28434d          DCB      "MC(K"
000b08  47314439          DCB      "9D1G"
000b0c  30563830          DCB      "08V0"
000b10  4e20294d          DCB      "M) N"
000b14  20444e41          DCB      "AND "
000b18  73616c46          DCB      "Flas"
000b1c  72772068          DCB      "h wr"
000b20  6e697469          DCB      "itin"
000b24  72702067          DCB      "g pr"
000b28  6172676f          DCB      "ogra"
000b2c  000a5d6d          DCB      "m]\n\0"
                  |L1.2864|
000b30  00000000          DCD      ||.bss$2||
                  |L1.2868|
000b34  72756f73          DCB      "sour"
000b38  62206563          DCB      "ce b"
000b3c  20657361          DCB      "ase "
000b40  72646461          DCB      "addr"
000b44  28737365          DCB      "ess("
000b48  30317830          DCB      "0x10"
000b4c  30303033          DCB      "3000"
000b50  3d293030          DCB      "00)="
000b54  78257830          DCB      "0x%x"
000b58  0000000a          DCB      "\n\0\0\0"
                  |L1.2908|
000b5c  67726174          DCB      "targ"
000b60  73207465          DCB      "et s"
000b64  74726174          DCB      "tart"
000b68  6f6c6220          DCB      " blo"
000b6c  6e206b63          DCB      "ck n"
000b70  65626d75          DCB      "umbe"
000b74  20202072          DCB      "r   "
000b78  3d202020          DCB      "   ="
000b7c  000a6425          DCB      "%d\n\0"
                  |L1.2944|
000b80  67726174          DCB      "targ"
000b84  73207465          DCB      "et s"
000b88  20657a69          DCB      "ize "
000b8c  20202020          DCB      "    "
000b90  28202020          DCB      "   ("
000b94  30347830          DCB      "0x40"
000b98  6e2a3030          DCB      "00*n"
000b9c  3d202029          DCB      ")  ="
000ba0  78257830          DCB      "0x%x"

⌨️ 快捷键说明

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