Future Work

An RTOS consists of many components that interact with each other. Designing each one perfectly from the beginning is impossible. For that reason components are not trimmed to perfection. Instead, the goal was to implement many components so that flaws in the architecture are cough early and time wasted on perfecting one component is reduced. Hence, there are outstanding issues throughout the kernel, especially in the allocation module. Still open for discussion is the API and how to combine dynamically and statically allocated resources. Besides that the earliest components of the kernel are now 1.5 years old and they need refactoring. In summary, the following outstanding issues persist

  1. Kernel: \begin{enumerate}[nosep]

  2. The kernel API does not support static and dynamic allocation consistently.

  3. There are no event flags.

  4. Timeouts on blocking IPC calls are not supported.

  5. A mutex does not prevent priority inversion.

  6. A thread cannot wait for more than one IPC event simultaneously.

  7. The heap allocator fragments the memory quickly.

  8. The user cannot select the heap or memory pool as process allocation.

  9. The user cannot define the behavior when a thread crashes or panics.

  10. The kernel does not support cache maintenance.

  11. System call arguments are not validated, granting an intruder access to all memory.

  12. Tests must be run manually, instead they should run automatically on the GitLab CI server.

  13. Software tests do not state which requirement they cover.

    \item Testing:

  14. Test coverage of the software requirement specification is around 50

  15. Testing Bern RTOS based applications are not supported.

    \item Espresso Machine:

  16. The thermocouple sense module does not work.

  17. The release build crashes some threads (memory fault).


In conclusion, there is still a lot of work to be done as the devil lies in the detail. Though, the foundation and concept are now set. The kernel in its current form can be considered an alpha version. As a next step, feedback and development will be opened to the public. That also requires guidelines for contribution.