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