diff --git a/bsp/x86/Makefile b/bsp/x86/Makefile index 7719a12b7d36e8daf77b889ddc73022470f273da..1befec1368a49633ae44350e1e1ad447c21f3ec7 100644 --- a/bsp/x86/Makefile +++ b/bsp/x86/Makefile @@ -14,4 +14,4 @@ floppy.img: wget https://github.com/bajdcc/tinix/raw/master/floppy.img run: - qemu-system-i386 -fda floppy.img -boot a -m 64M + qemu-system-i386 -fda floppy.img -boot a -m 64M -serial stdio diff --git a/bsp/x86/drivers/console.c b/bsp/x86/drivers/console.c index a73838ff4c1c4000f0cbb740102bdd097a59d871..6ffe9a7994ae232744638c2f565517601d6968b8 100644 --- a/bsp/x86/drivers/console.c +++ b/bsp/x86/drivers/console.c @@ -25,6 +25,10 @@ extern void init_keyboard(); extern void rt_keyboard_isr(void); extern rt_bool_t rt_keyboard_getc(char* c); +extern void rt_serial_init(void); +extern char rt_serial_getc(void); +extern void rt_serial_putc(const char c); + static void rt_console_putc(int c); /** @@ -126,7 +130,7 @@ static void rt_cga_putc(int c) static void rt_console_putc(int c) { rt_cga_putc(c); -// rt_serial_putc(c); + rt_serial_putc(c); } /* RT-Thread Device Interface */ @@ -217,9 +221,18 @@ static void rt_console_isr(int vector, void* param) rt_bool_t ret; rt_base_t level; - rt_keyboard_isr(); + if(INTUART0_RX == vector) + { + c = rt_serial_getc(); + ret = RT_TRUE; + } + else + { + rt_keyboard_isr(); + + ret = rt_keyboard_getc(&c); + } - ret = rt_keyboard_getc(&c); if(ret == RT_FALSE) { /* do nothing */ @@ -275,12 +288,16 @@ static void rt_console_isr(int vector, void* param) void rt_hw_console_init(void) { rt_cga_init(); + rt_serial_init(); init_keyboard(); /* install keyboard isr */ rt_hw_interrupt_install(INTKEYBOARD, rt_console_isr, RT_NULL, "kbd"); rt_hw_interrupt_umask(INTKEYBOARD); + rt_hw_interrupt_install(INTUART0_RX, rt_console_isr, RT_NULL, "COM1"); + rt_hw_interrupt_umask(INTUART0_RX); + console_device.type = RT_Device_Class_Char; console_device.rx_indicate = RT_NULL; console_device.tx_complete = RT_NULL; diff --git a/bsp/x86/drivers/serial.c b/bsp/x86/drivers/serial.c index e2796aa063d9361b2372ad756881052032d9aa66..51b7a0d96df1cf13301406dd393c85c8e532dcf6 100644 --- a/bsp/x86/drivers/serial.c +++ b/bsp/x86/drivers/serial.c @@ -17,7 +17,6 @@ #include #include -extern char rt_keyboard_getc(void); /** * @addtogroup QEMU @@ -45,13 +44,11 @@ void rt_serial_init(void) */ char rt_serial_getc(void) { - return rt_keyboard_getc(); -#if 0 while(!(inb(COM1+COMSTATUS) & COMDATA)); return inb(COM1+COMREAD); -#endif + } /**