18 /* °Ê²¼¤Ï¥ê¥ó¥«¡¦¥¹¥¯¥ê¥×¥È¤ÇÄêµÁ¤·¤Æ¤¢¤ë¥·¥ó¥Ü¥ë */
19 extern int erodata, data_start, edata, bss_start, ebss;
22 * ¥Ç¡¼¥¿Îΰè¤ÈBSSÎΰè¤ò½é´ü²½¤¹¤ë¡¥¤³¤Î½èÍý°Ê¹ß¤Ç¤Ê¤¤¤È¡¤
23 * ¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤ÇÃí°Õ¡¥
25 memcpy(&data_start, &erodata, (long)&edata - (long)&data_start);
26 memset(&bss_start, 0, (long)&ebss - (long)&bss_start);
28 /* ¥½¥Õ¥È¥¦¥¨¥¢¡¦³ä¤ê¹þ¤ß¥Ù¥¯¥¿¤ò½é´ü²½¤¹¤ë */
31 /* ¥·¥ê¥¢¥ë¤Î½é´ü²½ */
32 serial_init(SERIAL_DEFAULT_DEVICE);
40 /* ¥í¡¼¥¿¥ê¡¼¥¨¥ó¥³¡¼¥À¡¼¤Î½é´ü²½ */
43 /* ¥¹¥¤¥Ã¥Á¤Î½é´ü²½ */
51 lcd_draw_box(0, 0, 121, 31, 0);
52 lcd_draw_string(2, 2, "KOZOS EXPBRD #00", 0);
57 vs1011e_sinetest_init();
59 vs1011e_play(splash_playfunc);
67 puts("die with code 0x");
75 static unsigned char *loadbuf = NULL;
78 extern int buffer_start; /* ¥ê¥ó¥«¡¦¥¹¥¯¥ê¥×¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡ */
80 INTR_DISABLE; /* ³ä¹þ¤ß̵¸ú¤Ë¤¹¤ë */
85 * A trap for the debug.
94 lcd_draw_string(2, 10, "Booting...", 0);
95 led_write(Led1, LedOff);
96 led_write(Led2, LedOff);
97 led_write(LedG, LedOn);
98 led_write(LedR, LedOff);
101 * SD¥«¡¼¥É¤ò¥Þ¥¦¥ó¥È¡£
103 rc = pf_mount(&fatfs);
105 lcd_draw_string(2, 10, "SD mount failed.", 0);
106 led_write(LedG, LedOff);
107 led_write(LedR, LedOn);
114 puts("\n\nOpen kozos boot image.\n");
115 rc = pf_open("kozos");
117 lcd_draw_string(2, 10, "No boot image.", 0);
118 led_write(LedG, LedOff);
119 led_write(LedR, LedOn);
124 * SD¥«¡¼¥É¾å¤ÎOS¥¤¥á¡¼¥¸¤ò¥á¥â¥ê¾å¤ËÆɤ߹þ¤ß¡£
126 puts("Reading...\n");
127 loadbuf = (char *)(&buffer_start);
129 rc = pf_read(buff, sizeof(buff), &br);
133 for (i = 0; i < br; i++) {
140 lcd_draw_string(2, 10, "File read error.", 0);
141 led_write(LedG, LedOff);
142 led_write(LedR, LedOn);
145 led_write(Led1, LedOff);
146 led_write(Led2, LedOff);
149 * ¥á¥â¥ê¾å¤ËŸ³«(¥í¡¼¥É)
151 puts("Extracting...\n");
152 loadbuf = (char *)(&buffer_start);
153 entry_point = elf_load(loadbuf);
158 puts("Running...\n");
161 lcd_draw_string(2, 10, "Run error.", 0);
162 led_write(LedG, LedOff);
163 led_write(LedR, LedOn);
166 led_write(Led1, LedOff);
167 led_write(Led2, LedOff);
168 led_write(LedG, LedOff);
169 led_write(LedR, LedOff);
170 f = (void (*)(void))entry_point;