seL4 Level-1 Tutorials
Summary
Getting started with seL4 development can be a bit of a challenging task for newcomers. These exercises aim to ease the procedure and make it accessible to anyone. The exercises were originally developed for the seL4 2020 Summit to work directly using the seL4 Foundation repositories, but have been updated since to work within the CoE seL4 repository framework and version control. This page also serves as a guide to using this repository.
Objectives
- Learn how to use CoE seL4 repository and distros.
- Learn how to start an empty project.
- Build projects and run them through simulation.
- Create and manage capabilities in seL4.
- Manage memory and allocation in seL4.
- Create and manage threads and processes.
- Learn interprocess communication (IPC).
- Manage and use I/O devices.
- Create an I/O driver.
- Use all the knowledge to build a game of pong.
Requirements
- seL4-ready machine. Can be set up using environment guide.
- CoE seL4 version 1.0 and tutorials files. Both can be downloaded from here.
Exercises
Exercise | Title | Description |
Exercise-0 | Environment Configuration | Download tutorial files and configure them in the development machine. |
Exercise-1 | Hello World! | Learn about cmake, ninja, and the build environment. |
Exercise-2 | Capabilities | Initialize and manage seL4 capabilities. |
Exercise-3 | Allocation | Set up allocation objects and use them. |
Exercise-4 | Basic Threads | Initialize a basic thread without IPCBuffer. |
Exercise-5 | Processes | Initialize a process from an ELF binary. |
Exercise-6 | IPC | Interprocess Communication and IPCBuffers in seL4. |
Exercise-7 | I/O Timer | Initialize and use a timer using the seL4 I/O interface. |
Exercise-8 | I/O Keyboard | Initialize keyboard and override default keyboard driver implementation. |
Exercise-9 | I/O Display | Initialize display drivers using VGA std (also available for ARM using framebuffers!). |
Exercise-10 | Game of Pong! | Put everything learned from exercises 0-9 together to make an interactive game of pong. |