Is Linux dying in the embedded space? Or is it healthier than ever? Surveys don't paint a clear picture.
Embedded Linux is dying. According
to a recent survey sent to
readers
of Embedded Systems Design and EE Times Linux use has
declined from 37% of the market to just 20%, a stunning change. The
same survey suggests that developers are even less likely to use the OS
in future products.
Or embedded Linux has never been
healthier, and its use continues to increase. A survey
that contradicts the former shows 47% of developers are using
Linux in embedded products this year, up from 32% three years ago.
Both surveys do show that Linux adoption has
grown over time, since a 2001 study by the Evans Data
Corporation pegged its use at 11.2%.
One is not suppose to discuss politics or religion in polite
company, so I hesitate to enter into the Linux discussion. Yelling
"Microsoft rocks" into a room full of open source advocates is about as
bright as brandishing a copy of The Satanic Verses in a square in Iran.
The same goes for making even the slightest disparaging comment about
Linux to most any techie.
Yet it's just an OS, a pile of bits, nothing more, nothing less, one
that is superbly suited for quite a range of applications but that is a
ridiculous choice for others.
But why is there such a great variation in responses?
I have no idea.
There's some evidence. The linuxdevices.com results are surely
skewed by a population already culled by their interest in the OS. I
suspect few Windows zealots frequent the site.
The embedded.com data may be affected by the way responses were
totaled. All summed to 100%, which hardly seems likely given that many
of us use multiple OSes across many products. It appears respondents
could select only one of a number of choices.
So I suspect the truth lies somewhere between the two sites.
The data is interesting and suggestive, though. At linuxdevices we
see that the use of all operating systems in embedded applications is
down except for Linux, eCos (another open source
product) and, frighteningly, home-brew versions. That last data point
violates common sense and must surely be some sort of statistical
anomaly.
According to linuxdevices embedded Windows has grown steadily but
was slightly off in 2006, down to 13%. Embedded.com suggests Windows
adoption has nearly doubled in a single year!
A survey I recently conducted showed Linux eclipsed by only
home-brew operating systems. It stood at 23.5% adoption, not far off
the embedded.com figure. Windows scored 10.6%... not far off the
linuxdevices.com results.
In my travels I see Linux in lots of applications, far more than a
couple of years ago. My gut tells me the survey data is not telling the
whole story. How about you? Are you using it in an embedded
application? Has that been a great or lousy experience?
Jack G. Ganssle is a lecturer and consultant on embedded
development issues. He conducts seminars on embedded systems and helps
companies with their embedded challenges. Contact him at jack@ganssle.com. His website is www.ganssle.com.
We are working on an embedded linux product, and all our products will be developed using embedded linux as OS in the near future. I see a lot of competitors' products are running on Linux or uclinux.
I am saying the technical design of Linux kernel is perfect, but several factors will make it a strong player on embedded OS market:
1. It's open sourced, with more and more detailed documentation;
2. More and more engineers are getting familiar with it;
3. More and more drivers, protocol stacks, and applications are running on Linux, make Linux a good candidate OS for time-to-market products;
Survey is JUST a reference data, you must judge it before you believe it.
- Marco Wang
Linux or Windows arguement is another story - adoption of linux in embedded systems is another story.
Going by Marco Wang's comments about the familiarity of linux and availability of portable source code, I guess that is the ONLY major factor in adoption of linux - applications are quickly deployable once the OS is ported.
Technically speaking - every project I have done, I have been cross-evaluating with other OS or home-grown OS/Schedulers. Many a times, linux comes down on performance because its architecture is rigidly placed by widely accepted standards. Nothing wrong with that. But every generic architecture has performance limitations and bottlenecks - and thats exactly what Linux too has built in it.
As an example, I would suggest support for real time behaviour - ya I know we are talking about "embedded systems" - but still in most cases, there is required to be some reasonable guarentee on timing for applications like video/audio streaming - though soft real time. I have done at least 4 projects on this and found that it is the 'most' difficult job to get timing right on linux - by the architecture of kernel itself :( In home grown or other RTOS, it is quite simple to achieve the same results because we have more control over the scheduling and timing.
Anyways, I still love Linux and Windows - both for different reasons. Windows has another advantage of having portable APIs across desktop to the embedded world and ready available of easy to use user tools (competes with Linux - but not free of course :( ) - always gaining on popularity by user experience and ease of use of tools.
All depends on having a proper balance between cost, time, quality and user experience.
Low Cost, Short development period, Behavioral sacrifices - Linux
Average (?) Cost, Short Development Period, Somewhat Controlled Behaviour (at least with the expensive support options ;-)) - Windows
High Cost, Short development period, (Semi-)Completely Controlled behaviour - 3rd party RTOS
High Cost, Long development period, Completely Controlled behaviour (but lacking features) - Homegrown RTOS
99% of time I have seen, choosing of OS depends on Cost of OS and Maintenance/Support available than any of the technical factors anyway. The management generally offers broad choices to engineers - Hobson's choice.
I would love to hear other experiences.
- Saravanan T S
Linux, or not to Linux?
Basically, what is holding most developers back is some of the
confusion in regards to:
1. support
2. BSP, (again support)
3. open source licensing models.
4. real time
>From what I can see, the #3 item above is becoming more and
more of a non-issue as time goes on...that is, the whole SCO
thing seems to be vanishing into the dust of developers minds.
Also, the consensus, (again anectodtal evidence), is that when
developers pick Linux, they are not really interested in the
real time performance...they accept the fact that Linux is
not a hard real time shell. Amazingly, a lot of developers
are opting for the vanilla Linux ports done by various companies
out there, and are finding other ways to tackle hard real
time....(including...believe it or not, another processor!)
The thing that is front and center of most developers minds are:
1. what is the risk of implementaton, (support)
2. how quickly can I spin my system up?
(support)
3. what kind of BSP support do I get for my hardware configuratino?
(again more support).
- Ken
Wada
I'm in automotive - steering, braking, body control, etc. We
don't use Linux or Windows (too big, too slow, not hard-real-time),
or open source. We use home grown (because we've
been doing it for ever) or an OSEK operating system (because
it's designed for automotive).
Our requirements for speed, footprint, determinism, reliability,
interrupt handling etc rule out a lot of the options and
leave us with the two options above. It's not that we don't
like Windows or Linux, they simply don't fit!
- Paul
Tiplady
Good topic, Jack.
I'll throw our collective hat squarely into the Linux ring, and
submit an exhibit from the recent Embedded Systems Conference
as our case study.
http://www.embedded.com/showArticle.jhtml?articleID=185300272
- Daniel
Daly
I think the reason we don't use linux in our embedded systems is that we have had such a bad experience with linux on the PC. Every time we want to do something we are entering a username and password. Every time I copy files over to a linux machine, Samba or not, I need to then log on ( username-password) to the linux box and change the group and owner of all the files just so I can open and use them. Even though X-Windows has been around for years, every time I go to one of the linux guru's office for help, they open up a terminal and start typing command line arguments. I thought command lines died with DOS, not to mention the cryptic commands. For instance, what does 'grep' stand for? Why would I use that to do a file search? Is VI really the (ahem) 'editor' we should be using ?
In addition to all the updates and incompatibilites with various libraries, it has left a bad taste in the mouths of the engineers who simply turn on a windows box, connect to computers all over our network, and develop applications using tools that we paid for.
In the long run, $6000 for an RTOS and $1000 for a 'C' compiler is cheaper than having 8 engineers spend 3 months fighting with free/open source software.
- Edward Handrich
Linux, and other Open Source is a great way to set up shop for those with lots of time for development and TEST. I think it's better to buy into a vendor's RTOS and toolkit for any one particular project; you are not only buying the tools, you are buying a guarantee of reliability bolstered by the simple property that all problem reports go to a single source, and the single source then has a record of fixing the problems. (or not, so choose someone else)
This means: use IAR, not SDCC. Use QNX, not Linux. Ect. Ect.
- Matthew Staben
Linux dominates products which typically require
large complex standards-based apps. Good examples
are product heavily dependent on standard networking protocols
(e.g. TCP/IP, routing, VOIP) and application frameworks
(e.g. java, graphics). Examples of these products are
cable/SAT/IPTV STBs, PVRs (e.g TiVo), DVD recorders,
residential gateways, and NAS storage boxes. In fact if you
look at the MHP standard they require java which pretty much
forces STB vendors to use linux or windows.
Linux is also used in high-end mobile devices like smartphones,
GPS devices, personal media players (e.g. Archos), etc. However,
it is not used in low-end mobile devices (e.g. cheap phones,
and
MP3 players) because of constrained footprint sizes.
So any devices which are limited in footprint size (usually
due to cost) and devices with heavy real-time constraints
won't use linux.
The survey may be misleading because the number of respondents
working on high-end products are smaller than those working
on low-end products. But as we all know the high-end will eventually
become the low-end.
- Earl
Mitchell
Great topic, Jack!
I am on a project which, initially had its priorities as a small,
low-power media recording device that stores its data to
CompactFlash. An RTOS (Nucleus PLUS in our case) was a natural
choice on the AT91RM9200 processor we had chosen as well.
I don't have much Linux experience, but have read and been
told that it is easier to control the low-power modes of
your system with an RTOS. Plus, RTOSes use way less memory
than linux, which leads to power savings (i.e., being able
to use SRAM vs SDRAM)
Then... our customer throws a monkey wrench in all of it and
asks for networking capability with ftp server, ftp client,
web server with control GUI, and audio streaming capability.
My choice was to either (1) switch platforms to linux and port
all our existing code, or (2) stick with Nucleus PLUS and
use all the Nucleus middleware.
I chose to stick with Nucleus, mostly for the reason that I have
no linux experience and it would be too much of a risk (for
me). I also really liked the idea of a technical support
contract. I am confident that our device will be lower power
and cheaper to manufacture (because we don't need 64 MB
of RAM!) due to using Nucleus, but I sometimes still get that
nagging feeling that I missed the boat...
I am curious what other people's opinions are on the issue of
memory usage and low-power capability with linux vs. RTOSes.
- Stephen
Fenwick
I am an embedded systems engineer with a global company headquartered in Birmingham, Alabama. I also do some freelance contract work on the side, and have done so now for about 4 years. I for one have come across MANY people evaluating Linux OS for embedded applications. The reasons vary but are the usual ones for us in the embedded community. The OS is simple, scaleable, open source, has a myriad of driver support, and is just plain simple to use for us embedded folks, and the price is stunningly attractive, especially since there are no royalties. The work in the last few years within the Linux consortium in making it more and more "real-time" is also one thing (in my opinion) that is making it much more attractive.
But in my own personal evaluations, and also in those of many small companies I have been involved with, there is one main stumbling block that holds this little jewel of an embedded OS back. Simply put "development tools". There are just no tools available to develop Linux applications under a Windows platform. Even though the target will be completely Linux, the only development tools that seem to be of any use MUST also run under Linux. I have worked with many of the different RTOSs in this industry, including several of the home grown ones. Pretty much all of these other OSs have development tools that are Windows based, but why not Linux? I don't have an answer for that, and quite frankly it mystifies me. But I do know this much... when those cross platform tools do become available I believe that you will see a quantum increase in Linux's usage... bottom line. And the company who creates them will find a market equal to Windows itself. Just a thought... Hmmm anyone interested in joining forces in creating some development tools!? :-)
- Nathan Wallace