This course aims to introduce the design and implementation of the operating system kernel. You'll learn both concept and implementation from a series of labs.
This course uses Raspberry Pi 3 Model B+ (rpi3 for short) as a hardware platform. Students can get their hands dirty on a Real Machine instead of an emulator.
There are 8 + 1 labs in this course. You'll learn the concept of design of kernel by implementing it yourself.
The main point of these labs is the design principle not programming languages. Hence, you are free to choose any programming languages such as ASM/C/C++/Rust. However, there are a lot of things which are language dependent and even compiler dependent. You need to manage them yourself.
We use aarch64-linux-gnu-
toolchain and C to develop.
If you choose other toolchain or programming languages, we might not help you.
There are 3 types of labels appear in each lab.
required |
You're required to implement it by the description, they take up major of your scores. |
elective |
You can implement some of them to get bonus. |
question |
During the demo, you need to answer the question correctly to get full score. |
.. toctree:: :caption: Labs :hidden: labs/lab0 labs/lab1 labs/lab2 labs/lab3 labs/lab4 labs/lab5 labs/lab6 labs/lab7 labs/lab8
Students who register this course will get a rpi3, a 5.1V 2.5A power supply, a USB-TTL cable, a micro SD card, and an SD card reader.
We don't expect every student to have experience in embedded system or microcontroller. So, the hardware information needed by labs will be provided. You can check them when you need them.
We're not kernel developers or experienced embedded developers. It's common we made mistakes in the description. If you find any of them, send an issue to the course github.
Note
This documentation is not well self-contained, you can get more information from external references.
.. toctree:: :caption: Hardware :hidden: hardware/asm hardware/uart hardware/mailbox
.. toctree:: :caption: Miscs :hidden: external_reference/index