SSG MIRTOS Operating System Overview

Do you like to create and use small electronic devices? Have you used any based on the Atmel® ATmega328P microcontroller, such as the Arduino® UNO, Pro, Pro Mini, or other open-source boards? Have you tried to use these circuit boards to create devices which can communicate with one another or those which could control more than just a few LEDs and other things as well? How about being able to reprogram them remotely, via radio, after installation, without having to remove them from service? Perhaps you've even created your own circuit boards to implement something unique. How about doing all of those things at once?

We have done all of those things. If you have done some or most of them, did you enjoy the programming experience? Did you enjoy learning to program using a customized "C" programming language in the development environment? Are you someone who actually likes programming or wants to learn how to program?

We believe that the Arduino development environment is really great for getting started. It gives us a taste of what is possible. Learning the "C" language is a good thing, as well. We highly encourage you to do that.

After gaining experience, some limitations start to become apparent, however. One of the first is the delay() function, really only useful for the most trivial of applications. Second, the default behavior of copying strings from FLASH to SRAM, a much more limited resource than the FLASH memory, can be overcome, but takes some effort and discipline. Third, adding one or multiple libraries is fairly easy, but they start to consume FLASH memory and, well, be contentious. Before long, the FLASH also becomes scarce and modifying them to fit, along with the actual application program can be very frusrating.

Using a bootloader requires that a running program be stopped, loaded from scratch, and restarted. All variables' values are lost. The desire, or even the need, for the application code be able to be changed remotely surfaces. If a device is installed in an inaccessible location, it may be essential that changes to its program be able to be made remotely. The bootloader is simply an unworkable solution in that situation.

So, upon receiving direction to create a device which can be used in VERY remote locations, require low power, not need replacement of any components for years (so need no batteries, but can be solar powered), be inexpensive to produce and be remotely reprogrammable from afar, we created a device and the Operating System to support it.

The hardware is not that complicated, in fact, all but the power source is open source. We believe that the Operating System is much more interesting. It is written entirely in Assembly language for compactness, efficiency, the abilitiy to get all the features into one small package and many significant functionality improvements. It does not require the use of library code, but includes drivers for nRF24L01 radio and World Semi WS2812 LEDs. It also has 125 System Functions exposed.

We really have no desire to start an "Assembly language is better than C" and "C is better than Assembly language" war. Each have their strengths and weaknesses for specific purposes and even programmers. We provide this specific example to show why we choose to use Assembly language over "C". The Timer0 comparison shows an example of execution speed optimization, using ways not possible with "C". It could be reoptimized for code size, at the cost of execution speed.

This Operating System supports over 30 simultaneous tasks, has a logic sequencer, an extensible command processor, a scripting language, with both radio communication and multicolor LED support, but NO delay() routine or bootloader, to list just a few of its features. Please examine the complete features list for this Multitasking, Interactive, Real Time, Operating System and consider whether they and Operating System can benefit you in any way.

We have tried to mark all manufacturers' trademarks the ® trademark symbol, at least once on every webpage where they were named. There is no desire to infringe on any of those trademarks or trade on them. We are primarily marketing an Operating System - software - for devices which use the ATmega328P microcontroller. Although our Operating System was designed to work in them, we have no desire to denigrate someone else's hard work. We're simply offering an alternative software solution for them.