xref: /nrf52832-nimble/rt-thread/examples/test/mem_test.c (revision 104654410c56c573564690304ae786df310c91fc)
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