Code submission for all projects in the class will be handled via GitHub classrooms. Your account on canvas has been connected to github. Each student will automatically have private repositories for the projects.
You must not create any public repositories for storing your code. If you have discovered repositories with CPSC/ECE 3200 solutions, please notify the instructor.
Your code will be tested on School of Computing lab machines. You are recommended to use these lab machines and test your code thoroughly before submission. Please consult the Computer Help Desk page for information on how to access these machine.
You may set up your ssh keys on the lab machines in order to authenticate with GitHub from these machines. If you have already done this steps before, you can skip this secttion.
After log into one lab machine, run the following:
$ ssh-keygen -N "" -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub
Then, log in to GitHub and go to github.com/settings/ssh to add this SSH public key to your GitHub account.
In this course, you will work on several project on top of the XV6 for RISC-V teaching operating system developed at MIT. To work with the RISC-V architecture on a X86 system, you'll need the RISC-V versions of a couple different tools: QEMU, GDB, GCC, and Binutils. Some machines in the lab have the tool-chain already installed. One can check for this by running the command:
which riscv64-unknown-elf-gcc
We have provided a bash script [install-riscv-tools.sh] which is included in the handout subdirectory. Simply run it under your home directory on any lab machine. You should see two generated directories: gnu and qemu. The script also does a simple test on the executables inside these directories.
Attention: make sure you pass the simple tests before you proceed to Task B
To work on the projects in this course effectively, you may need to use several userfule tools that make a good fit for in any system hacker's toolbox.
- Git: to clone the provided source files and submit your solutions through git commit and push
- make: to compile and link and generate executable from Makefile.
- man: to read manuals of commands and library functions.
- vim: an editor for you to change source codes
- gdb: gnu debuger
- ctags: a tool that will sift through your code
If you are unfamiliar with some of these tools, you can find some tutorial online or ask the TAs for help.
This project consists two tasks:
You can find the descriptions and requirements for these two tasks in the TaskA and TaskB folders.
For testing your assignments on local machine use the test cases provided, more information is available inside the test folder.
You can also see the testcases passed on your github repository page. If you go to the actions tab on the repo page, and click on the workflow, you will see the testcases passed.
More information about this will be provided.
To submit your work, do:
cd ~/path/to/your-project-folder git status git add files-you-created-or-modified git commit -m "Finished project1" git push
This will save your work and give the instructor and TAs to see your progress.