F203/Core/Src/ram_test.c

78 lines
1.4 KiB
C

/*
* ram_test.c
*
* Created on: Apr 21, 2017
* Author: toporov
*/
#include "main.h"
#include <string.h>
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;
}