Giter Site home page Giter Site logo

0405oslab's Introduction

#NJU 2016 oslab1(1/3) 这是除了jos和nanos之外的第三个可选框架,主体为nanos,同时移植了jos一些容易理解的辅助工具。当然,我们更希望你能够不限于框架,用代码秀我们一脸。组合了多个框架,因此注释中英混搭,见谅。工程里包含了大家用得到但又与课程教学不太相关的内容,很多东西框架都帮你做好了,现在你有两个选择:要么花时间理解框架代码然后加以应用,要么脱离框架内容自己实现。因为框架帮你做好了挺多事情,所以框架目前看起来略臃肿(别去跟老师报怨框架难懂!!!有框架总比没有好对吧),有PA的基础其实上手已经不怎么困难了,请自行努力。

##这个框架有什么 框架里提供了各个阶段你需要码的代码的范例,看完代码相信你会对整个工程有初步的认识。我们提供框架的目的是为了避免大家一脸懵逼不知道要写什么,从哪里写。需要注意的一点是:你最好不要局限于这个框架的内容,这样你能学到更多。我们非常希望你能够在框架的启发下自行设计,既然提供了框架,你当然也可以安逸地用起来。我们提供了从引导初始化到设备、显示、中断的启发式代码段,你所有需要完成的工作都能够参考这个框架的某一个部分加以理解,哪个部分?~~我们不想再送了。~~有一点需要注意的是我们提供的解决方案不是唯一必须的,有可能框架的方案比实际需要会复杂很多,有些东西用不用全靠你选择,如果你觉得太复杂了,可以推倒自行完成。

###阶段

  • boot需要你完成in out内联汇编
  • 完成loader后运行你会看到蓝屏,其实框架提供的游戏就是蓝屏(╯‵□′)╯︵┻━┻
  • 完成串口输出,通过调用串口输出函数你可以在控制台看到输出
  • 为了方便调试,请尽快完成printk,这样你就能使用框架提供的assert等宏帮助你调试了,未完成时会通过hlt指令强行关闭
  • VGA模式的显存映射框架已经简单完成(开机蓝屏),为了完成复杂的输出功能,你需要自行封装需要的函数
  • 时钟中断和8259的初始化需要自行完成
  • 框架提供了中断处理的框架,自行在理解的基础上添加键盘中断的处理
  • 虽然游戏不是关键,但请至少弄个小游戏检验一下你的键盘和显示

###免责声明 已经尽量在需要填充代码的地方加上了hlt指令,可能会有遗漏。如果有的话请相互转告。 也许框架加了些你用不到的东西? clone下来后一定不要忘了把README删掉!

###bug修复 有些同学clone代码后boot/genboot.pl权限发生了改变,为此稍微修改了一下Makefile,使得脚本能够在没有x权限的情况下运行。 你也可以自行添加可执行权限

##代码框架:

.
├── boot#引导代码
│   ├── asm.h
│   ├── boot.h
│   ├── genboot.pl
│   ├── main.c
│   └── start.S
├── include#有很多有用的宏
│   ├── assert.h
│   ├── kbdreg.h
│   ├── keyboard.h
│   ├── mmu.h
│   ├── stdarg.h
│   ├── stdio.h
│   ├── string.h
│   ├── timer.h
│   ├── types.h
│   ├── video.h
│   └── x86.h
├── kernel#内核(游戏)
│   ├── assert.c
│   ├── device#设备的代码
│   │   ├── serial.c
│   │   ├── timer.c
│   │   └── video.c
│   ├── game#游戏
│   │   └── game.c
│   ├── irq#中断
│   │   ├── do_irq.S
│   │   ├── i8259.c
│   │   ├── idt.c
│   │   └── irq_handle.c
│   ├── kernel.ld
│   └── printk.c
├── lib#有用的库
│   ├── printfmt.c
│   └── string.c
├── Makefile
├── mbr.rb#ruby脚本,你可以修改makefile试试看
├── README.md
└── tags

7 directories, 33 files
框架参考:jos by MIT, nanos by JYY, some code by Wonicon and shinezyy.

by coolshan008

0405oslab's People

Contributors

coolshan008 avatar

Watchers

James Cloos avatar Wang Yue avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.