b5 is an operating system kernel for embedded targets that I was developing in 2007 – 2009. These days there weren’t many open source projects like that. Nowadays, if I had to use an embedded kernel, I’d probably use one of freely available open source kernels like e.g. FreeRTOS. Nevertheless I’m convinced that designing and implementing a kernel is an excellent exercise and having done so one gets enormously in-depth understanding of operating systems.
- preemptive multitasking with strict task priorities.
- aimed at real-time applications
- no time-sharing (or being able to not use it)
- basic inter-process communication (IPC) primitives: semaphores, message queues, etc
- precise timers support (single-shot and periodic)
- fair portability
What was completed
All requirements are satisfied. Additionally the package comes with:
- a network stack
- embedded debugging and tracing features
Concerning the embedded targets, I made it for AVRs (100% complete implementation) and dsPICs (almost complete).
Where was it used
I’ve been interested in real-time control systems for flying things (multi-copters and fixed-wing) since long time. I’ve used the b5 kernel for building real-time software for a number of on-board plane computers and also for base stations for controlling planes (The Base project).