added memory test for VHDL config
This commit is contained in:
@@ -31,5 +31,5 @@ extern int sprintf(char *str, const char *format, ...);
|
|||||||
|
|
||||||
|
|
||||||
extern void display_progress(void);
|
extern void display_progress(void);
|
||||||
extern void hexdump(uint8_t buffer[], int size);
|
extern void hexdump(volatile uint8_t buffer[], int size);
|
||||||
#endif /* _BAS_PRINTF_H_ */
|
#endif /* _BAS_PRINTF_H_ */
|
||||||
|
|||||||
@@ -417,27 +417,28 @@ void display_progress()
|
|||||||
xputchar('\r');
|
xputchar('\r');
|
||||||
}
|
}
|
||||||
|
|
||||||
void hexdump(uint8_t buffer[], int size)
|
void hexdump(volatile uint8_t buffer[], int size)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int line = 0;
|
int line = 0;
|
||||||
uint8_t *bp = buffer;
|
volatile uint8_t *bp = buffer;
|
||||||
|
|
||||||
while (bp < buffer + size) {
|
while (bp < buffer + size) {
|
||||||
uint8_t *lbp = bp;
|
volatile uint8_t *lbp = bp;
|
||||||
|
|
||||||
xprintf("%08x ", line);
|
xprintf("%08x ", line);
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < 16; i++) {
|
||||||
|
uint8_t c = *lbp++;
|
||||||
if (bp + i > buffer + size) {
|
if (bp + i > buffer + size) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
xprintf("%02x ", (uint8_t) *lbp++);
|
xprintf("%02x ", c);
|
||||||
}
|
}
|
||||||
|
|
||||||
lbp = bp;
|
lbp = bp;
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < 16; i++) {
|
||||||
int8_t c = *lbp++;
|
volatile int8_t c = *lbp++;
|
||||||
|
|
||||||
if (bp + i > buffer + size) {
|
if (bp + i > buffer + size) {
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ static void init_video_ddr(void) {
|
|||||||
void do_tests(void)
|
void do_tests(void)
|
||||||
{
|
{
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
|
uint32_t buffer[64];
|
||||||
|
|
||||||
xprintf("initialize Firebee video PLL\r\n");
|
xprintf("initialize Firebee video PLL\r\n");
|
||||||
init_pll();
|
init_pll();
|
||||||
@@ -138,20 +139,38 @@ void do_tests(void)
|
|||||||
|
|
||||||
xprintf("try to access Firebee FPGA memory\r\n");
|
xprintf("try to access Firebee FPGA memory\r\n");
|
||||||
|
|
||||||
xprintf("read\r\n");
|
|
||||||
start = MCF_SLT0_SCNT;
|
|
||||||
hexdump((uint8_t *) _VRAM, 64);
|
|
||||||
end = MCF_SLT0_SCNT;
|
|
||||||
time = (start - end) / (SYSCLK / 1000) / 1000;
|
|
||||||
|
|
||||||
xprintf("finished (took %f seconds).\r\n", time / 1000.0);
|
|
||||||
|
|
||||||
xprintf("write\r\n");
|
xprintf("write\r\n");
|
||||||
start = MCF_SLT0_SCNT;
|
start = MCF_SLT0_SCNT;
|
||||||
for (i = 0; i < 64; i++)
|
for (i = 0; i < 64; i++)
|
||||||
{
|
{
|
||||||
((uint8_t *) _VRAM)[i] = (uint32_t) i;
|
((volatile uint8_t *) _VRAM)[i] = (uint32_t) i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xprintf("read\r\n");
|
||||||
|
start = MCF_SLT0_SCNT;
|
||||||
|
|
||||||
|
xprintf("byte read\r\n");
|
||||||
|
for (i = 0; i < 64; i++)
|
||||||
|
((uint8_t *) buffer)[i] = * ((uint8_t *) _VRAM) + i;
|
||||||
|
|
||||||
|
hexdump((volatile uint8_t *) buffer, 64);
|
||||||
|
|
||||||
|
xprintf("word read\r\n");
|
||||||
|
for (i = 0; i < 64 / sizeof(uint16_t); i++)
|
||||||
|
((uint16_t *) buffer)[i] = * ((uint16_t *) _VRAM) + i;
|
||||||
|
hexdump((volatile uint8_t *) buffer, 64);
|
||||||
|
|
||||||
|
xprintf("longword read\r\n");
|
||||||
|
for (i = 0; i < 64 / sizeof(uint32_t); i++)
|
||||||
|
((uint32_t *) buffer)[i] = *((uint32_t *) _VRAM) + i;
|
||||||
|
hexdump((volatile uint8_t *) buffer, 64);
|
||||||
|
|
||||||
|
end = MCF_SLT0_SCNT;
|
||||||
|
time = (start - end) / (SYSCLK / 1000) / 1000;
|
||||||
|
|
||||||
|
xprintf("finished (took %f seconds).\r\n", time / 1000.0);
|
||||||
|
|
||||||
|
|
||||||
end = MCF_SLT0_SCNT;
|
end = MCF_SLT0_SCNT;
|
||||||
time = (start - end) / (SYSCLK / 1000) / 1000;
|
time = (start - end) / (SYSCLK / 1000) / 1000;
|
||||||
|
|
||||||
@@ -159,7 +178,7 @@ void do_tests(void)
|
|||||||
|
|
||||||
xprintf("read\r\n");
|
xprintf("read\r\n");
|
||||||
start = MCF_SLT0_SCNT;
|
start = MCF_SLT0_SCNT;
|
||||||
hexdump((uint8_t *) _VRAM, 64);
|
hexdump((volatile uint8_t *) _VRAM, 64);
|
||||||
end = MCF_SLT0_SCNT;
|
end = MCF_SLT0_SCNT;
|
||||||
time = (start - end) / (SYSCLK / 1000) / 1000;
|
time = (start - end) / (SYSCLK / 1000) / 1000;
|
||||||
|
|
||||||
@@ -233,7 +252,7 @@ void wait_for_jtag(void)
|
|||||||
|
|
||||||
/* begin of tests */
|
/* begin of tests */
|
||||||
|
|
||||||
while (1) do_tests();
|
do_tests();
|
||||||
|
|
||||||
xprintf("wait a little to let things settle...\r\n");
|
xprintf("wait a little to let things settle...\r\n");
|
||||||
for (i = 0; i < 100000L; i++);
|
for (i = 0; i < 100000L; i++);
|
||||||
|
|||||||
Reference in New Issue
Block a user