Smart Object Oriented (SO3) Operating System
SO3 is a compact, lightweight, full-featured and extensible operating system, particularly well suited to embedded systems. From a single code base it can be built in three ways:
as a standalone OS running directly on the hardware (EL1 on ARM64);
as the AVZ hypervisor (Agency VirtualiZer) running at EL2 and hosting a guest agency domain;
as an SO3 capsule (S3C) — a lightweight guest running on top of AVZ beside a Linux agency, as part of the SOO framework.
Fig. 1 The same SO3 code base deployed in its three modes.
This documentation reflects the current state of the code base: ARM 32/64-bit, multicore, the AVZ hypervisor and SO3 capsules are all supported.
Where to start
- Introduction
Philosophy, history and the polymorphic nature of SO3.
- Architecture · Kernel internals
The user/kernel split, the boot flow, and how the kernel subsystems work.
- AVZ hypervisor · SO3 capsules
Virtualization at EL2 and the SOO capsule framework.
- Build system · User guide
How the tree is built, configured and packaged, and a step-by-step setup.
- User space · Debugging
The MUSL-based user land, and how to debug SO3 under QEMU/GDB or JTAG.
Development flow
The main branch contains the last released version.
Important
Do not push directly to main. Each development leads to an issue with its
own branch; open a merge/pull request as soon as it is stable enough for
review.
If you want to contribute, please first contact the maintainer.
Discussion forum
A dedicated discussion forum is available for all questions, remarks and suggestions related to SO3.
We would like to thank our sponsors for their generous support in funding the development of the SO3 ecosystem, especially HEIG-VD and the Hasler Foundation.