Carnegie Mellon
SCS logo
Computer Science Department
home
syllabus
staff
schedule
lecture
projects
homeworks
 
 

15-410 Projects


Project Handouts

Partner Registration

Please sign up using the Partner Registration Page

Important Project-Related Documents

About your 15-410 AFS Space
Here we explain the care and feeding of your 15-410 AFS volume. In the event of trouble, please (re-)read this for advice.
15-410 introduction to git
We expect you to use some revision-control system for Project 2 and Project 3, but of course you may use it earlier! Just remember to read the warnings in the syllabus.
15-410 Software Setup Guide
This is the installation guide for the software we'll be using in this course. It also contains information about some files you will commonly see in the Project tarball (such as the Makefile, update.sh, and simics4). Note that not all of this document is applicable to every assignment.
Simics Command Guide
Our guide to useful Simics commands
Official Simics documentation
Here are various documents about Simics, including both the base simulator and the PC ("x86-440bx") target.
Intel x86 documentation
These three Intel reference guides are extremely comprehensive and actually very well written. Do take the time to look over them, they will be useful in doing each of your projects. These documents are hundreds of pages - do NOT attempt to print them out (at least, not on a campus printer).
  • Intel architecture guide. Explains the basic organization of the processor and fundamental concepts like the execution environment, procedure calls and interrupts, and I/O.

  • Intel instruction set reference. A long volume documenting each x86 instruction.

  • Intel system programming guide. Probably the most interesting of the three documents. Explains privilege levels, segmentation and paging, how to handle interrupts and exceptions, and a host of other things.
Intel x86 specification for multi-processor systems
Intel "MultiProcessor Specification, Version 1.4 (May 1997)"
x86 Segmentation for the 15-410 student
We don't expect you to fully use the massive crushing power possessed by the IA32 memory management hardware, so you may find this Segmentation Handout useful.
Advice on the dreaded "triple fault"
"Triple fault" isn't a problem per se, but a general class of problems. You may wish to consult our Triple-Fault Advice Page.
Coding Style and Documentation
GNU make
We will not require you to build and debug complex makefiles for 15-410, but you are expected to understand the basic concepts and to be able to read a makefile, understand what's going on, and pick out appropriate targets to invoke partial builds. The official documentation for gmake, the flavor of make available on Andrew Linux machines, is available from the Free Software Foundation website.
410 Documentation For The Enthusiast
There is some additional documentation on 410 code and environment for those students who might be described as "enthusiastic."

How to Boot Your Kernels on Real Hardware

The most up-to-date directions are found on the crash-box page.

Beginning with Project 1, you will be loading your kernels into Simics off a floppy disk image.

To boot your project 1 kernel on real hardware, copy your floppy-image file onto a real floppy disk using dd:
dd if=bootfd.img of=/dev/fd0
(on your system, the floppy disk device may be called /dev/fd0, /dev/fd0a, /dev/floppy, /dev/floppy0, etc.).

Important notes:

  1. This process overwrites the entire contents of the floppy with your image file; any files on the floppy will be destroyed.
  2. Before using your floppy the first time you should format it via
    fdformat /dev/fd0

Then, simply reboot your machine with the floppy inserted. Do NOT attempt to boot your kernels on cluster machines.

Software license notice

Some of the library software used in this class is used under license (more info).


[Last modified Friday April 18, 2014]