Real time or not? What operating system makes sense?
I have been thinking about embedded operating systems and how a developer chooses from the options available. My thoughts partly come from the presentation that I made at the ARM conference in Munich last week. But I am also interested in ARM’s announcements in this area at ARM TechCon the week before.
It seems to me that although it used to be very black and white, the rules are changing and shades of gray become apparent …
It is a broad generalisation to say that a system is either real time or it is not, but for many years this has ben accepted as a starting point, when considering the provision of an OS. It is important to appreciate that real time does not [necessarily] means fast – it means predictable or deterministic. A real time system is typically required to respond to external events in a tightly specified manner.
In recent years, we have begun to talk in terms of “hard” and “soft” real time, depending on how stringent the response time requirements are. For a hard real time system, a real time operating system [RTOS – such as the Mentor Embedded Nucleus RTOS] is an ideal choice, as it can deliver the required determinism. If a system has limited resources, an RTOS is also appropriate, as it can optimise their use – distributing the available CPU time efficiently, while not imposing a significant memory footprint.
It is possible, of course, and indeed not uncommon, to use an RTOS for a soft real time system and this is an attractive option if resources are limited. If, however, there is plenty of CPU power and memory available, other options present themselves – Linux being the most obvious possibility. There are a number of attractions of Linux, but the incredibly wide range of hardware drivers and the ready availability of programming expertise are key. Using Linux certainly reduces the cultural impact of transitioning from desktop to embedded programming for many developers.
There is quite a wide gap between the “traditional” type of RTOS and Linux; the increase in the amount of memory and CPU power required is substantial. I suppose that this is the space in which ARM’s recently announced mbed os fits. At this point, I have limited details, but, as I understand it, the OS has a broad range of functionality, reasonably modest memory footprint and does not claim to be real time [even though they oddly refer to it as an RTOS”]. I am sure that, in coming months, more information will become available and we will have a clearer view of where embedded operating systems are going.
I am cautious, however. I recall an experienced and knowledgeable colleague explaining the future of embedded operating systems to me about 15 years ago. He said that, well within 5 years, there would only be 3 real options: X, Y and Z. Of these, only one is still visible in the market and that is definitely on the wane. I do not own a crystal ball …