Embedded Developers Prefer Linux, Love Android
DeviceGuru writes "In a recent EE Times 2013 Embedded Market study, Android was the OS of choice for future embedded projects among 16 percent of the survey's participants, second only to 'in-house/custom' (at 28 percent). But if a spectrum of disparate approaches can be lumped together as a single option, why not aggregate the various shades of Linux to see how they compare? Parsing the EE Times data that way makes it abundantly clear that Linux truly dominates the embedded market."
If you look original EE Times link and read the article, you will see that the love for Android is dropping:
After all, used OS is mostly hardware dependent, is it a low end or high end embedded platform.
Low end you do in the house, middle range applications you use some RTOS, in the high end you use those Linuxes and Android.
Disclaimer: I am currently evaluating OS that did leap from 0 to 4% in its first year of use.
A kernel all by its lonesome self doesn't really do all that much, it needs userland to become a useable OS. For example, Linux-kernel by itself would just be a Linux-kernel, nothing more, but slap uClibc and Busybox on top of it and you've suddenly got yourself a bare-bones OS. However, as the Linux-kernel is so utterly modifiable and flexible the userland can be almost anything and there is nothing about the kernel itself that somehow mandates that the userlands be in any way or form compatible with or even so much as resemble one another! So, if we are just going to slap together all the different forms of operating systems with absolutely no regard for the userland simply because their kernels are based on a similar source we should do the same for the other kernels, too, in order to be fair: slap OSX and iOS together with all the BSDs, all the Windows NT - based kernels together and so on, and then compare the numbers.
Linux, the kernel, would likely still come on top and we could all rejoice and sing Kumbaya, but... well, what would you gain at that point? What does such masturbation to the types of kernels actually give us? It says nothing about the operating systems, it says nothing about finer details like e.g. if the kernels are even compatible with one another due to modifications or anything, it's just simply a way of masturbating to the numbers.
News at eleven...
Linux has been dominating the embedded market device for at least 10 years.
Everything I write is lies, read between the lines.
unless you are into projects that don't require much of an operating system (such as assembly on AVR etc, probably the 28% custom/in-house figure), how many options are there apart from linux?
Especially since only Linux offers a proper setup for Android development. It's like saying "iOS developers love OS X" just because 100% of them do their iOS development on OS X - as the tools are only available for OS X. They may very well love OS X (really, who doesn't?), but that's not the sole reason behind the number.
Depends on what you consider an Operating system I guess. A basic task scheduler and process messaging could be thrown together in an afternoon, memory allocation is easy but you generally don't want it in an embedded application. The peripheral drivers is something you will have to put together regardless of OS.
It's when you need a network stack and a filesystem that you might want to pull in something that is already done.
But since this story is about embedded uses, users don't buy operating systems either, they buy the entire device.
Embedded devs on the other hand do select a kernel, and will often build their own userland to go on top of it.
http://spamdecoy.net - free throwaway anonymous email - avoid spam!
The takehome from TFA for me was that Inhouse/Custom, Android, Ubuntu, FreeRTOS and Windows Embedded 7 are all gaining marketshare year over year with everyone else either holding steady or losing ground. They also happen to be the top 5 OS in the survey. The biggest gainer in what appears to be a consolidating market was Android.
Minix wasn't listed, although it would seem that Minix 3.2 is perfect for this niche
So many misconceptions here.
1st we can assume Android uses the kernel Linux, so android "includes" Linux.
2nd, there are many types (levels) of embedded systems. Some don't need CPU (nor software). Some require a simple microcontroller, and some require true connectivity, true multitasking, lots of RAM, and maybe an MMU. Some of these systems run OS, and some of there are Linux. Lets call those "high level" -- happen to be the ones we interact on a daily basis (like a Smartphone for example).
Said that, the great vast majority of embedded systems are not "high level", and we normally don't even "use" them directly, so they don't run Linux (nor Android).
What is true is that in general, people that need to program in high level, prefer to code in Linux (or even Android) than to code in Windows CE, bare metal, or any other Embedded OS (or RTOS out there).
But still, it will take "long time" to Linux really dominate the embedded market.
Now this is domination. And this is starting to look like domination. Looks like embedded still has a way to go, though Linux overall looks healthier than ever.
Live today, because you never know what tomorrow brings
I'm an embedded developer, professionally with experience down at bare metal (with my own scheduler), VXWorks, QNX, Linux and NetBSD. In my opinion, NetBSD was by far the best embedded OS to work with. In places I've worked, the main reason for choosing Linux over NetBSD is "Linux will look good on my Resume... No one knows what NetBSD is." ... I counter that they already have Linux experience, so having more keywords on their resume is better than appearing to only have experience with one OS.
Circuitry and logic are supposed to be half an embedded system, not one percent.
I didn't know that there was an official exchange rates between gates and bytes so that one could numerically compare.
Ezekiel 23:20
I've worked on / built a lot of different embedded systems both hardware and software and I've been left with this question many different times. Linux is great where you need a high level of control, and a great standard posix level interface and If you need to control timers, interfaces, resource tables and more. Custom implementations are great when you need to manage less resources but can handle the overhead of writing a custom RTOS from scratch. Android is great where you want another option apart from Linux. It's not a real cut and dry method of just sitting down and picking out a software platform for an embedded systems, it comes down to what your comfortable with, what you need it do / handle and what your over all requirements are.
To date I've used Linux on 3-4 different Embedded platforms, I've writen my own on about 8 different Embedded Systems, including one that was big enough for Linux but I just wanted a true custom RTOS for fun and I've used Android on 1 of them that is still unreleased. Most of my projects are open source so I tend to release the code after the fact.
Oh come on, that AC deserves +5 for funny for his topic, leaving aside the dorky "first!". I was on the board of a company that was competing in that space (licensing embedded OS's) back in the 90's. We concluded we weren't viable because we were in the ~$7-10m a year range of licensing fees. We found out Windows CE, globally, was in the neighbourhood of $3.5m/y. Boggle.
We still concluded we weren't viable, and transitioned to a POSIX-compliant variant of Linux and other activities. Given this survey, I don't feel sad about that choice.
Android maybe if all you look at is consumer do-hickies, but in reality there are billions of embedded systems you never see that perform flawlessly 24/7 for decades which use no OS at all
OS? I don't need no stinking OS.
Google "Forth"
http://en.wikipedia.org/wiki/Forth_(programming_language)
Place nail here >+
Old man noises: embedded development hardly feels like it any more. When you can say "oh, let's do one side with Cherokee so the configurator can set up the device and it can talk to the C polling stuff on the other side via shared memory" it's almost too good to be true.
"A basic task scheduler and process messaging could be thrown together in an afternoon, ..."
Right, kernels are things you throw together in an afternoon. I'm sure most of them are. Bootstrapping code takes, what, 5-10 minutes?
If it's basically an app on bare metal on fixed hardware, yes, you might throw the 'kernel' together in an afternoon if you have some parts lying around in your code library.
"But given how eagerly Dalvik disposes of anything connected to a process that'S not in the foreground I wouldn't consider using it to do anything important."
Dalvik has specifications and documented behavior and Dalvik follows that behavior pretty well. You do not see Dalvik disposing of anything connected with a process that is state that it supposed to save. Some state is ephemeral and documentation states it is ephemeral. I have yet to see an object held by a running Service to be arbitrarily destroyed by Dalvik. Offscreen Activity objects might be destroyed, but Android API documentation explains this up front. If you want to hold state in a process outside of the current onscreen Activity, you put it in a Service or like class, not in the Activity object. Activity objects are supposed to be short-lived when they go off-screen.
Dalvik has no problems holding state if you hold state properly in a Service object. If you try to hold state in offscreen Activity objects then you shouldn't be surprised when Dalvik doesn't hold it. It's not supposed to.
...it's dominANT, like "is dominant in BDSM scenes" rather than "will dominate the penis-length competition" or "that bitch is totally dominating his ass."
Now mostly at Usenet:comp.misc & SoylentNews.org (it's made of people!)
But when I do, I prefer to use Linux.
I did not mean to quote the most interesting man in the world, but it I like the way that reads.
I am very small, utmostly microscopic.
NetBSD is not famous, but it definitively deserves a look for an embedded OS.
First, it supports major CPU used in the embedded field: ARM, SH3, SH5, PowerPC. So does Linux, but NetBSD has the nice ability to be cross-buildable from any POSIX/ANSI C platform. You can build your NetBSD embedded system from Linux, MacOS X, and even Windows + cygwin
Then there are the architecture and bus independant drivers. NetBSD uses the same driver for a given chip, whatever the CPU is, or whatever the bus the chip is hooked to. This means most of the time you do not have to rewrite or tweak drivers when working on an embedded platform: you reuse existing code.
I work in automotive non-UI enviroment. And I can tell you that the OS is very minimal. It hooks to a timer interrupt and executes predefined tasks based on timer. It has no memory sharing, no drivers, no filesystems. It just handles context switches.
So me knowing about it, I can tell you that yes, you can make a working OS in one afternoon.
'Statistics are like a drunk with a lamppost, used more for support than illumination.'
-- Sir Winston Churchil
"There's Lies, Damn Lies, and Statistics."
If you tweak statistics enough, you will always find what you are looking for. Especially if your sought answer has nothing to do with the questions that were asked. Or would you really ban sober driving if 25% of the traffic accidents are due to alcohol use?
Nae king! Nae laird! Nae yurrupiean pressedent! We willna be fooled again!
I can also make a working web server in an afternoon, if all it does is listen to port 80 and translate GET commands into the file system, and error out on everything else.