Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
okll00
rt-thread
提交
0cd49a20
R
rt-thread
项目概览
okll00
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0cd49a20
编写于
8月 18, 2017
作者:
P
Parai Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x86: support both keyboard input and serial COM1 input
Signed-off-by:
N
Parai Wang
<
parai@foxmail.com
>
上级
3416187e
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
22 addition
and
8 deletion
+22
-8
bsp/x86/Makefile
bsp/x86/Makefile
+1
-1
bsp/x86/drivers/console.c
bsp/x86/drivers/console.c
+20
-3
bsp/x86/drivers/serial.c
bsp/x86/drivers/serial.c
+1
-4
未找到文件。
bsp/x86/Makefile
浏览文件 @
0cd49a20
...
...
@@ -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
bsp/x86/drivers/console.c
浏览文件 @
0cd49a20
...
...
@@ -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
;
if
(
INTUART0_RX
==
vector
)
{
c
=
rt_serial_getc
();
ret
=
RT_TRUE
;
}
else
{
rt_keyboard_isr
();
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
;
...
...
bsp/x86/drivers/serial.c
浏览文件 @
0cd49a20
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录