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

📄 memtest.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\memtest.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  Mem_Test PROC
;;;21     void Mem_Test(int Print_msg)
;;;22     {
                  |L1.0|
000000  e92d47f0          STMFD    sp!,{r4-r10,lr}
000004  e1a05000          MOV      r5,r0
;;;23     	
;;;24     	U32 addr=0, indata, src_data, i;
000008  e3a04000          MOV      r4,#0
;;;25     	U32 error;
;;;26     	static int offset=0;
;;;27     	U16 jump_offset=1;
00000c  e3a07001          MOV      r7,#1
;;;28     
;;;29     	
;;;30     	//Uart_Printf("Check: SRAM Area must be in non-cacheable area!\n");
;;;31     	//Uart_Printf("SRAM W/R test[%xh-%xh], R/W offset[%d]\n", SRAM_SADDR, SRAM_EADDR-1, offset);
;;;32     //	for(i=0; i<3; i++) {		// 8/16/32-bit.
;;;33     	for(i=2; i<3; i++) {		// 8/16/32-bit.
000010  e3a08002          MOV      r8,#2
                  |L1.20|
000014  e3580003          CMP      r8,#3
000018  2a00009f          BCS      |L1.668|
00001c  ea000001          B        |L1.40|
                  |L1.32|
000020  e2888001          ADD      r8,r8,#1
000024  eafffffa          B        |L1.20|
;;;34     
;;;35     		if(i==0) jump_offset=1;
                  |L1.40|
000028  e3580000          CMP      r8,#0
00002c  1a000001          BNE      |L1.56|
000030  e3a07001          MOV      r7,#1
000034  ea000006          B        |L1.84|
;;;36     		else if(i==1) jump_offset=2;
                  |L1.56|
000038  e3580001          CMP      r8,#1
00003c  1a000001          BNE      |L1.72|
000040  e3a07002          MOV      r7,#2
000044  ea000002          B        |L1.84|
;;;37     		else if(i==2) jump_offset=4;
                  |L1.72|
000048  e3580002          CMP      r8,#2
00004c  1a000000          BNE      |L1.84|
000050  e3a07004          MOV      r7,#4
;;;38     		
;;;39     		///////////////////// Clear Source/Target ////////////////////
;;;40     		//Uart_Printf("Clear data.\n");
;;;41     		for(addr=0; (SRAM_SADDR+addr)<SRAM_EADDR; addr+=4) {
                  |L1.84|
000054  e3a04000          MOV      r4,#0
                  |L1.88|
000058  e28405c4          ADD      r0,r4,#0x31000000
00005c  e290c4cf          ADDS     r12,r0,#0xcf000000
000060  225ccb80          SUBCSS   r12,r12,#0x20000
000064  2a000007          BCS      |L1.136|
000068  ea000001          B        |L1.116|
                  |L1.108|
00006c  e2844004          ADD      r4,r4,#4
000070  eafffff8          B        |L1.88|
;;;42     			*(U32 *)(SRAM_SADDR+addr) = 0x0;
                  |L1.116|
000074  e3a00000          MOV      r0,#0
000078  e3a015c4          MOV      r1,#0x31000000
00007c  e7810004          STR      r0,[r1,r4]
;;;43     			if(!(addr%(4*1024))) {
000080  e1a00000          NOP      
;;;44     				//Uart_Printf("\b\b\b\b\b\b\b\b\b\b%10x", SRAM_SADDR+addr);
;;;45     				}
;;;46     		}
000084  eafffff8          B        |L1.108|
;;;47     		//Uart_Printf("\b\b\b\b\b\b\b\b\b\b%10x\n", SRAM_SADDR+addr);
;;;48     
;;;49     		///////////////////// Write ////////////////////
;;;50     		//Uart_Printf("Write data[%x-%x].\n", SRAM_SADDR, SRAM_EADDR);
;;;51     		if(Print_msg>0) Uart_Printf("Wr(%d-bit)...", jump_offset*8);
                  |L1.136|
000088  e3550000          CMP      r5,#0
00008c  da000002          BLE      |L1.156|
000090  e1a01187          MOV      r1,r7,LSL #3
000094  e28f0f86          ADR      r0,|L1.692|
000098  ebfffffe          BL       Uart_Printf
;;;52     		if(Print_msg>1) Uart_Printf("ADDR:%8x", SRAM_SADDR);
                  |L1.156|
00009c  e3550001          CMP      r5,#1
0000a0  da000002          BLE      |L1.176|
0000a4  e3a015c4          MOV      r1,#0x31000000
0000a8  e28f0f85          ADR      r0,|L1.708|
0000ac  ebfffffe          BL       Uart_Printf
;;;53     		Led_Display(0x1);
                  |L1.176|
0000b0  e3a00001          MOV      r0,#1
0000b4  ebfffffe          BL       Led_Display
;;;54     		for(addr=0; (SRAM_SADDR+addr)<SRAM_EADDR; addr+=jump_offset) {
0000b8  e3a04000          MOV      r4,#0
                  |L1.188|
0000bc  e28405c4          ADD      r0,r4,#0x31000000
0000c0  e290c4cf          ADDS     r12,r0,#0xcf000000
0000c4  225ccb80          SUBCSS   r12,r12,#0x20000
0000c8  2a00001e          BCS      |L1.328|
0000cc  ea000001          B        |L1.216|
                  |L1.208|
0000d0  e0844007          ADD      r4,r4,r7
0000d4  eafffff8          B        |L1.188|
;;;55     			
;;;56     			src_data = addr+offset;
                  |L1.216|
0000d8  e59f01f0          LDR      r0,|L1.720|
0000dc  e5900000          LDR      r0,[r0,#0]  ; offset@Mem_Test_0
0000e0  e0846000          ADD      r6,r4,r0
;;;57     		
;;;58     			switch(jump_offset) {
0000e4  e3570001          CMP      r7,#1
0000e8  0a000004          BEQ      |L1.256|
0000ec  e3570002          CMP      r7,#2
0000f0  0a000005          BEQ      |L1.268|
0000f4  e3570004          CMP      r7,#4
0000f8  1a000009          BNE      |L1.292|
0000fc  ea000005          B        |L1.280|
;;;59     				case 1:
;;;60     					*(U8 *)(SRAM_SADDR+addr) = src_data;
                  |L1.256|
000100  e3a005c4          MOV      r0,#0x31000000
000104  e7c06004          STRB     r6,[r0,r4]
;;;61     				break;
000108  ea000005          B        |L1.292|
;;;62     				case 2:
;;;63     					*(U16 *)(SRAM_SADDR+addr) = src_data;
                  |L1.268|
00010c  e3a005c4          MOV      r0,#0x31000000
000110  e18060b4          STRH     r6,[r0,r4]
;;;64     				break;
000114  ea000002          B        |L1.292|
;;;65     				case 4:
;;;66     					*(U32 *)(SRAM_SADDR+addr) = src_data;
                  |L1.280|
000118  e3a005c4          MOV      r0,#0x31000000
00011c  e7806004          STR      r6,[r0,r4]
;;;67     				break;
000120  e1a00000          NOP      
;;;68     			}
;;;69     			if(!(addr%(4*1024))) {
                  |L1.292|
000124  e1a00a04          MOV      r0,r4,LSL #20
000128  e1b00a20          MOVS     r0,r0,LSR #20
00012c  1a000004          BNE      |L1.324|
;;;70     				if(Print_msg>1) Uart_Printf("\b\b\b\b\b\b\b\b%8x", SRAM_SADDR+addr);
000130  e3550001          CMP      r5,#1
000134  da000002          BLE      |L1.324|
000138  e28415c4          ADD      r1,r4,#0x31000000
00013c  e28f0f64          ADR      r0,|L1.724|
000140  ebfffffe          BL       Uart_Printf
;;;71     				}
;;;72     		}
                  |L1.324|
000144  eaffffe1          B        |L1.208|
;;;73     		if(Print_msg>1) Uart_Printf("\b\b\b\b\b\b\b\b%8x  ", SRAM_SADDR+addr);
                  |L1.328|
000148  e3550001          CMP      r5,#1
00014c  da000002          BLE      |L1.348|
000150  e28415c4          ADD      r1,r4,#0x31000000
000154  e28f0f61          ADR      r0,|L1.736|
000158  ebfffffe          BL       Uart_Printf
;;;74     
;;;75     		///////////////////// Verify //////////////////////
;;;76     		//Uart_Printf("Verify[%x-%x].\n", SRAM_SADDR, SRAM_EADDR);
;;;77     		if(Print_msg>0) Uart_Printf("Verify...");
                  |L1.348|
00015c  e3550000          CMP      r5,#0
000160  da000001          BLE      |L1.364|
000164  e28f0f61          ADR      r0,|L1.752|
000168  ebfffffe          BL       Uart_Printf
;;;78     		if(Print_msg>1) Uart_Printf("ADDR:%8x", SRAM_SADDR);
                  |L1.364|
00016c  e3550001          CMP      r5,#1
000170  da000002          BLE      |L1.384|
000174  e3a015c4          MOV      r1,#0x31000000
000178  e28f0f51          ADR      r0,|L1.708|
00017c  ebfffffe          BL       Uart_Printf
;;;79     		Led_Display(0x2);
                  |L1.384|
000180  e3a00002          MOV      r0,#2
000184  ebfffffe          BL       Led_Display
;;;80     		for(error=0, addr=0; (SRAM_SADDR+addr)<SRAM_EADDR; addr+=jump_offset) {
000188  e3a09000          MOV      r9,#0
00018c  e3a04000          MOV      r4,#0
                  |L1.400|
000190  e28405c4          ADD      r0,r4,#0x31000000
000194  e290c4cf          ADDS     r12,r0,#0xcf000000
000198  225ccb80          SUBCSS   r12,r12,#0x20000
00019c  2a00002a          BCS      |L1.588|
0001a0  ea000001          B        |L1.428|
                  |L1.420|
0001a4  e0844007          ADD      r4,r4,r7
0001a8  eafffff8          B        |L1.400|
;;;81     			switch(jump_offset) {
                  |L1.428|
0001ac  e3570001          CMP      r7,#1
0001b0  0a000004          BEQ      |L1.456|
0001b4  e3570002          CMP      r7,#2
0001b8  0a000009          BEQ      |L1.484|
0001bc  e3570004          CMP      r7,#4
0001c0  1a000015          BNE      |L1.540|
0001c4  ea00000e          B        |L1.516|
;;;82     				case 1:
;;;83     					src_data = (U8)(addr+offset);
                  |L1.456|
0001c8  e59f0100          LDR      r0,|L1.720|
0001cc  e5900000          LDR      r0,[r0,#0]  ; offset@Mem_Test_0
0001d0  e0840000          ADD      r0,r4,r0
0001d4  e20060ff          AND      r6,r0,#0xff
;;;84     					indata = *(U8 *)(SRAM_SADDR+addr);
0001d8  e3a005c4          MOV      r0,#0x31000000
0001dc  e7d0a004          LDRB     r10,[r0,r4]
;;;85     				break;
0001e0  ea00000d          B        |L1.540|
;;;86     				case 2:
;;;87     					src_data = (U16)(addr+offset);
                  |L1.484|
0001e4  e59f00e4          LDR      r0,|L1.720|
0001e8  e5900000          LDR      r0,[r0,#0]  ; offset@Mem_Test_0
0001ec  e0840000          ADD      r0,r4,r0
0001f0  e1a06800          MOV      r6,r0,LSL #16
0001f4  e1a06826          MOV      r6,r6,LSR #16
;;;88     					indata = *(U16 *)(SRAM_SADDR+addr);
0001f8  e3a005c4          MOV      r0,#0x31000000
0001fc  e190a0b4          LDRH     r10,[r0,r4]
;;;89     				break;
000200  ea000005          B        |L1.540|
;;;90     				case 4:
;;;91     					src_data = (U32)(addr+offset);
                  |L1.516|
000204  e59f00c4          LDR      r0,|L1.720|
000208  e5900000          LDR      r0,[r0,#0]  ; offset@Mem_Test_0
00020c  e0846000          ADD      r6,r4,r0
;;;92     					indata = *(U32 *)(SRAM_SADDR+addr);
000210  e3a005c4          MOV      r0,#0x31000000
000214  e790a004          LDR      r10,[r0,r4]
;;;93     				break;
000218  e1a00000          NOP      
;;;94     			}
;;;95     
;;;96     			if(!(addr%(4*1024))) {
                  |L1.540|
00021c  e1a00a04          MOV      r0,r4,LSL #20
000220  e1b00a20          MOVS     r0,r0,LSR #20
000224  1a000004          BNE      |L1.572|
;;;97     				if(Print_msg>1) Uart_Printf("\b\b\b\b\b\b\b\b%8x", SRAM_SADDR+addr);
000228  e3550001          CMP      r5,#1
00022c  da000002          BLE      |L1.572|
000230  e28415c4          ADD      r1,r4,#0x31000000
000234  e28f0098          ADR      r0,|L1.724|
000238  ebfffffe          BL       Uart_Printf
;;;98     			}
;;;99     			
;;;100    			if(indata != src_data) {
                  |L1.572|
00023c  e15a0006          CMP      r10,r6
000240  0a000000          BEQ      |L1.584|
;;;101    				error++;
000244  e2899001          ADD      r9,r9,#1
;;;102    				//Uart_Printf("%xH[W:%x, R:%x]\n", addr, src_data, indata);
;;;103    			}
;;;104    		}
                  |L1.584|
000248  eaffffd5          B        |L1.420|
;;;105    		if(Print_msg>1) Uart_Printf("\b\b\b\b\b\b\b\b%8x  ", SRAM_SADDR+addr);
                  |L1.588|
00024c  e3550001          CMP      r5,#1
000250  da000002          BLE      |L1.608|
000254  e28415c4          ADD      r1,r4,#0x31000000
000258  e28f0080          ADR      r0,|L1.736|
00025c  ebfffffe          BL       Uart_Printf
;;;106    		
;;;107    		if(error!=0) {
                  |L1.608|
000260  e3590000          CMP      r9,#0
000264  0a000005          BEQ      |L1.640|
;;;108    			if(Print_msg>0) Uart_Printf("ERROR(%d)...\n\n", error);
000268  e3550000          CMP      r5,#0
00026c  da000007          BLE      |L1.656|
000270  e1a01009          MOV      r1,r9
000274  e28f0080          ADR      r0,|L1.764|
000278  ebfffffe          BL       Uart_Printf
00027c  ea000003          B        |L1.656|
;;;109    		} else {
;;;110    			if(Print_msg>0) Uart_Printf("OK!\n");
                  |L1.640|
000280  e3550000          CMP      r5,#0
000284  da000001          BLE      |L1.656|
000288  e28f007c          ADR      r0,|L1.780|
00028c  ebfffffe          BL       Uart_Printf
;;;111    			//Uart_Printf(".");
;;;112    		}
;;;113    		Led_Display(0xf);
                  |L1.656|
000290  e3a0000f          MOV      r0,#0xf
000294  ebfffffe          BL       Led_Display
;;;114    	}
000298  eaffff60          B        |L1.32|
;;;115    
;;;116    offset++;
                  |L1.668|
00029c  e59f002c          LDR      r0,|L1.720|
0002a0  e5900000          LDR      r0,[r0,#0]  ; offset@Mem_Test_0
0002a4  e2800001          ADD      r0,r0,#1
0002a8  e59f1020          LDR      r1,|L1.720|
0002ac  e5810000          STR      r0,[r1,#0]  ; offset@Mem_Test_0
;;;117    }
0002b0  e8bd87f0          LDMFD    sp!,{r4-r10,pc}
                  |L1.692|
0002b4  25287257          DCB      "Wr(%"
0002b8  69622d64          DCB      "d-bi"
0002bc  2e2e2974          DCB      "t).."
0002c0  0000002e          DCB      ".\0\0\0"
                  |L1.708|
0002c4  52444441          DCB      "ADDR"
0002c8  7838253a          DCB      ":%8x"
0002cc  00000000          DCB      "\0\0\0\0"
                  |L1.720|
0002d0  00000000          DCD      ||.bss$2||
                  |L1.724|
0002d4  08080808          DCB      "\b\b\b\b"
0002d8  08080808          DCB      "\b\b\b\b"
0002dc  00783825          DCB      "%8x\0"
                  |L1.736|
0002e0  08080808          DCB      "\b\b\b\b"
0002e4  08080808          DCB      "\b\b\b\b"
0002e8  20783825          DCB      "%8x "
0002ec  00000020          DCB      " \0\0\0"
                  |L1.752|
0002f0  69726556          DCB      "Veri"
0002f4  2e2e7966          DCB      "fy.."
0002f8  0000002e          DCB      ".\0\0\0"
                  |L1.764|
0002fc  4f525245          DCB      "ERRO"
000300  64252852          DCB      "R(%d"
000304  2e2e2e29          DCB      ")..."
000308  00000a0a          DCB      "\n\n\0\0"
                  |L1.780|
00030c  0a214b4f          DCB      "OK!\n"
000310  00000000          DCB      "\0\0\0\0"
                          ENDP



                          AREA ||.bss||, NOINIT, ALIGN=2

                  ||offset@Mem_Test_0||
                  ||.bss$2||
                          % 4


        END

⌨️ 快捷键说明

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