Slashdot Mirror


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."

23 of 104 comments (clear)

  1. Wrong conclusions from the data by livingboy · · Score: 5, Interesting

    If you look original EE Times link and read the article, you will see that the love for Android is dropping:

    However, despite pulling ahead of FreeRTOS and Ubuntu Linux, the news is not all good for Android in embedded applications. Whereas a year before 34 percent of users thought they would be using Android during the following 12 months that percentage dropped to 28 percent in the latest survey.

    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.

    1. Re:Wrong conclusions from the data by bfandreas · · Score: 4, Insightful

      Android is very unpredictable during runtime.

      This of course is purely anecdotal and based on my consumer grade experiences. 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. As an abstraction layer for vastly different hardware running the same crap it works quite nicely. But you shouldn't attach hydraulics, engines, valves or anything else important to it.

      Also let's not forget how long it took to get Linux anywhere near equipment that needs an RT OS. And it possibly still isn't the first choice in such environments. I've been out of that loop for a long time and have been known to be wrong. So this is no engineering advice.

      --
      20 minutes into the future
    2. Re:Wrong conclusions from the data by muon-catalyzed · · Score: 2

      Your anecdotal consumer grade experiences are spot on, perhaps we are witnessing another example of marketing win over engineering. Berkeley GEOS and IBM OS/2 vs MS Windows spring to mind also.

    3. Re:Wrong conclusions from the data by Anonymous Coward · · Score: 4, Interesting

      People are mixing up two different concepts: embedded != realtime.
      Of course no one confronted with critical realtime requirements will choose Android java application as a solution.

    4. Re:Wrong conclusions from the data by knarf · · Score: 2

      You would not use Android to directly control the hardware, that is handled by native code running on Linux. Android does make it possible to create good-looking user interfaces with minimum effort and - like you said - good portability. Since Android runs on top of Linux you can have both at the same time.

      --
      --frank[at]unternet.org
    5. Re:Wrong conclusions from the data by AmiMoJo · · Score: 4, Interesting

      When they say "embedded" they probably don't mean headless boxes as you appear to be thinking of. At work we recently developed such a device, a tablet PC running Windows Embedded Compact 7 with one auto-starting app.

      We looked at Android. You can either disable the home button in software or just omit it from the hardware so that your app is always in the foreground. Not that you would necessarily want to; eventually we would write a custom launcher that could start other apps we provided.

      Windows Embedded Compact 7 is a turd. Parts of it just don't work. We raised a support ticket with Microsoft because Portuguese language settings didn't work and their response was "it's broken, we know about it and there is no business case to fix it, and BTW a bunch of other random languages don't work either". We were planning to use Silverlight to do our UI but performance was terrible, seemingly not using hardware acceleration at all (despite OpenGL ES working perfectly well). When you start playing stereo sound the left and right channels are sometimes randomly swapped. The whole thing is a giant cluster-fuck.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    6. Re:Wrong conclusions from the data by Mr+Thinly+Sliced · · Score: 2

      No production JVM is real time.

      I'd agree that the standard JVM / JDK is anything but realtime, but Sun (Oracle now of course) created a JSR specifically tackling the shortcomings w.r.t. real time:

    7. Re:Wrong conclusions from the data by jrumney · · Score: 4, Insightful

      Your anecdotal consumer grade experiences are spot on, perhaps we are witnessing another example of marketing win over engineering.

      Engineering's job is to make what marketing want work, not argue about whether the market wants the right thing. Underneath Android is still Linux, anything that needs to avoid garbage collection can easily run outside of the dalvik VM.

    8. Re:Wrong conclusions from the data by EETech1 · · Score: 5, Informative

      Lets say that your valve is from a 1987 Ford and it is for idle speed control. those valves run at 10 Hz so your best case 1 Msec response time will give you 1% increments from 0% - 100%. If you had a requirement to have better than 1% resolution, you couldn't get it. If your response time varied by 1 Msec as well, you couldn't hold better than 3% on the valve position giving your engine a roughly + - 2% window on the the idle speed. This in itself would be an objectionable level of idle stability on the slowest valve ever used for idle speed control.

      But you might have a hardware PWM to help you gain accurate control of the valve by just loading a value to a register and calling it a day because the hardware timer will take care of giving you an accurate frequency and duty cycle, what could go wrong then?

      The same issue would still manifest itself perhaps even to a greater extent because the PID calculations that you would be using for the speed control loop on your idle speed need to be taken at very exact intervals to get a good cause and effect relationship out of those calculations. At a 600 RPM idle on your 5.0L V-8 you will have 40 combustion events per second, and the PID would likely be calculated at the most every 50 mSec to get any kind of stability out of it. If your scheduling and task swapping caused that calculation time to vary + - 1 mSec that would also create a ~4% error in the PID output because it might have really measured the change over 49 - 51 mSec and now you not only have an invisible (to the software) amount of jitter to deal with you run the real risk of having 1 or 2 or 3 of the 25 mSec combustion events being used in your current idle speed calculation. If you got unlucky and just missed the 2nd combustion event in your calculation, you only have half of the "power in" you expected when you calculate what effect your valve position is having on your engine speed, your PID may say "hey, we need the valve open more!" so that calculation will drive the valve too far open. The next time the PID calculates it is likely to see the effects of 3 combustion events which will be driven by a valve that is now too far open and overcompensate again by closing the valve too much. The resulting engine speed will become very unstable.

      You can see where you might want to be able to run that calculation faster say on a 10 mSec schedule. Now your 1 mSec jitter will result in a 20% variability in the time used in the PID calculation sometimes, so while you can run the calculation more often, and filter the output to the valve to keep your PID loop from essentially aliasing your combustion events, your increased time variance will somewhat negate any gains you had from running the calculation 5X faster increasing your CPU load (which will increase your 1 mSec response time jitter) and might make your system even harder to tune for a smooth idle.

      Another Example:

      If you were trying to monitor a 1 khz frequency by accumulating the pulses in a hardware counter and and were reading the result every 100 mSec, and you had 1 mSec jitter on the time you read your 1 mSec pulses. You would have a sample period of 99 - 101 mSec, this would automatically limit you to 10 hz resolution on your pulses (99 to 101 of them * 10) so your measured speed would best case read out 990 - 1010 hz and your control system would have to live with never knowing if it was really at 990 hz and read the frequency too soon, or it was at 1010 hz and read it a little too late. It would severely limit the control you would have on the process that was generating the pulses.

      Hope this helps!
      Cheers

    9. Re:Wrong conclusions from the data by Jane+Q.+Public · · Score: 4, Insightful

      "Engineering's job is to make what marketing want work, not argue about whether the market wants the right thing."

      Complete nonsense. Granted, that's how some companies are run, but generally it is not a very successful formula.

      If you want your company to be successful, it is the job of Engineering to tell Marketing what works well and what doesn't. Marketing may want something specific, but if it doesn't work well, it won't sell well either.

      Apple is a good example. Engineering drives marketing as much as the other way around.

    10. Re:Wrong conclusions from the data by sjames · · Score: 2

      Perhaps clearer. Marketing tells engineering what the market wants. In a good organization, engineering then tells marketing what they can do to satisfy that and marketing gets to work teaching the market why that is the best solution to what they want.

      In a bad organization, marketing tells engineering what to do to satisfy the market and when engineering says that can't actually be done, marketing demands it anyway.

      In a terrible organization, marketing decides what they want the market to want, tells engineering to build it, and then gets to work cramming it down everyone's throat.

      In an even more terrible company, the CEO buys whatever his buddies are selling, instructs marketing to make the market want it, instructs engineering to duck tape it all together, and then gives the shareholders the finger while deploying his golden parachute.

  2. Silly angle by Gaygirlie · · Score: 3, Interesting

    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.

  3. News at eleven by ls671 · · Score: 3, Informative

    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.
    1. Re:News at eleven by maxwell+demon · · Score: 2

      I went to an embedded systems conference back in 2000

      Note that in the last ten years, there was no year 2000.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:News at eleven by Bill_the_Engineer · · Score: 2

      My speciality is embedded systems and I can attest to Linux being a dominate force for the past decade. Mainly due to a lot of work requirements being downgraded to soft real-time instead of the default hard real-time. QNX, VxWorks, and Phar Lap ETS still are preferred for projects with hard real-time requirements (Phar Lap ETS has fallen out of favor in our shop).

      While Linux is growing in dominance it is not the only rising star. Projects like L4/fiasco looks promising and being deployed in projects (though not by us). I believe Qualcomm is incorporating L4 microkernel in their chipset.

      My colleagues "just down the hall" have used RTEMS, and my colleagues farther "down the hall" are the ones maintaining it. If you are interested in an open sourced RTOS then please check it out.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
  4. Re:Low end, in house? by Anonymous Coward · · Score: 2, Informative

    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.

  5. High level embedded systems by ultranerdz · · Score: 3, Interesting

    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.

  6. 50% is domination? by Kjella · · Score: 4, Informative

    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
  7. Embedded Projects by Murdoch5 · · Score: 2

    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.

  8. Re:Windows CE forever !!! by Holmwood · · Score: 2

    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.

  9. Re:Low end, in house? by dfghjk · · Score: 2

    "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?

  10. Re:Low end, in house? by mathew7 · · Score: 2

    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.

  11. Oblig. quotes by Errol+backfiring · · Score: 2

    '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!