1 #include <stdint.h>
2
3 #include <rthw.h>
4 #include <rtthread.h>
5
6 #define printf rt_kprintf
7
mem_test(uint32_t address,uint32_t size)8 void mem_test(uint32_t address, uint32_t size )
9 {
10 uint32_t i;
11
12 printf("memtest,address: 0x%08X size: 0x%08X\r\n", address, size);
13
14 /**< 8bit test */
15 {
16 uint8_t * p_uint8_t = (uint8_t *)address;
17 for(i=0; i<size/sizeof(uint8_t); i++)
18 {
19 *p_uint8_t++ = (uint8_t)i;
20 }
21
22 p_uint8_t = (uint8_t *)address;
23 for(i=0; i<size/sizeof(uint8_t); i++)
24 {
25 if( *p_uint8_t != (uint8_t)i )
26 {
27 printf("8bit test fail @ 0x%08X\r\nsystem halt!!!!!",(uint32_t)p_uint8_t);
28 while(1);
29 }
30 p_uint8_t++;
31 }
32 printf("8bit test pass!!\r\n");
33 }
34
35 /**< 16bit test */
36 {
37 uint16_t * p_uint16_t = (uint16_t *)address;
38 for(i=0; i<size/sizeof(uint16_t); i++)
39 {
40 *p_uint16_t++ = (uint16_t)i;
41 }
42
43 p_uint16_t = (uint16_t *)address;
44 for(i=0; i<size/sizeof(uint16_t); i++)
45 {
46 if( *p_uint16_t != (uint16_t)i )
47 {
48 printf("16bit test fail @ 0x%08X\r\nsystem halt!!!!!",(uint32_t)p_uint16_t);
49 while(1);
50 }
51 p_uint16_t++;
52 }
53 printf("16bit test pass!!\r\n");
54 }
55
56 /**< 32bit test */
57 {
58 uint32_t * p_uint32_t = (uint32_t *)address;
59 for(i=0; i<size/sizeof(uint32_t); i++)
60 {
61 *p_uint32_t++ = (uint32_t)i;
62 }
63
64 p_uint32_t = (uint32_t *)address;
65 for(i=0; i<size/sizeof(uint32_t); i++)
66 {
67 if( *p_uint32_t != (uint32_t)i )
68 {
69 printf("32bit test fail @ 0x%08X\r\nsystem halt!!!!!",(uint32_t)p_uint32_t);
70 while(1);
71 }
72 p_uint32_t++;
73 }
74 printf("32bit test pass!!\r\n");
75 }
76
77 /**< 32bit Loopback test */
78 {
79 uint32_t * p_uint32_t = (uint32_t *)address;
80 for(i=0; i<size/sizeof(uint32_t); i++)
81 {
82 *p_uint32_t = (uint32_t)p_uint32_t;
83 p_uint32_t++;
84 }
85
86 p_uint32_t = (uint32_t *)address;
87 for(i=0; i<size/sizeof(uint32_t); i++)
88 {
89 if( *p_uint32_t != (uint32_t)p_uint32_t )
90 {
91 printf("32bit Loopback test fail @ 0x%08X", (uint32_t)p_uint32_t);
92 printf(" data:0x%08X \r\n", (uint32_t)*p_uint32_t);
93 printf("system halt!!!!!",(uint32_t)p_uint32_t);
94 while(1);
95 }
96 p_uint32_t++;
97 }
98 printf("32bit Loopback test pass!!\r\n");
99 }
100 }
101
102 #ifdef RT_USING_FINSH
103 #include <finsh.h>
104 FINSH_FUNCTION_EXPORT(mem_test, mem_test(0xA0000000, 0x00100000) );
105 #endif
106