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

📄 mstick.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                  |L1.2128|
000850  e51fc750          LDR      r12,|L1.264|
000854  e59cc004          LDR      r12,[r12,#4]
000858  e31c0002          TST      r12,#2
00085c  0afffffb          BEQ      |L1.2128|
;;;911    	// 		Block addr0 | Block addr1
;;;912    	rDAT_FIFO = (Block[0]<<8) | (Block[1]<<0);
000860  e5ddc001          LDRB     r12,[sp,#1]
000864  e5dde000          LDRB     lr,[sp,#0]
000868  e18cc40e          ORR      r12,r12,lr,LSL #8
00086c  e51fe76c          LDR      lr,|L1.264|
000870  e58ec008          STR      r12,[lr,#8]
;;;913    	while(!TBE);
000874  e1a00000          NOP      
                  |L1.2168|
000878  e51fc778          LDR      r12,|L1.264|
00087c  e59cc004          LDR      r12,[r12,#4]
000880  e31c0002          TST      r12,#2
000884  0afffffb          BEQ      |L1.2168|
;;;914    	// 		  Page addr | CMD param.
;;;915    	rDAT_FIFO = (Page_Addr<<8) | (Cmd_Param<<0);
000888  e183c402          ORR      r12,r3,r2,LSL #8
00088c  e51fe78c          LDR      lr,|L1.264|
000890  e58ec008          STR      r12,[lr,#8]
;;;916    	while(!TBE);
000894  e1a00000          NOP      
                  |L1.2200|
000898  e51fc798          LDR      r12,|L1.264|
00089c  e59cc004          LDR      r12,[r12,#4]
0008a0  e31c0002          TST      r12,#2
0008a4  0afffffb          BEQ      |L1.2200|
;;;917    
;;;918    	while(!INT_P_END);
0008a8  e1a00000          NOP      
                  |L1.2220|
0008ac  e51fc7ac          LDR      r12,|L1.264|
0008b0  e59cc00c          LDR      r12,[r12,#0xc]
0008b4  e31c0080          TST      r12,#0x80
0008b8  0afffffb          BEQ      |L1.2220|
;;;919    
;;;920    }
0008bc  e8bd8008          LDMFD    sp!,{r3,pc}
                          ENDP

                  Ms_Page_Read PROC
;;;619    void Ms_Page_Read(U32 Block_Addr, U32 Page_Addr, U8 *Extra_Buffer, U8 *Read_Buffer)
;;;620    {
0008c0  e92d43f8          STMFD    sp!,{r3-r9,lr}
0008c4  e1a08000          MOV      r8,r0
0008c8  e1a07001          MOV      r7,r1
0008cc  e1a09002          MOV      r9,r2
0008d0  e1a06003          MOV      r6,r3
;;;621    
;;;622    	//int i, cnt=0;
;;;623    	int i;
;;;624    	//unsigned short IntStatus1, IntStatus2;
;;;625    	//U16 Calc_Chksum, In_Chksum, htmp;
;;;626    	U16 htmp;
;;;627    	
;;;628    	// 1. SET R/W address in device TPC
;;;629    	Mstpc_Write_Rw_Reg_Addr(0x0, 0x00, 0x10, 0x6);
0008d4  e3a03006          MOV      r3,#6
0008d8  e3a02010          MOV      r2,#0x10
0008dc  e3a01000          MOV      r1,#0
0008e0  e3a00000          MOV      r0,#0
0008e4  ebfffffe          BL       Mstpc_Write_Rw_Reg_Addr
;;;630    
;;;631    	// 2. Write_Reg TPC
;;;632    	Mstpc_Write_Param_Reg(Block_Addr, PARAM_BAMD, Page_Addr, DE_AREA);
0008e8  e3a03020          MOV      r3,#0x20
0008ec  e20720ff          AND      r2,r7,#0xff
0008f0  e3a01080          MOV      r1,#0x80
0008f4  e1a00008          MOV      r0,r8
0008f8  ebfffffe          BL       Mstpc_Write_Param_Reg
;;;633    
;;;634    	// 3. SET_CMD TPC
;;;635    	Mstpc_Set_Command(BLOCK_READ);
0008fc  e3a000aa          MOV      r0,#0xaa
000900  ebfffffe          BL       Mstpc_Set_Command
;;;636    
;;;637    	// 4. Get_Int or Get status.
;;;638    	#if 1
;;;639    	Int_Status = Mstpc_Get_Int(1, INT_BREQ|INT_CED);
000904  e3a010a0          MOV      r1,#0xa0
000908  e3a00001          MOV      r0,#1
00090c  ebfffffe          BL       Mstpc_Get_Int
000910  e59f11ec          LDR      r1,|L1.2820|
000914  e5c10000          STRB     r0,[r1,#0]  ; Int_Status
;;;640    	//Uart_Printf("Page read cnt(%x).\n", Int_Status);
;;;641    	
;;;642    	Mstpc_Read_Status_Reg(EXTRA_REG_START,EXTRA_SIZE, Extra_Buffer);
000918  e1a02009          MOV      r2,r9
00091c  e3a01009          MOV      r1,#9
000920  e3a00016          MOV      r0,#0x16
000924  ebfffffe          BL       Mstpc_Read_Status_Reg
;;;643    	#else
;;;644    	// 4. Get INT register
;;;645    	Int_Status = Mstpc_Get_Int(1, INT_BREQ);
;;;646    	//Uart_Printf("Page read cnt(%x).\n", Int_Status);
;;;647    	#endif
;;;648    	
;;;649    	rTP_CMD = READ_PAGE_DATA | ONEPAGE_SIZE;
000928  e3a00d88          MOV      r0,#0x2200
00092c  e51f182c          LDR      r1,|L1.264|
000930  e5810000          STR      r0,[r1,#0]
;;;650    
;;;651    	for(i=0; i<ONEPAGE_SIZE; i+=2) {
000934  e3a04000          MOV      r4,#0
                  |L1.2360|
000938  e3540f80          CMP      r4,#0x200
00093c  aa000010          BGE      |L1.2436|
000940  ea000001          B        |L1.2380|
                  |L1.2372|
000944  e2844002          ADD      r4,r4,#2
000948  eafffffa          B        |L1.2360|
;;;652    		while(RBE);
                  |L1.2380|
00094c  e1a00000          NOP      
                  |L1.2384|
000950  e51f0850          LDR      r0,|L1.264|
000954  e5900004          LDR      r0,[r0,#4]
000958  e3100008          TST      r0,#8
00095c  1afffffb          BNE      |L1.2384|
;;;653    		htmp = rDAT_FIFO;
000960  e51f0860          LDR      r0,|L1.264|
000964  e5900008          LDR      r0,[r0,#8]
000968  e1a05800          MOV      r5,r0,LSL #16
00096c  e1a05825          MOV      r5,r5,LSR #16
;;;654    		Read_Buffer[i+1] = (U8)(htmp>>8);	// High byte
000970  e1a00425          MOV      r0,r5,LSR #8
000974  e0861004          ADD      r1,r6,r4
000978  e5c10001          STRB     r0,[r1,#1]
;;;655    		Read_Buffer[i] = (U8)htmp;			// Low byte
00097c  e7c65004          STRB     r5,[r6,r4]
;;;656    	} while(!INT_P_END);
000980  eaffffef          B        |L1.2372|
                  |L1.2436|
000984  e1a00000          NOP      
                  |L1.2440|
000988  e51f0888          LDR      r0,|L1.264|
00098c  e590000c          LDR      r0,[r0,#0xc]
000990  e3100080          TST      r0,#0x80
000994  0afffffb          BEQ      |L1.2440|
;;;657    
;;;658    	Int_Status = Mstpc_Get_Int(1, INT_CED);
000998  e3a01080          MOV      r1,#0x80
00099c  e3a00001          MOV      r0,#1
0009a0  ebfffffe          BL       Mstpc_Get_Int
0009a4  e59f1158          LDR      r1,|L1.2820|
0009a8  e5c10000          STRB     r0,[r1,#0]  ; Int_Status
;;;659    	
;;;660    	#if 0
;;;661    		Uart_Printf("\nRead Page data is"); 
;;;662    		for(i=0; i<ONEPAGE_SIZE; i++) {
;;;663    			if(!(i%16)) Uart_Printf("\n%3x:  ", i);
;;;664    			Uart_Printf("[%02x]", Read_Buffer[i]);
;;;665    		}
;;;666    		Uart_Printf("\n");
;;;667    	#endif
;;;668    
;;;669    
;;;670    }
0009ac  e8bd83f8          LDMFD    sp!,{r3-r9,pc}
                          ENDP

                  Test_Ms_Block_Read PROC
;;;124    void Test_Ms_Block_Read(void)
;;;125    {
0009b0  e92d41f0          STMFD    sp!,{r4-r8,lr}
0009b4  e24ddf84          SUB      sp,sp,#0x210
;;;126    	U32 i;
;;;127    	U32 blocknum, pagenum;
;;;128    	U8 Read_Buffer[ONEPAGE_SIZE], Extra_Buffer[STATUS_SIZE];
;;;129    	U16 In_Chksum, Calc_Chksum;
;;;130    
;;;131    	Uart_Printf("Input Block # for read block : ");
0009b8  e28f0f52          ADR      r0,|L1.2824|
0009bc  ebfffffe          BL       _printf
;;;132    	blocknum = Uart_GetIntNum();
0009c0  ebfffffe          BL       Uart_GetIntNum
0009c4  e1a08000          MOV      r8,r0
;;;133    
;;;134    	for(pagenum=0; pagenum<PAGE_IN_BLOCK_NUM; pagenum++) {
0009c8  e3a05000          MOV      r5,#0
                  |L1.2508|
0009cc  e3550020          CMP      r5,#0x20
0009d0  2a000047          BCS      |L1.2804|
0009d4  ea000001          B        |L1.2528|
                  |L1.2520|
0009d8  e2855001          ADD      r5,r5,#1
0009dc  eafffffa          B        |L1.2508|
;;;135    		Uart_Printf("Ms_Page_Read(%d,%d)\n", blocknum, pagenum);
                  |L1.2528|
0009e0  e1a02005          MOV      r2,r5
0009e4  e1a01008          MOV      r1,r8
0009e8  e28f0f4e          ADR      r0,|L1.2856|
0009ec  ebfffffe          BL       _printf
;;;136    		Ms_Page_Read(blocknum, pagenum, Extra_Buffer, Read_Buffer);
0009f0  e28d3010          ADD      r3,sp,#0x10
0009f4  e28d2004          ADD      r2,sp,#4
0009f8  e1a01005          MOV      r1,r5
0009fc  e1a00008          MOV      r0,r8
000a00  ebfffffe          BL       Ms_Page_Read
;;;137    
;;;138    		// Calc checksum...
;;;139    		for(Calc_Chksum=0, i=0; i<ONEPAGE_SIZE; i++) {
000a04  e3a06000          MOV      r6,#0
000a08  e3a04000          MOV      r4,#0
                  |L1.2572|
000a0c  e3540f80          CMP      r4,#0x200
000a10  2a000007          BCS      |L1.2612|
000a14  ea000001          B        |L1.2592|
                  |L1.2584|
000a18  e2844001          ADD      r4,r4,#1
000a1c  eafffffa          B        |L1.2572|
;;;140    			Calc_Chksum += Read_Buffer[i];
                  |L1.2592|
000a20  e28d0010          ADD      r0,sp,#0x10
000a24  e7d00004          LDRB     r0,[r0,r4]
000a28  e0800006          ADD      r0,r0,r6
000a2c  e3c06b40          BIC      r6,r0,#0x10000
;;;141    		}
000a30  eafffff8          B        |L1.2584|
;;;142    		In_Chksum = (U16)Extra_Buffer[4] | (U16)(((U16)Extra_Buffer[5])<<8);
                  |L1.2612|
000a34  e5dd0008          LDRB     r0,[sp,#8]
000a38  e5dd1009          LDRB     r1,[sp,#9]
000a3c  e1807401          ORR      r7,r0,r1,LSL #8
;;;143    		if(Calc_Chksum!=In_Chksum) {
000a40  e1560007          CMP      r6,r7
000a44  0a000003          BEQ      |L1.2648|
;;;144    			Uart_Printf("Checksum ERROR(IN:%x,Calc:%x)\n", In_Chksum, Calc_Chksum);
000a48  e1a02006          MOV      r2,r6
000a4c  e1a01007          MOV      r1,r7
000a50  e28f00e8          ADR      r0,|L1.2880|
000a54  ebfffffe          BL       _printf
;;;145    		}
;;;146    		
;;;147    		#if 1
;;;148    
;;;149    		Uart_Printf("\nExtra data is");
                  |L1.2648|
000a58  e28f0f40          ADR      r0,|L1.2912|
000a5c  ebfffffe          BL       _printf
;;;150    		for(i=0; i<EXTRA_SIZE; i++) {
000a60  e3a04000          MOV      r4,#0
                  |L1.2660|
000a64  e3540009          CMP      r4,#9
000a68  2a00000c          BCS      |L1.2720|
000a6c  ea000001          B        |L1.2680|
                  |L1.2672|
000a70  e2844001          ADD      r4,r4,#1
000a74  eafffffa          B        |L1.2660|
;;;151    			if(!(i%16)) Uart_Printf("\n%3x:  ", i);
                  |L1.2680|
000a78  e314000f          TST      r4,#0xf
000a7c  1a000002          BNE      |L1.2700|
000a80  e1a01004          MOV      r1,r4
000a84  e28f00e4          ADR      r0,|L1.2928|
000a88  ebfffffe          BL       _printf
;;;152    			Uart_Printf("[%02x]", Extra_Buffer[i]);
                  |L1.2700|
000a8c  e28d0004          ADD      r0,sp,#4
000a90  e7d01004          LDRB     r1,[r0,r4]
000a94  e28f00dc          ADR      r0,|L1.2936|
000a98  ebfffffe          BL       _printf
;;;153    		}
000a9c  eafffff3          B        |L1.2672|
;;;154    
;;;155    		Uart_Printf("\nRead Page data is");	
                  |L1.2720|
000aa0  e28f00d8          ADR      r0,|L1.2944|
000aa4  ebfffffe          BL       _printf
;;;156    		for(i=0; i<ONEPAGE_SIZE; i++) {
000aa8  e3a04000          MOV      r4,#0
                  |L1.2732|
000aac  e3540f80          CMP      r4,#0x200
000ab0  2a00000c          BCS      |L1.2792|
000ab4  ea000001          B        |L1.2752|
                  |L1.2744|
000ab8  e2844001          ADD      r4,r4,#1
000abc  eafffffa          B        |L1.2732|
;;;157    			if(!(i%16)) Uart_Printf("\n%3x:  ", i);
                  |L1.2752|
000ac0  e314000f          TST      r4,#0xf
000ac4  1a000002          BNE      |L1.2772|
000ac8  e1a01004          MOV      r1,r4
000acc  e28f009c          ADR      r0,|L1.2928|
000ad0  ebfffffe          BL       _printf
;;;158    			Uart_Printf("[%02x]", Read_Buffer[i]);
                  |L1.2772|
000ad4  e28d0010          ADD      r0,sp,#0x10
000ad8  e7d01004          LDRB     r1,[r0,r4]
000adc  e28f0094          ADR      r0,|L1.2936|
000ae0  ebfffffe          BL       _printf
;;;159    		}
000ae4  eafffff3          B        |L1.2744|
;;;160    		Uart_Printf("\n");
                  |L1.2792|
000ae8  e28f00a4          ADR      r0,|L1.2964|
000aec  ebfffffe          BL       _printf
;;;161    		#endif
;;;162    	}
000af0  eaffffb8          B        |L1.2520|
;;;163    
;;;164    }
                  |L1.2804|
000af4  e28ddf84          ADD      sp,sp,#0x210
000af8  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                  |L1.2812|
000afc  00008004          DCD      0x00008004
                  |L1.2816|
000b00  0000b006          DCD      0x0000b006
                  |L1.2820|
000b04  00000010          DCD      ||.bss$2|| + 16
                  |L1.2824|
000b08  75706e49          DCB      "Inpu"
000b0c  6c422074          DCB      "t Bl"

⌨️ 快捷键说明

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