a726293b046f98bb4dd02e881a7b22d02f11a9dc
5 static inline uint32_t read32(const void *addr
)
7 return *(volatile uint32_t *)addr
;
10 static inline void write32(void *addr
, uint32_t value
)
12 *(volatile uint32_t *)addr
= value
;
22 uint32_t zero0
; // reserved
23 uint32_t zero1
; // reserved
29 void uart_write(char c
)
31 struct uart_regs
*regs
= 0x2000;
32 while (!read32(®s
->tx_rdy
));
33 write32(®s
->tx_data
, c
);
36 void uart_writestr(const char *c
) {
43 void memcpy(void *dest
, void *src
, size_t n
) {
45 //cast src and dest to char*
46 char *src_char
= (char *)src
;
47 char *dest_char
= (char *)dest
;
49 dest_char
[i
] = src_char
[i
]; //copy contents byte by byte
52 void uart_writeuint32(uint32_t val
) {
53 const char lut
[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
54 uint8_t *val_arr
= &val
;
57 for (i
= 0; i
< 4; i
++) {
58 uart_write(lut
[(val_arr
[3-i
] >> 4) & 0xF]);
59 uart_write(lut
[val_arr
[3-i
] & 0xF]);
68 const int kNumIterations
= 65536;
70 uart_writestr("Firmware launched...\n");
72 uart_writestr("DRAM init... ");
74 struct gramProfile profile
= {
76 0x320, 0x6, 0x200, 0x0
81 gram_init(&ctx
, &profile
, (void*)0x10000000, (void*)0x00009000, (void*)0x00008000);
82 uart_writestr("done\n");
84 uart_writestr("Auto calibrating... ");
85 res
= gram_generate_calibration(&ctx
, &profile
);
86 if (res
!= GRAM_ERR_NONE
) {
87 uart_writestr("failed\n");
90 gram_load_calibration(&ctx
, &profile
);
91 uart_writestr("done\n");
93 uart_writestr("Auto calibration profile:");
94 uart_writestr("p0 rdly:");
95 uart_writeuint32(profile
.rdly_p0
);
96 uart_writestr(" p1 rdly:");
97 uart_writeuint32(profile
.rdly_p1
);
100 uart_writestr("DRAM test... \n");
101 volatile uint32_t *ram
= 0x10000000;
102 for (size_t i
= 0; i
< kNumIterations
; i
++) {
103 ram
[i
] = 0xDEAF0000 | i
*4;
106 for (size_t i
= 0; i
< kNumIterations
; i
++) {
107 if (ram
[i
] != (0xDEAF0000 | i
*4)) {
108 uart_writestr("fail : *(0x");
109 uart_writeuint32(&ram
[i
]);
110 uart_writestr(") = ");
111 uart_writeuint32(ram
[i
]);
116 uart_writestr("Test canceled (more than 10 errors)\n");
121 uart_writestr("done\n");