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

📄 k9k2g16.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;356        NF_CMD(0xd0);   // Erase one blcok 2nd command    
000888  e3a000d0          MOV      r0,#0xd0
00088c  e1c11000          BIC      r1,r1,r0
000890  e5810008          STR      r0,[r1,#8]
;;;357        for(i=0;i<10;i++); //wait tWB(100ns)//??????
000894  e3a06000          MOV      r6,#0
                  |L1.2200|
000898  e356000a          CMP      r6,#0xa
00089c  aa000001          BGE      |L1.2216|
0008a0  e2866001          ADD      r6,r6,#1
0008a4  eafffffb          B        |L1.2200|
;;;358        NF_TRANSRnB();    // Wait tBERS max 3ms.
                  |L1.2216|
0008a8  e1a00000          NOP      
                  |L1.2220|
0008ac  e51f0698          LDR      r0,|L1.540|
0008b0  e590002c          LDR      r0,[r0,#0x2c]
0008b4  e3100d80          TST      r0,#0x2000
0008b8  0afffffb          BEQ      |L1.2220|
;;;359        NF_CMD(0x70);   // Read status command
0008bc  e3a00070          MOV      r0,#0x70
0008c0  e51f16ac          LDR      r1,|L1.540|
0008c4  e5810008          STR      r0,[r1,#8]
;;;360    
;;;361    //	NF16_MarkBadBlock(block);  
;;;362    	
;;;363        if (NF_RDDATA()&0x1) // Erase error
0008c8  e1c10000          BIC      r0,r1,r0
0008cc  e5900010          LDR      r0,[r0,#0x10]
0008d0  e3100001          TST      r0,#1
0008d4  0a00000f          BEQ      |L1.2328|
;;;364        {	
;;;365        	NF_nFCE_H();
0008d8  e1a00001          MOV      r0,r1
0008dc  e5900004          LDR      r0,[r0,#4]
0008e0  e3800080          ORR      r0,r0,#0x80
0008e4  e5810004          STR      r0,[r1,#4]
;;;366    	Uart_Printf("[ERASE_ERROR:block#=%d]\n",block);
0008e8  e1a01004          MOV      r1,r4
0008ec  e28f0054          ADR      r0,|L1.2376|
0008f0  ebfffffe          BL       _printf
;;;367    	NF16_MarkBadBlock(block);
0008f4  e1a00004          MOV      r0,r4
0008f8  ebfffffe          BL       NF16_MarkBadBlock
;;;368      	rGPCON_L =  (rGPCON_L & ~(0x3<<2))|(0x3<<2);	
0008fc  e51f0138          LDR      r0,|L1.1996|
000900  e5900008          LDR      r0,[r0,#8]
000904  e380000c          ORR      r0,r0,#0xc
000908  e51f1144          LDR      r1,|L1.1996|
00090c  e5810008          STR      r0,[r1,#8]
;;;369    	return 0;
000910  e3a00000          MOV      r0,#0
;;;370        }
;;;371        else 
;;;372        {
;;;373        	NF_nFCE_H();
;;;374    	  rGPCON_L =  (rGPCON_L & ~(0x3<<2))|(0x3<<2);
;;;375            return 1;
;;;376        }
;;;377    	
;;;378    }
                  |L1.2324|
000914  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                  |L1.2328|
000918  e51f0704          LDR      r0,|L1.540|           ;373
00091c  e5900004          LDR      r0,[r0,#4]            ;373
000920  e3800080          ORR      r0,r0,#0x80           ;373
000924  e51f1710          LDR      r1,|L1.540|           ;373
000928  e5810004          STR      r0,[r1,#4]            ;373
00092c  e28107f0          ADD      r0,r1,#0x3c00000      ;374
000930  e5900008          LDR      r0,[r0,#8]            ;374
000934  e380000c          ORR      r0,r0,#0xc            ;374
000938  e28117f0          ADD      r1,r1,#0x3c00000      ;374
00093c  e5810008          STR      r0,[r1,#8]            ;374
000940  e3a00001          MOV      r0,#1                 ;375
000944  eafffff2          B        |L1.2324|             ;375
                  |L1.2376|
000948  4152455b          DCB      "[ERA"                ;375
00094c  455f4553          DCB      "SE_E"                ;375
000950  524f5252          DCB      "RROR"                ;375
000954  6f6c623a          DCB      ":blo"                ;375
000958  3d236b63          DCB      "ck#="                ;375
00095c  0a5d6425          DCB      "%d]\n"               ;375
000960  00000000          DCB      "\0\0\0\0"            ;375
                          ENDP

                  NF16_IsBadBlock PROC
;;;282    static int NF16_IsBadBlock(U32 block)
;;;283    {
000964  e92d4070          STMFD    sp!,{r4-r6,lr}
000968  e24dd040          SUB      sp,sp,#0x40
00096c  e1a06000          MOV      r6,r0
;;;284        int i;
;;;285        unsigned int blockPage;
;;;286    
;;;287        U16 bad_block_data;    
;;;288        U16 se16BadBuf[32];
;;;289        blockPage=(block<<6);	// For 2'nd cycle I/O[7:5] 
000970  e1a05306          MOV      r5,r6,LSL #6
;;;290    
;;;291        //  NF_RSTECC();    // Reset ECC
;;;292        NF_CLRRnB(); 
000974  e51f0760          LDR      r0,|L1.540|
000978  e590002c          LDR      r0,[r0,#0x2c]
00097c  e3800d80          ORR      r0,r0,#0x2000
000980  e51f176c          LDR      r1,|L1.540|
000984  e581002c          STR      r0,[r1,#0x2c]
;;;293        NF_nFCE_L();    
000988  e1a00001          MOV      r0,r1
00098c  e5900004          LDR      r0,[r0,#4]
000990  e3c00080          BIC      r0,r0,#0x80
000994  e5810004          STR      r0,[r1,#4]
;;;294        NF_CMD(0x00);		//read command
000998  e3a00000          MOV      r0,#0
00099c  e1c11000          BIC      r1,r1,r0
0009a0  e5810008          STR      r0,[r1,#8]
;;;295        
;;;296    	NF_ADDR((0)&0xff);			// 2058 = 0x080A
0009a4  e3a00000          MOV      r0,#0
0009a8  e1c11000          BIC      r1,r1,r0
0009ac  e581000c          STR      r0,[r1,#0xc]
;;;297    	NF_ADDR(((0)>>8)&0xff);		// A[10:8]
0009b0  e3a00000          MOV      r0,#0
0009b4  e1c11000          BIC      r1,r1,r0
0009b8  e581000c          STR      r0,[r1,#0xc]
;;;298    	NF_ADDR((blockPage)&0xff);		// A[11;18]
0009bc  e20500ff          AND      r0,r5,#0xff
0009c0  e581000c          STR      r0,[r1,#0xc]
;;;299    	NF_ADDR((blockPage>>8)&0xff);	// A[26:19]
0009c4  e1a00805          MOV      r0,r5,LSL #16
0009c8  e1a00c20          MOV      r0,r0,LSR #24
0009cc  e581000c          STR      r0,[r1,#0xc]
;;;300    	NF_ADDR((blockPage>>16)&0xff);	// A27
0009d0  e1a00405          MOV      r0,r5,LSL #8
0009d4  e1a00c20          MOV      r0,r0,LSR #24
0009d8  e581000c          STR      r0,[r1,#0xc]
;;;301    	
;;;302        NF_CMD(0x30);	// 2'nd command
0009dc  e3a00030          MOV      r0,#0x30
0009e0  e1c11000          BIC      r1,r1,r0
0009e4  e5810008          STR      r0,[r1,#8]
;;;303    
;;;304        for(i=0;i<10;i++);	// wait tWB(100ns) //????? 
0009e8  e3a04000          MOV      r4,#0
                  |L1.2540|
0009ec  e354000a          CMP      r4,#0xa
0009f0  aa000001          BGE      |L1.2556|
0009f4  e2844001          ADD      r4,r4,#1
0009f8  eafffffb          B        |L1.2540|
;;;305        NF_TRANSRnB();	// Wait tR(max 12us)
                  |L1.2556|
0009fc  e1a00000          NOP      
                  |L1.2560|
000a00  e51f07ec          LDR      r0,|L1.540|
000a04  e590002c          LDR      r0,[r0,#0x2c]
000a08  e3100d80          TST      r0,#0x2000
000a0c  0afffffb          BEQ      |L1.2560|
;;;306    
;;;307    	
;;;308    //    bad_block_data=NF_RDDATA();
;;;309    //	Uart_Printf("\nB%xh:",block);
;;;310    
;;;311        for(i=0;i<1024;i++)
000a10  e3a04000          MOV      r4,#0
                  |L1.2580|
000a14  e3540e40          CMP      r4,#0x400
000a18  aa000005          BGE      |L1.2612|
000a1c  ea000001          B        |L1.2600|
                  |L1.2592|
000a20  e2844001          ADD      r4,r4,#1
000a24  eafffffa          B        |L1.2580|
;;;312        NF_RDDATA();	
                  |L1.2600|
000a28  e51f0814          LDR      r0,|L1.540|
000a2c  e5900010          LDR      r0,[r0,#0x10]
000a30  eafffffa          B        |L1.2592|
;;;313    
;;;314        for(i=0;i<32;i++)
                  |L1.2612|
000a34  e3a04000          MOV      r4,#0
                  |L1.2616|
000a38  e3540020          CMP      r4,#0x20
000a3c  aa000007          BGE      |L1.2656|
000a40  ea000001          B        |L1.2636|
                  |L1.2628|
000a44  e2844001          ADD      r4,r4,#1
000a48  eafffffa          B        |L1.2616|
;;;315        {
;;;316    		se16BadBuf[i] = NF_RDDATA();	
                  |L1.2636|
000a4c  e51f0838          LDR      r0,|L1.540|
000a50  e5900010          LDR      r0,[r0,#0x10]
000a54  e08d1084          ADD      r1,sp,r4,LSL #1
000a58  e1c100b0          STRH     r0,[r1,#0]
;;;317    //		Uart_Printf("%x,",se16BadBuf[i]);
;;;318        } 
000a5c  eafffff8          B        |L1.2628|
;;;319    
;;;320        NF_nFCE_H();    
                  |L1.2656|
000a60  e51f084c          LDR      r0,|L1.540|
000a64  e5900004          LDR      r0,[r0,#4]
000a68  e3800080          ORR      r0,r0,#0x80
000a6c  e51f1858          LDR      r1,|L1.540|
000a70  e5810004          STR      r0,[r1,#4]
;;;321    
;;;322        if(se16BadBuf[5]!=0xffff)
000a74  e1dd00ba          LDRH     r0,[sp,#0xa]
000a78  e240ccff          SUB      r12,r0,#0xff00
000a7c  e25cc0ff          SUBS     r12,r12,#0xff
000a80  0a000006          BEQ      |L1.2720|
;;;323        {
;;;324        	Uart_Printf("\n[block %d has been marked as a bad block(%x)]",block,se16BadBuf[5]);
000a84  e1dd20ba          LDRH     r2,[sp,#0xa]
000a88  e1a01006          MOV      r1,r6
000a8c  e28f0014          ADR      r0,|L1.2728|
000a90  ebfffffe          BL       _printf
;;;325        	return 1;
000a94  e3a00001          MOV      r0,#1
                  |L1.2712|
000a98  e28dd040          ADD      sp,sp,#0x40
;;;326        }
;;;327        else
;;;328        {
;;;329        	return 0;
;;;330        }
;;;331    }
000a9c  e8bd8070          LDMFD    sp!,{r4-r6,pc}
                  |L1.2720|
000aa0  e3a00000          MOV      r0,#0                 ;329
000aa4  eafffffb          B        |L1.2712|             ;329
                  |L1.2728|
000aa8  6c625b0a          DCB      "\n[bl"               ;329
000aac  206b636f          DCB      "ock "                ;329
000ab0  68206425          DCB      "%d h"                ;329
000ab4  62207361          DCB      "as b"                ;329
000ab8  206e6565          DCB      "een "                ;329
000abc  6b72616d          DCB      "mark"                ;329
000ac0  61206465          DCB      "ed a"                ;329
000ac4  20612073          DCB      "s a "                ;329
000ac8  20646162          DCB      "bad "                ;329
000acc  636f6c62          DCB      "bloc"                ;329
000ad0  7825286b          DCB      "k(%x"                ;329
000ad4  00005d29          DCB      ")]\0\0"              ;329
                          ENDP

                  Input_x16_TargetBlock PROC
;;;269    static void Input_x16_TargetBlock(void)
;;;270    {
000ad8  e92d4008          STMFD    sp!,{r3,lr}
;;;271    	Uart_Printf("\nAvailable target block number: 0~2047\n");
000adc  e28f002c          ADR      r0,|L1.2832|
000ae0  ebfffffe          BL       _printf
;;;272    	Uart_Printf("Input target start block number:");
000ae4  e28f004c          ADR      r0,|L1.2872|
000ae8  ebfffffe          BL       _printf
;;;273    	targetBlock=Uart_GetIntNum();	// Block number(0~2047)
000aec  ebfffffe          BL       Uart_GetIntNum
000af0  e59f1064          LDR      r1,|L1.2908|
000af4  e5810000          STR      r0,[r1,#0]  ; targetBlock
;;;274    	//    if(targetSize==0)
;;;275    	{
;;;276    	//       Uart_Printf("1,048,576 = 0x100000,  31,457,280 = 0x1e00000 \n");
;;;277       	Uart_Printf("Input program file size(bytes): ");
000af8  e28f0060          ADR      r0,|L1.2912|
000afc  ebfffffe          BL       _printf
;;;278    	targetSize=Uart_GetIntNum();	// Total byte size
000b00  ebfffffe          BL       Uart_GetIntNum
000b04  e59f1078          LDR      r1,|L1.2948|
000b08  e5810000          STR      r0,[r1,#0]  ; targetSize
;;;279    	}
;;;280    }
000b0c  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.2832|
000b10  6176410a          DCB      "\nAva"
000b14  62616c69          DCB      "ilab"
000b18  7420656c          DCB      "le t"
000b1c  65677261          DCB      "arge"
000b20  6c622074          DCB      "t bl"
000b24  206b636f          DCB      "ock "
000b28  626d756e          DCB      "numb"
000b2c  203a7265          DCB      "er: "
000b30  30327e30          DCB      "0~20"
000b34  000a3734          DCB      "47\n\0"
                  |L1.2872|
000b38  75706e49          DCB      "Inpu"
000b3c  61742074          DCB      "t ta"
000b40  74656772          DCB      "rget"
000b44  61747320          DCB      " sta"
000b48  62207472          DCB      "rt b"
000b4c  6b636f6c          DCB      "lock"
000b50  6d756e20          DCB      " num"
000b54  3a726562          DCB      "ber:"
000b58  00000000          DCB      "\0\0\0\0"
                  |L1.2908|
000b5c  00000008          DCD      ||.bss$2|| + 8
                  |L1.2912|
000b60  75706e49          DCB      "Inpu"
000b64  72702074          DCB      "t pr"
000b68  6172676f          DCB      "ogra"
000b6c  6966206d          DCB      "m fi"
000b70  7320656c          DCB      "le s"
000b74  28657a69          DCB      "ize("
000b78  65747962          DCB      "byte"
000b7c  203a2973          DCB      "s): "
000b80  00000000          DCB      "\0\0\0\0"
                  |L1.2948|
000b84  0000000c          DCD      ||.bss$2|| + 12
                          ENDP

                  K9k2g16_Program PROC
;;;68     void K9k2g16_Program(void)
;;;69     {
000b88  e92d41f0          STMFD    sp!,{r4-r8,lr}
;;;70     
;;;71         int i,j;
;;;72         int programError=0;
000b8c  e3a07000          MOV      r7,#0

⌨️ 快捷键说明

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