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