Mark3 - new RTOS for AVR

1 post / 0 new
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

It's been a long time since my last post, I'm glad to be back :)

In my absence, I've been developing a new RTOS as a "reboot" of FunkOS, which I released a number of years ago, and effectively abandoned back in 2010.

The result of this is effort is Mark3 - a completely new realtime development platform for AVRs, developed from scratch, written entirely in C++.

It's clean, well-written, well-documented code that's easy to use and easy to understand. I've written a lot of code over the years, and I feel this represents some of my best work to date.

Before you roll your eyes and say "why on earth would someone write an RTOS in C++! it's sooo inefficient and bloated!", rest assured that Mark3 uses none of the features that lead to unnecessary bloat and performance issues; I estimate that it's only about 10-15% larger than a comparable system written purely in C, with the advantage that the source is much, much smaller.

Key features include:
-Fully deterministic, preemptive scheduler (multiple priorities, round-robin, configurable thread quanta)
-Tickless timers (eliminates the 1ms timer interrupt)
-Semaphores/Mutexes/Event Flag
-Efficient message passing
-Intuitive APIs based on Object-oriented design
-Full Doxygen documentation and highly-annotated source code (the PDF is ~450 pages)
-library-based build system using recursive make
-Example code for all major features
-buffered, interrupt-driven UART drivers
-Unit tests for all major features
-Code profiling suite and kernel sanity test suite

In addition, there's a full set of middleware and drivers supporting the platform, many of which could be their own projects:
-bootloader with cross-platform flasher utility
-cross-platform terminal utility
-console application development libraries
-thread-safe fixed-block heap support
-custom filesystem library
-raster graphics/GUI development libraries
-font rendering code with command-line ttf->bitmap conversion utility
+more I'm forgetting

Mark3 currently supports:

Toolchain support for this release is limited to GCC.

If you're using any of the usual suspects schedulers (FreeRTOS, uCOS, ThreadX, ChibiOS) on any of those parts, you should definitely consider giving this a try.

Project Page:

Keep in mind - this is a first release, and so there are bound to be gaps - especially regarding documentation. If you have any questions or feedback, feel free to reply on the thread.