Layers and critical features for embedded operating system

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
User avatar
Doul
Posts: 1
Joined: Sat Feb 15, 2025 3:56 pm

Layers and critical features for embedded operating system

Post by Doul »

Hello,

I'm new here, and I've started writing an operating system, a real-time hybrid cooperative/preemptive stack-stored context switch. The final target is an industrial-grade Programmable Logic Controller.

The current target is an 8-bit AVR ATmega microcontroller, specifically an Arduino board. I'm using the AVR toolchain without any Arduino software.

Right now, I have a basic system running with a preemptive scheduler and a real-time clock. I'm working on serial communication via USART for testing, debugging, and control purposes. I'm also considering the system's layer arrangement:

Layer arrangement:

4 - User tasks
3 - System calls
2 - System core + system services
1 - Drivers
0 - Hardware

Tasks can have direct access to system services and drivers unless restricted by the system core.

Critical features for an embedded operating system:

Robust stack overflow control
Prevention of software and hardware deadlocks (watchdog)
Resource access management (abstraction layers, system calls, mutexes)
Real-time capabilities
Error handling and recovery mechanisms
Task prioritization
Inter-task communication
Debugging capabilities (e.g., communication, dynamic task start/stop, driver management)

What else should I consider? Thanks!
INT 21 is my ex-girlfriend
Post Reply