My chum Bob Zeidman, president of Zeidman Technologies, is always involved in something interesting. Some time ago, for example, he told me about SynthOS. This little scamp can automatically generate an RTOS (real-time operating system) -- for use on an FPGA, MCU, or SoC -- that is optimized and tuned to your particular requirements.
Bob tells me that that the resulting RTOS -- which he calls an application-specific operating system (ASOS) -- boasts strengthened security, increased reliability, and a minimized memory footprint, all of which are critical to devices connected to the Internet of Things (IoT).
The clever thing is that the synthesized ASOS is optimized for the applications running on top of it. According to Bob:
There is no need for the developer to worry about things like setting semaphores, mutexes, or priority flags, and no need to create task context blocks, message queues, or task mailboxes -- these are all handled automatically. Furthermore, the developer doesn't need to worry about race conditions, deadlocks, processor hogging, or un-serviced tasks, because -- in addition to being optimized for speed, size, and security -- the resulting ASOS is correct-by-design.
Perhaps the most exciting thing is that SynthOS is now available for free at www.SynthOSonline.com. I asked Bob if he could tell me a little more about this, and he responded with a "Top 10" list as follows:
SynthOS is an innovative new tool for the rapid development of embedded systems. SynthOS automatically "synthesizes" an application-specific operating system (ASOS) that is optimized for your application. By leveraging patented algorithms and utilizing a higher level of software coding, SynthOS creates an ASOS with an extremely small footprint. SynthOS has a very small learning curve; it greatly improves reliability; and it reduces development time and debug time by eliminating race conditions and other hazards before the code is even compiled.
It's now available online for free at www.SynthOSonline.com. Both noncommercial and commercial uses are 100% free for the foreseeable future. We will, however, charge companies for processor-specific versions of SynthOS, for installing it at their facility, and for priority support.
There's a very short learning curve; SynthOS requires the knowledge of only five primitives rather than over 100 APIs as with many RTOSs.
It allows a faster time to market because of the short learning curve. Plus the OS is correct by design, thereby cutting down debug time.
SynthOS creates a very small footprint OS. Some of our demos have an ASOS of less than 1K bytes. This means you can squeeze entire systems onto an FPGA or SoC without external memory.
It's low power because it can run on a minimal processor that doesn't need memory management hardware, context switching hardware, and other hardware to support the OS. The OS support is done in the ASOS code.
It lowers hardware costs because you can now put multitasking systems on simple, cheap, 8-bit and even 4-bit processors without external memory chips.
Your system is portable to new processors because it doesn't rely on specific processor hardware for supporting the OS.
Because of all these reasons, ASOSs generated by SynthOS are great for the Internet of Things (IoT). Lots of designers are putting processors into devices that never had them before (e.g., toasters, thermostats, light bulbs, home alarms). Manufacturers can't afford to train all their engineers in the details of RTOSs. This way, every programmer can create an optimized RTOS at the push of a button. The resulting ASOS will be fast, have a small memory footprint, consume little power, and run on any processor with a C compiler (which is almost every processor we're aware of) .
Every good list should have 10 points, so I added this one. I'll think of something else to say eventually.
Well, call me "old-fashioned" if you will, but this sounds like a bargain if ever I heard of one. The code I create for most of my hobby projects (which run pretty simple in the scheme of things) runs on the "bare metal" processor. However, now I'm wondering if any of my projects could benefit from running under an RTOS, in which case I think the SynthOS website may expect me to be paying a visit. In the meantime, if you decide to take a look at SynthOS yourself, it would be great if you could share your experiences with the rest of us in the comments below.
— Max Maxfield, Editor of All Things Fun & Interesting
@Sanjib: We've just completed an Arduino-based robot and are writing an article we hope to get published soon. We've also tested it on the Altera Nios, Xilinx Microblaze, IBM PowerPC, Cypress PSoC, Freescale ColdFire, and a couple different ARM processors.
@prabhakar_deosthali, thanks for your post. Interestingly, because SynthOS generates C code, the resulting system can be run directly on a PC for debugging before being ported to the actual hardware. Of course, the actual hardware will require specialized drivers (but we will eventually have a solution for converting these to PC drivers automatically).
SynthOS creates it's own stacks in software (we may eventually make custom versions to use specific processor hardware like stack hardware). The advantage is that your processor can be so simple it doesn't even need contect switching hardware. While the hardware can be very fast, it can also be very slow for most applications. For example, if a task uses 3 out of 256 registers, context switching hardware will typically swap all 256 registers, but SynthOS knows the task is only using 3 registers so it only swaps out 3 registers.
@Paul. thanks for the comments. I see that eCOS is still around as an open source RTOS (see here), though it's only used by about 2% of developers according to a 2013 study by UBM. One big difference is that SynthOS is algorithmic rather than modular. SynthOS uses algorithms to analyze your source code and then generates an RTOS. There are no modules. I think most RTOSes are really modular, but the modules are fixed size and fixed functionality and tied to particular hardware.
I think the problem is not with the modularity of eCOS, but the fact that every RTOS that is tied to a particular processor eventually becomes obsolete when the processor becomes obsolete. Look at VRTX, Monta Vista Linux, PSOS, eCOS... and the list goes on. One significant advantage of SynthOS is that it ports to any new processor with a C compiler, which means it's not obsolete when a new processor comes out.
I am one of the old timers who designed their own RTOS for the embedded applications.
I had designed my RTOS as a guest operating system on PC intially and could port the same on different microprocessors -8086, 6502 and so on.
One thing is very critical while designing the RTOS is use of stack for interrupt handling and task switching. Since differenet micro processors have different stack structure, stack size and stack pushing sequences , I am curious to know how this is handled in this SynthOS design? for true portability
I am not an embedded systems developer, but this reminds me of eCOS, a mostly failed attempt to provide a configurable open-source embedded OS. The promise of a highly modular design and the ability to fine tune if necessary (source availability) seemed like it would be very attractive for embedded systems, as would the open-source licensing.
(On the hardware side, Tensilica's XTensa and TIE have a similar attraction.)
I have a little bit of an engineering mindset, so customization to meet design targets has some appeal. SynthOS sounds like an indication that technology has not stood still.