提交 0cd49a20 编写于 作者: P Parai Wang

x86: support both keyboard input and serial COM1 input

Signed-off-by: NParai Wang <parai@foxmail.com>
上级 3416187e
......@@ -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
......@@ -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;
......
......@@ -17,7 +17,6 @@
#include <rthw.h>
#include <bsp.h>
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
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册