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.