5 #define H8_3069F_ABWCR ((volatile uint8 *)0xfee020)
6 #define H8_3069F_ASTCR ((volatile uint8 *)0xfee021)
7 #define H8_3069F_RTCOR ((volatile uint8 *)0xfee02a)
8 #define H8_3069F_RTMCSR ((volatile uint8 *)0xfee028)
9 #define H8_3069F_DRCRB ((volatile uint8 *)0xfee027)
10 #define H8_3069F_DRCRA ((volatile uint8 *)0xfee026)
12 #define H8_3069F_P1DDR ((volatile uint8 *)0xfee000)
13 #define H8_3069F_P2DDR ((volatile uint8 *)0xfee001)
14 #define H8_3069F_P8DDR ((volatile uint8 *)0xfee007)
15 #define H8_3069F_PBDDR ((volatile uint8 *)0xfee00a)
17 #define H8_3069F_WCRH ((volatile uint8 *)0xfee022)
18 #define H8_3069F_WCRL ((volatile uint8 *)0xfee023)
22 volatile uint8 val8[4];
23 volatile uint16 val16[2];
24 volatile uint32 val32[1];
31 * dram_check2()¤Ç¥Á¥§¥Ã¥¯¤·¤¿¤é¡¤Ãͤò¤¦¤Þ¤¯ÊÝ»ý¤Ç¤¤Ê¤¤¥Ó¥Ã¥È¤¬Â¸ºß¤·¤¿
32 * ¤Î¤Ç¡¤¥ê¥Õ¥ì¥Ã¥·¥å¥ì¡¼¥È¤ò¾å¤²¤¿¤é²ò¾Ã¤µ¤ì¤¿¡¥(¥¦¥¨¥¤¥È¤ò¿¤á¤Ë¤·¤Æ¤â
34 * ¤È¤ê¤¢¤¨¤º¡¤¥ê¥Õ¥ì¥Ã¥·¥å¥ì¡¼¥È¹â¤á¤ÎÀßÄê¤Ë¤·¤Æ¤ª¤¯¡¥
37 *H8_3069F_ABWCR = 0xff;
39 *H8_3069F_RTCOR = 0x07;
41 *H8_3069F_RTCOR = 0x03; /* ¥ê¥Õ¥ì¥Ã¥·¥å¼þ´ü¤òû¤á¤ËÀßÄê */
44 *H8_3069F_RTMCSR = 0x37;
46 *H8_3069F_RTMCSR = 0x2f; /* ¥ê¥Õ¥ì¥Ã¥·¥å¼þÇÈ¿ôUP */
49 *H8_3069F_DRCRB = 0x98;
51 *H8_3069F_DRCRB = 0x9f; /* ¥¦¥¨¥¤¥ÈÁÞÆþ */
53 *H8_3069F_DRCRA = 0x30;
55 *H8_3069F_P1DDR = 0xff;
56 *H8_3069F_P2DDR = 0x07;
57 *H8_3069F_P8DDR = 0xe4;
58 /* *H8_3069F_PBDDR = ...; */
60 /* H8_3069F_WCRH = ...; */
62 *H8_3069F_WCRL = 0xcf;
64 *H8_3069F_WCRL = 0xff; /* ¥¦¥¨¥¤¥ÈÁÞÆþ */
68 *H8_3069F_ASTCR = 0xfb; /* 2¥¹¥Æ¡¼¥È¥¢¥¯¥»¥¹ */
70 *H8_3069F_ASTCR = 0xff; /* 3¥¹¥Æ¡¼¥È¥¢¥¯¥»¥¹ */
76 static int check_val(volatile val_t *p, volatile val_t *wval)
80 p->u.val8[0] = wval->u.val8[0]; p->u.val8[1] = wval->u.val8[1];
81 p->u.val8[2] = wval->u.val8[2]; p->u.val8[3] = wval->u.val8[3];
82 rval.u.val8[0] = p->u.val8[0]; rval.u.val8[1] = p->u.val8[1];
83 rval.u.val8[2] = p->u.val8[2]; rval.u.val8[3] = p->u.val8[3];
85 if (rval.u.val32[0] != wval->u.val32[0])
88 p->u.val16[0] = wval->u.val16[0]; p->u.val16[1] = wval->u.val16[1];
89 rval.u.val16[0] = p->u.val16[0]; rval.u.val16[1] = p->u.val16[1];
91 if (rval.u.val32[0] != wval->u.val32[0])
94 p->u.val32[0] = wval->u.val32[0];
95 rval.u.val32[0] = p->u.val32[0];
97 if (rval.u.val32[0] != wval->u.val32[0])
109 puts("DRAM checking...\n");
111 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++) {
112 putxval((unsigned long)p, 8);
115 val.u.val32[0] = (uint32)p;
116 if (check_val((val_t *)p, &val) < 0)
120 if (check_val((val_t *)p, &val) < 0)
123 val.u.val32[0] = 0xffffffffUL;
124 if (check_val((val_t *)p, &val) < 0)
127 puts("\x08\x08\x08\x08\x08\x08\x08\x08");
129 puts("\nall check OK.\n");
134 putxval((unsigned long)*p, 8);
139 static uint32 dram_check2_val0(uint32 *addr) { return 0x55555555UL; }
140 static uint32 dram_check2_val1(uint32 *addr) { return 0xaaaaaaaaUL; }
141 static uint32 dram_check2_val2(uint32 *addr) { return 0x00000000UL; }
142 static uint32 dram_check2_val3(uint32 *addr) { return 0xffffffffUL; }
143 static uint32 dram_check2_val4(uint32 *addr) { return (uint32)addr; }
144 static uint32 dram_check2_val5(uint32 *addr) { return ~(uint32)addr; }
150 uint32 (*getval[])(uint32 *) = {
160 for (i = 0; getval[i]; i++) {
162 puts("DRAM check pattern: ");
165 puts("\nDRAM setting...\n");
167 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++) {
169 if (!((uint32)p & 0xfff)) {
170 putxval((unsigned long)p, 8);
171 puts("\x08\x08\x08\x08\x08\x08\x08\x08");
175 puts("\nDRAM checking...\n");
177 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++) {
178 if (*p != getval[i](p)) {
180 putxval((unsigned long)p, 8);
182 putxval((unsigned long)*p, 8);
186 if (!((uint32)p & 0xfff)) {
187 putxval((unsigned long)p, 8);
188 puts("\x08\x08\x08\x08\x08\x08\x08\x08");
197 puts("\nall check OK.\n");
207 puts("DRAM clearing...\n");
209 for (p = (uint32 *)DRAM_START; p < (uint32 *)DRAM_END; p++)
212 puts("DRAM cleared.\n");