|
@@ -91,6 +91,8 @@ static void test_sdram(void)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+extern uint32_t __dram_bss_start[], __dram_bss_end[], __dram_bss_len[];
|
|
|
+
|
|
|
#define TESTDATA_WORDS (128*1024)
|
|
|
extern uint32_t testdata[TESTDATA_WORDS];
|
|
|
|
|
@@ -99,6 +101,7 @@ static void test_download(void)
|
|
|
const unsigned int words = TESTDATA_WORDS;
|
|
|
volatile uint32_t *p = testdata;
|
|
|
unsigned int ok = words;
|
|
|
+ unsigned int bsslen;
|
|
|
uint32_t val = 0x00001111;
|
|
|
unsigned int ratelimit = ERROR_RATELIMIT;
|
|
|
|
|
@@ -130,6 +133,15 @@ static void test_download(void)
|
|
|
con_putc('\n');
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ bsslen = (size_t)__dram_bss_len >> 2;
|
|
|
+ ok = bsslen;
|
|
|
+ for (const uint32_t *p = __dram_bss_start; p < __dram_bss_end; p++) {
|
|
|
+ if (*p)
|
|
|
+ ok--;
|
|
|
+ }
|
|
|
+
|
|
|
+ con_printf("SDRAM clear: %u/%u words OK\n", ok, bsslen);
|
|
|
}
|
|
|
|
|
|
/* Make sure we don't leave anything in SDRAM that could be a false negative */
|
|
@@ -195,8 +207,6 @@ static void init(void)
|
|
|
read_rtc();
|
|
|
}
|
|
|
|
|
|
-extern uint32_t __dram_bss_start[], __dram_bss_end[], __dram_bss_len[];
|
|
|
-
|
|
|
static uint32_t romcopy_time[2];
|
|
|
static unsigned int romcopy_state;
|
|
|
IRQHANDLER(romcopy)
|
|
@@ -286,13 +296,6 @@ void main(void)
|
|
|
|
|
|
test_download();
|
|
|
|
|
|
- for (const uint32_t *p = __dram_bss_start; p < __dram_bss_end; p++) {
|
|
|
- if (*p) {
|
|
|
- con_printf(".dram.bss not properly cleared\n");
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
disk_init();
|
|
|
test_sdram();
|
|
|
scrub_sdram();
|