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!
Layers and critical features for embedded operating system
Layers and critical features for embedded operating system
INT 21 is my ex-girlfriend