Hey everyone,
I’ve been working on Echo Os for several months now. Its my ‘learn zig’ project. I’m pretty happy with the progress I’ve made on it so I thought it was time to share it with others. Currently it only supports Zig 0.13.0, but I’m planning to move forward to 0.14.0 when its released next month.
Features
- Preemptive priority base scheduling
- 32 priority levels
- Unlimited tasks per priority level
- Mutexes
- Semaphores
- Message queues
- Event groups
- Software timers
- ARMv6-M & ARMv7-M support
- Zig package manager support
Echo OS pulls in the architecture specific files at comptime. This is based off of the cpu_model
field in the target
argument of b.addExecutable() in the parent zig.build.
The readme has a link to another repository for example projects. Currently there is just one example: a simple blinky project that runs on a STM32 Discovery board.
There is certainly more work to do on this project. Message queues and software timers need some more revisions. I’d like to add ARMv8-M & RISC-V support. Plus I’d like to see if I can improve the speed of the the scheduler and context switches. And thats just to name a few.
Constructive feedback is welcome!