桂林电子科技大学大三操作系统课设(project0)
1.project0 目的:熟悉GeekOS的项目编译、调试和运行环境,掌握GeekOS运行工作过程。
2.要求:熟悉键盘操作函数,编程实现一个内核进程。该进程的功能是:接收键盘输入的字符并显示到屏幕上,当输入ctrl+d时,结束进程的运行。
3.环境:linux环境+boch
4.操作步骤:
(1).编写main函数
(2)在main()函数前添加 void project0()函数的定义(3)在main()函数下添加project0()函数
void project0()
{
Print("To Exit hit Ctrl + d.\n");
Keycode keycode;
while(1)
{
if( Read_Key(&keycode) ) //读取键盘按键状态
{
if(!( (keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)) )
//只处理非特殊按键的按下事件
{
//低8位为Ascii码,KEY_CTRL_FLAG 0x4000 0x4064 & 0xff = 0x0064
if( (keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d')
//按下Ctrl键
{
Print("\n---------BYE!--------\n");
Exit(1);
}
else
{
Print("%c",(asciiCode=='\r') ? '\n' : asciiCode);
}
}
}
}
}
(4)在main()中添加线程
struct Kernel_Thread *thread;
thread=Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false);
(5)还要配置一下环境,差不多要完成了,首先,把include文件夹下面的sigment.h的定义下的变量修改一下见图:
切记,baseHigh一定要加上 “:8”大小值
(6)最后配置一下.bochs 这里的bochs指的是build文件夹下的,而不是和main()函数同一目录下的,把环境配成如下代码:
megs: 8
boot: a
floppya: 1_44=fd.img, status=inserted
(6)运行结果:
首先编译一下文件,生成镜像
用make命令,生成fd.img命令
接着是运行用bochs命令运行:
运行结果: