Skip to content
Snippets Groups Projects
Commit 0437655b authored by Tristan Gingold's avatar Tristan Gingold
Browse files

sw: add dram scrubber test

parent 71cf6b89
Branches
No related merge requests found
......@@ -20,6 +20,7 @@ static enum t_test
{
TEST_DRAM_DE,
TEST_DRAM_SE,
TEST_DRAM_SCRUB,
TEST_IRAM_DE,
TEST_IRAM_SE,
TEST_IRAM_SCRUB,
......@@ -182,16 +183,20 @@ main (void)
switch (next_test) {
case TEST_DRAM_DE:
/* Add double-errors */
SUPERVISOR->dram_ecc_mask = 0x03;
ecc[0] = 12;
ecc[2] = 23;
/* Add single-errors */
SUPERVISOR->dram_ecc_mask = 0x01;
ecc[1] = 56;
ecc[3] = 78;
/* Do not add errors anymore! */
SUPERVISOR->dram_ecc_mask = 0x00;
next_test = TEST_DRAM_SE;
/* Order is important! */
asm volatile ("");
/* Trigger a single error */
v = ecc[0];
unreachable();
break;
......@@ -199,6 +204,7 @@ main (void)
case TEST_DRAM_SE:
if (SUPERVISOR->dram_ecc_se != 0)
unreachable();
/* Trigger a single error */
v = ecc[1];
if (SUPERVISOR->dram_ecc_se != 1)
unreachable();
......@@ -206,12 +212,38 @@ main (void)
/* Fallthrough */
case TEST_IRAM_DE:
next_test = TEST_IRAM_SE;
next_test = TEST_DRAM_SCRUB;
/* Generate a fatal error */
v = *(volatile unsigned *)0xfffc;
unreachable();
break;
case TEST_DRAM_SCRUB:
if (SUPERVISOR->dram_scrub_se != 0
|| SUPERVISOR->dram_scrub_de != 0)
unreachable();
uart_puts("Start DRAM scrubber");
SUPERVISOR->scrub_cfg = HYDRA_SUPERVISOR_REGS_SCRUB_CFG_DRAM_EN;
next_test = TEST_IRAM_SE;
do {
v = SUPERVISOR->dram_scrub_de;
SUPERVISOR->wd_key = WD_KEY;
} while (v == 0);
/* Because the scrubber is always running, the counter is always
incrementing. So the original value is kept. */
uart_putc('\n');
if (SUPERVISOR->dram_scrub_se != 1 || v > 2) {
uart_puts ("se:");
uart_put_hex8 (SUPERVISOR->dram_scrub_se);
uart_puts (", de:");
uart_put_hex8 (v);
unreachable();
}
/* Remove the errors */
ecc[0] = 0;
ecc[2] = 0;
/* Fallthrough */
case TEST_IRAM_SE:
/* Generate a single error */
v = *(volatile unsigned *)0xfff8;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment