/* * ram_test.c * * Created on: Apr 21, 2017 * Author: toporov */ #include "main.h" #include volatile const uint16_t RAMDat[] = /*{0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004};*/ {0xAA55, 0x55AA, 0xEE77, 0x77EE, 0xCC33, 0x33CC}; volatile uint16_t RAMout[19] = {0xAA55, 0x55AA, 0xAA55, 0x55AA, 0xAA55, 0x55AA,0xAA55, 0x55AA, 0xAA55, 0x55AA, 0xAA55, 0x55AA, 0xAA55, 0x55AA, 0xAA55, 0x55AA, 0xAA55, 0x55AA, 0xAA55}; volatile uint16_t RAMin[19]; void RAMTest(void) { volatile uint32_t i, j, addr; uint8_t *p; memset((( uint8_t *) (((volatile uint32_t) 0x64000000))), 0, 0x000C0000); for(p = (uint8_t *) SRAM_ADDR_OFFSET; p < (uint8_t *)0x640C0000; ) { memcpy((void *)p, (void *)RAMDat, sizeof(RAMDat)); p += sizeof(RAMDat); } for(p = (uint8_t *) SRAM_ADDR_OFFSET; p < (uint8_t *)0x640C0000; ) { if(memcmp((void *)p, (void *)RAMDat, sizeof(RAMDat)) != 0) while(1); p += sizeof(RAMDat); } for(j = 0; j < 10000; j++) { i = 0; addr = 0; while(i < 19) { if(!(i & 1)) addr = (addr << 1) | 0x1; else addr = (addr << 1); RAM_WR32(addr) = RAMout[i]; i++; } i = 0; addr = 0; while(i < 19) { if(!(i & 1)) addr = (addr << 1) | 0x1; else addr = (addr << 1); RAMin[i] = RAM_RD32(addr); i++; } if(memcmp((void *)RAMout, (void *)RAMin, sizeof(RAMout)) != 0) while(1); } i = 0; }