Design Principles
System Stability
An embedded application should never crash. The kernel design prevents type conversion issues and has system stability in mind.
Processes
Processes run isolated from each other. A process consists of an allocator and threads. Thus, critical process are protected from unsafe threads.
Stackful Threads
Every thread has its own stack. By default stacks can only be accessed within a process. Stack overflow is prevented. …………………………………… .
Flexibility
The kernel only depends on the CPU core, any/no HAL can be used. All aspects of the kernel can be configured by the user. ………..
Round-Robin Scheduling
High priority tasks preempt lower ones. Tasks with the same priority run at max for one time-slice. ……………………………………………….
Real-Time
Critical Sections are kept as short as possible (atomic operation preffered). Interrupts can run without kernel interation.
Documentation
The documentation is split into API documentation (generated from the code and published on docs.rs) and a user level documentation focused on concepts published as online books.
The online book documentation consists of:
The API documentation consists of:
Software Requirements Specification
The software requirement specification (SRS) defines the features and behavior of the kernel. It lists all functionalities queued for impelementation and tracks their status. It also serves as an overview of the kernel and the direction the development is taking.
MoreSource Code
The kernel, tools and documentation are all open source.
The main repositories are:
- bern-kernel: Platform independent core components
- bern-test: A hardware integration test framework
- Espresso machine example project