OBJS = startup.o main.o interrupt.o
OBJS += lib.o serial.o timer.o
-OBJS += led.o
-OBJS += re.o
-OBJS += sw.o
-OBJS += lcd.o
-OBJS += remocon.o
+OBJS += led.o lcd.o
+OBJS += re.o sw.o
OBJS += mmc.o pff.o
OBJS += vs1011e.o
-# sources of kozos
-OBJS += kozos.o syscall.o memory.o command.o clock.o
-OBJS += consdrv.o
-OBJS += timerdrv.o
-OBJS += lcddrv.o
-OBJS += audiodrv.o
-OBJS += leddrv.o
+# Tasks
+OBJS += task_ir.o
+OBJS += task_userinput.o
+OBJS += task_command.o
+
+# Kernel
+OBJS += kozos.o syscall.o memory.o
+
+# Drivers
+OBJS += driver_console.o
+OBJS += driver_timer.o
+OBJS += driver_lcd.o
+OBJS += driver_led.o
+OBJS += driver_audio.o
TARGET = kozos
--- /dev/null
+#ifndef DRIVER_H
+#define DRIVER_H
+
+#include "driver_audio.h"
+#include "driver_console.h"
+#include "driver_lcd.h"
+#include "driver_led.h"
+#include "driver_timer.h"
+
+#endif
+
+++ /dev/null
-#ifndef _CONSDRV_H_INCLUDED_
-#define _CONSDRV_H_INCLUDED_
-
-#define CONSDRV_DEVICE_NUM 1
-
-void consdrv_use(int index);
-void consdrv_write(char *str);
-
-#endif
-#include "audiodrv.h"
+#include "driver_audio.h"
#include "vs1011e.h"
#include "kozos.h"
-#include "consdrv.h"
#define AUDIODRV_CMD_PULSE 'p'
-void audiodrv_pulse(void)
+void audio_pulse(void)
{
char *p;
p = kz_kmalloc(1);
return 0;
}
-int audiodrv_main(int argc, char *argv[])
+int driver_audio(int argc, char *argv[])
{
int size;
char *p;
#ifndef _AUDIODRV_H_INCLUDED_
#define _AUDIODRV_H_INCLUDED_
-void audiodrv_pulse(void);
+void audio_pulse(void);
+int driver_audio(int argc, char *argv[]);
#endif
#include "interrupt.h"
#include "serial.h"
#include "lib.h"
-#include "consdrv.h"
+#include "driver_console.h"
#define CONS_BUFFER_SIZE 32
} consreg[CONSDRV_DEVICE_NUM];
/* ¥³¥ó¥½¡¼¥ë¡¦¥É¥é¥¤¥Ð¤Î»ÈÍѳ«»Ï¤ò¥³¥ó¥½¡¼¥ë¡¦¥É¥é¥¤¥Ð¤Ë°ÍÍꤹ¤ë */
-void consdrv_use(int index)
+void console_use(int index)
{
char *p;
p = kz_kmalloc(3);
}
/* ¥³¥ó¥½¡¼¥ë¤Ø¤Îʸ»úÎó½ÐÎϤò¥³¥ó¥½¡¼¥ë¡¦¥É¥é¥¤¥Ð¤Ë°ÍÍꤹ¤ë */
-void consdrv_write(char *str)
+void console_write(char *str)
{
char *p;
int len;
return 0;
}
-int consdrv_main(int argc, char *argv[])
+int driver_console(int argc, char *argv[])
{
int size, index;
kz_thread_id_t id;
--- /dev/null
+#ifndef _CONSDRV_H_INCLUDED_
+#define _CONSDRV_H_INCLUDED_
+
+#define CONSDRV_DEVICE_NUM 1
+
+void console_use(int index);
+void console_write(char *str);
+
+int driver_console(int argc, char *argv[]);
+
+#endif
-#include "lcddrv.h"
+#include "driver_lcd.h"
#include "lcd.h"
#include "kozos.h"
#include "lib.h"
return 0;
}
-int lcddrv_main(int argc, char *argv[])
+int driver_lcd(int argc, char *argv[])
{
int size;
char *p;
void lcddrv_draw_logo(int x, int y, int size);
void lcddrv_draw_text(int x, int y, char *str);
+int driver_lcd(int argc, char *argv[]);
+
#endif
-#include "leddrv.h"
+#include "driver_led.h"
#include "led.h"
#include "kozos.h"
return 0;
}
-int leddrv_main(int argc, char *argv[])
+int driver_led(int argc, char *argv[])
{
int size;
char *p;
void leddrv_write(int target, int state);
void leddrv_toggle(int target);
+int driver_led(int argc, char *argv[]);
+
#endif
#include "interrupt.h"
#include "timer.h"
#include "lib.h"
-#include "timerdrv.h"
+#include "driver_timer.h"
#define TIMERDRV_CMD_EXPIRE 'e' /* ¥¿¥¤¥ÞËþλ */
#define TIMERDRV_CMD_START 's' /* ¥¿¥¤¥Þ¤Î¥¹¥¿¡¼¥È */
return 0;
}
-int timerdrv_main(int argc, char *argv[])
+int driver_timer(int argc, char *argv[])
{
int cmd;
char *p;
int msec;
};
+int driver_timer(int argc, char *argv[]);
+
#endif
#include "defines.h"
#include "interrupt.h"
#include "syscall.h"
+#include "driver.h"
+#include "task.h"
/* ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë */
kz_thread_id_t kz_run(kz_func_t func, char *name, int priority, int stacksize,
void kz_syscall(kz_syscall_type_t type, kz_syscall_param_t *param);
void kz_srvcall(kz_syscall_type_t type, kz_syscall_param_t *param);
-/* ¥·¥¹¥Æ¥à¡¦¥¿¥¹¥¯ */
-int consdrv_main(int argc, char *argv[]);
-int timerdrv_main(int argc, char *argv[]);
-int leddrv_main(int argc, char *argv[]);
-int lcddrv_main(int argc, char *argv[]);
-int audiodrv_main(int argc, char *argv[]);
-
-/* ¥æ¡¼¥¶¡¦¥¿¥¹¥¯ */
-int command_main(int argc, char *argv[]);
-int clock_main(int argc, char *argv[]);
-int remocon_main(int argc, char *argv[]);
-
#endif
/* ¥·¥¹¥Æ¥à¡¦¥¿¥¹¥¯¤È¥æ¡¼¥¶¡¦¥¿¥¹¥¯¤Îµ¯Æ° */
static int start_threads(int argc, char *argv[])
{
- kz_run(consdrv_main, "consdrv", 1, 0x200, 0, NULL);
- kz_run(timerdrv_main, "timerdrv", 2, 0x200, 0, NULL);
- kz_run(leddrv_main, "leddrv", 7, 0x200, 0, NULL);
- kz_run(command_main, "command", 8, 0x200, 0, NULL);
- kz_run(lcddrv_main, "lcddrv", 9, 0x200, 0, NULL);
- kz_run(audiodrv_main, "audiodrv", 10, 0x200, 0, NULL);
- kz_run(clock_main, "clock", 11, 0x200, 0, NULL);
- kz_run(remocon_main, "remocon", 12, 0x200, 0, NULL);
+ kz_run(driver_console, "dConsole", 1, 0x200, 0, NULL);
+ kz_run(driver_timer, "dTimer", 2, 0x200, 0, NULL);
+ kz_run(driver_led, "dLed", 7, 0x200, 0, NULL);
+ kz_run(task_command, "tCommand", 8, 0x200, 0, NULL);
+ kz_run(driver_lcd, "dLcd", 9, 0x200, 0, NULL);
+ kz_run(driver_audio, "dAudio", 10, 0x200, 0, NULL);
+ kz_run(task_userinput, "tUserinput", 11, 0x200, 0, NULL);
+ kz_run(task_ir, "tIr", 12, 0x200, 0, NULL);
kz_chpri(15); /* Í¥Àè½ç°Ì¤ò²¼¤²¤Æ¡¤¥¢¥¤¥É¥ë¥¹¥ì¥Ã¥É¤Ë°Ü¹Ô¤¹¤ë */
INTR_ENABLE; /* ³ä¹þ¤ß͸ú¤Ë¤¹¤ë */
+++ /dev/null
-
-#ifndef _REMOCON_H_
-#define _REMOCON_H_
-void remocon_init(void);
-#endif
--- /dev/null
+#ifndef TASK_H
+#define TASK_H
+
+#include "task_userinput.h"
+#include "task_ir.h"
+#include "task_command.h"
+
+#endif
#include "defines.h"
#include "kozos.h"
-#include "consdrv.h"
-#include "leddrv.h"
+#include "driver_console.h"
+#include "driver_led.h"
#include "lib.h"
-int command_main(int argc, char *argv[])
+int task_command(int argc, char *argv[])
{
char *p;
int size;
- consdrv_use(SERIAL_DEFAULT_DEVICE);
+ console_use(SERIAL_DEFAULT_DEVICE);
while (1) {
- consdrv_write("command> "); /* ¥×¥í¥ó¥×¥Èɽ¼¨ */
+ console_write("command> "); /* ¥×¥í¥ó¥×¥Èɽ¼¨ */
/* ¥³¥ó¥½¡¼¥ë¤«¤é¤Î¼õ¿®Ê¸»úÎó¤ò¼õ¤±¼è¤ë */
kz_recv(MSGBOX_ID_CONSINPUT, &size, &p);
if (p == NULL) {
- consdrv_write("expired.\n");
+ console_write("expired.\n");
continue;
}
p[size] = '\0';
if (!strncmp(p, "echo", 4)) { /* echo¥³¥Þ¥ó¥É */
- consdrv_write(p + 4); /* echo¤Ë³¤¯Ê¸»úÎó¤ò½ÐÎϤ¹¤ë */
- consdrv_write("\n");
+ console_write(p + 4); /* echo¤Ë³¤¯Ê¸»úÎó¤ò½ÐÎϤ¹¤ë */
+ console_write("\n");
} else if (!strncmp(p, "led1", 4)) {
leddrv_toggle(0);
} else if (!strncmp(p, "led2", 4)) {
} else if (!strncmp(p, "ledr", 4)) {
leddrv_toggle(3);
} else {
- consdrv_write("unknown.\n");
+ console_write("unknown.\n");
}
kz_kmfree(p);
--- /dev/null
+
+#ifndef _TASK_COMMAND_H_
+#define _TASK_COMMAND_H_
+int task_command(int argc, char *argv[]);
+#endif
-#include "remocon.h"
+#include "task_ir.h"
#include "defines.h"
#include "kozos.h"
#include "intr.h"
#include "led.h"
#include "lib.h"
-#include "consdrv.h"
-#include "audiodrv.h"
+#include "driver_console.h"
+#include "driver_audio.h"
#define H8_3069F_ISCR ((volatile uint8 *)0xFEE014)
#define H8_3069F_IER ((volatile uint8 *)0xFEE015)
*H8_3069F_TSTR &= ~(1 << 0);
}
-int remocon_main(int argc, char *argv[])
+int task_ir(int argc, char *argv[])
{
kz_setintr(SOFTVEC_TYPE_IR_EDGE, remocon_intr_edge);
kz_setintr(SOFTVEC_TYPE_IR_TOVF, remocon_intr_tovf);
int i;
for (i = 0; i < bitcnt; i++) {
if (data[i / 8] & (1 << (i % 8))) {
- consdrv_write("1");
+ console_write("1");
} else {
- consdrv_write("0");
+ console_write("0");
}
}
- consdrv_write("\n");
- audiodrv_pulse();
+ console_write("\n");
+ audio_pulse();
}
bitcnt = 0;
tmrovf = 0;
--- /dev/null
+
+#ifndef _TASK_IR_H_
+#define _TASK_IR_H_
+int task_ir(int argc, char *argv[]);
+#endif
#include "defines.h"
#include "kozos.h"
-#include "timerdrv.h"
-#include "leddrv.h"
-#include "lcddrv.h"
+#include "driver_timer.h"
+#include "driver_led.h"
+#include "driver_lcd.h"
#include "lib.h"
#include "sw.h"
#include "re.h"
-int clock_main(int argc, char *argv[])
+int task_userinput(int argc, char *argv[])
{
int nx = 40, ny = 12;
re_init();
--- /dev/null
+
+#ifndef _TASK_USERINPUT_H_
+#define _TASK_USERINPUT_H_
+int task_userinput(int argc, char *argv[]);
+#endif