16 /* °Ê²¼¤Ï¥ê¥ó¥«¡¦¥¹¥¯¥ê¥×¥È¤ÇÄêµÁ¤·¤Æ¤¢¤ë¥·¥ó¥Ü¥ë */
17 extern int erodata, data_start, edata, bss_start, ebss;
20 * ¥Ç¡¼¥¿Îΰè¤ÈBSSÎΰè¤ò½é´ü²½¤¹¤ë¡¥¤³¤Î½èÍý°Ê¹ß¤Ç¤Ê¤¤¤È¡¤
21 * ¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤¬½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤ÇÃí°Õ¡¥
23 memcpy(&data_start, &erodata, (long)&edata - (long)&data_start);
24 memset(&bss_start, 0, (long)&ebss - (long)&bss_start);
26 /* ¥½¥Õ¥È¥¦¥¨¥¢¡¦³ä¤ê¹þ¤ß¥Ù¥¯¥¿¤ò½é´ü²½¤¹¤ë */
29 /* ¥·¥ê¥¢¥ë¤Î½é´ü²½ */
30 serial_init(SERIAL_DEFAULT_DEVICE);
38 /* ¥í¡¼¥¿¥ê¡¼¥¨¥ó¥³¡¼¥À¡¼¤Î½é´ü²½ */
41 /* ¥¹¥¤¥Ã¥Á¤Î½é´ü²½ */
52 puts("die with code 0x");
60 static unsigned char *loadbuf = NULL;
63 extern int buffer_start; /* ¥ê¥ó¥«¡¦¥¹¥¯¥ê¥×¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡ */
65 INTR_DISABLE; /* ³ä¹þ¤ß̵¸ú¤Ë¤¹¤ë */
76 lcd_draw_box(0, 0, 121, 31, 0);
77 lcd_draw_string(2, 2, "KOZOS EXPBRD #00", 0);
78 lcd_draw_string(2, 10, "Booting...", 0);
79 led_write(Led1, LedOff);
80 led_write(Led2, LedOff);
81 led_write(LedG, LedOn);
82 led_write(LedR, LedOff);
84 rc = pf_mount(&fatfs);
86 lcd_draw_string(2, 10, "SD mount failed.", 0);
87 led_write(LedG, LedOff);
88 led_write(LedR, LedOn);
93 * SD¥«¡¼¥É¾å¤ÎOS¥¤¥á¡¼¥¸¤ò¥á¥â¥ê¾å¤ËÆɤ߹þ¤ß¡£
95 puts("\n\nOpen kozos boot image.\n");
96 rc = pf_open("kozos");
98 lcd_draw_string(2, 10, "No boot image.", 0);
99 led_write(LedG, LedOff);
100 led_write(LedR, LedOn);
104 puts("Reading...\n");
105 loadbuf = (char *)(&buffer_start);
107 rc = pf_read(buff, sizeof(buff), &br);
111 for (i = 0; i < br; i++) {
118 lcd_draw_string(2, 10, "File read error.", 0);
119 led_write(LedG, LedOff);
120 led_write(LedR, LedOn);
123 led_write(Led1, LedOff);
124 led_write(Led2, LedOff);
127 * ¥á¥â¥ê¾å¤ËŸ³«(¥í¡¼¥É)
129 puts("Extracting...\n");
130 loadbuf = (char *)(&buffer_start);
131 entry_point = elf_load(loadbuf);
136 puts("Running...\n");
139 lcd_draw_string(2, 10, "Run error.", 0);
140 led_write(LedG, LedOff);
141 led_write(LedR, LedOn);
144 led_write(Led1, LedOff);
145 led_write(Led2, LedOff);
146 led_write(LedG, LedOff);
147 led_write(LedR, LedOff);
148 f = (void (*)(void))entry_point;