xref: /nrf52832-nimble/rt-thread/examples/test/mem_test.c (revision 042d53a763ad75cb1465103098bb88c245d95138)
1 #include <stdint.h>
2 
3 #include <rthw.h>
4 #include <rtthread.h>
5 
6 #define printf    rt_kprintf
7 
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