📄 memtest.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 + -