OCTOS is a compact real-time operating system (RTOS) featuring a preemptive kernel and an O(1) scheduler.
Currently, it supports only the ARM Cortex-M4 processor, but the system is designed to be extensible (see
Core/Arch).
- FreeRTOS-like preemptive scheduler
- Round-Robin within priority level
- "Cooperative" between priority level
- Support scheduler suspension
- Basic Task Management
task_create,task_create_static,task_deletetask_delay,task_abort_delaytask_suspend,task_resume,task_resume_from_isrtask_yield,task_yield_from_isr
- Python-like Sync Primitives
Sema_t: Semaphore (ISR-compatible)Mutex_t: Mutex (Support Priority Inheritance)Cond_t: Condition (ISR-compatible)Barrier_t: BarrierEvent_t: Event (ISR-compatible)
- Fexlible Inter-task Communication
- Lightweight Task Notification (ISR-compatible)
- Message Queue (ISR-compatible)
- GNU Arm Embedded Toolchain
- CMake
- OpenOCD (Optional)
# Start from project root directory
mkdir build
cd build
cmake ..
# or `cmake --build . --target flash` (OpenOCD and ST-LINK required)
cmake --build . --target octos# Inside Build Directory
# Open a gdb server at :3333 (OpenOCD and ST-LINK required)
cmake --build . --target gdbhost
# Inside project root directory
# Try input `oinfo` and `otasks` in gdb
arm-none-eabi-gcc -x .gdbinit