Become a fan of Slashdot on Facebook


Forgot your password?

Choosing an Embedded OS for Sustainability? 68

vivekb asks: "I work for a small start-up that's building its first commercial product. Because cost is less of an issue than development time, we've decided to make the brains out of an ETX computer with some sort of (non-realtime) operating system. Based on initial costs of tools and estimated license fees, the cheapest OS's I've found are Windows CE and several offerings of Linux. The big question that I can't answer is, 'How much will these platforms cost in sustaining activities?' In three years, when we're fixing bugs or applying patches, how much will we be paying vendors and how much will we be spending on internal developers? When the Linux kernel is at version 3.0 and our device is still running 2.6 -- or when CE reaches .INFO and we're still at .NET -- will support even be available? If anyone has past experience picking an embedded OS for a screen-and-button based electronic device, what did you learn to stick with or avoid?"
This discussion has been archived. No new comments can be posted.

Choosing an Embedded OS for Sustainability?

Comments Filter:
  • by Anonymous Coward on Thursday February 16, 2006 @08:07PM (#14738184)
    You are asking the Slashdot Fanboys to tell you what to choose between Linux and Windows CE? Are you for real?
    • There's more to embedded operating systems than just Linux. QNX [] and BSD [] come to mind first. There are actually very many including Symbian, Virtuoso, VxWorks, Tron and dozens of others. Even MS tries to make one, called WinCE, though unlike the others it's only used only rarely and even then only for the humor value.
  • VM/370 (Score:2, Funny)

    by Anonymous Coward
    I found VM/370 is the ideal. Rock solid and free to boot. Highly recommended.
  • The Mac Mini has nice embedded OS. :P
  • Hmm.. (Score:3, Insightful)

    by Anonymous Coward on Thursday February 16, 2006 @08:10PM (#14738206)
    Well, one viable OS the author of the article is forgetting about are the BSD variants, specifically NetBSD if you're wanting to use it on an embedded device. Many people have been using netbsd on various devices, which even NetBSD supporting suspend on some. I believe the author needs to take a look at what he is really wanting however. Money is the main goal in any project. Please take some time to think, "what is the easiest and best way to deploy while making a profit?"

  • by Deathlizard ( 115856 ) on Thursday February 16, 2006 @08:14PM (#14738235) Homepage Journal
    If longevity is the #1 issue for your app, then your best bet in the long run is Linux simply because the kernel source code is available to you and can be customized to work exactly and naively for your application. Even if a kernel update comes out, it shouldn't be too hard to upgrade to it since the source code is available to make migrating to the newer kernel easier.

    Keep in mind, that if code security is an issue, Linux may not be an answer since any kernel changes has to be available for public use. If no kernel changes have to be made for your app however, I don't think it would be a problem however IANAL. Other people here could answer this question a lot better than I could.
    • If longevity is the #1 issue for your appt hen your best bet in the long run is Linux simply because the kernel source code is available to you and can be customized to work exactly and naively for your application. No. If longevity is important then Viagra is what you need. No need to worry about source code or customization. It just works. Newer models last longer ;)
    • For longevity (and feature set, and good design, and portability) pick Inferno [].

      Limbo, its language, is c-derived, but safe. The network model makes sense. And it's mature as an embedded platform.

    • We've used an embedded linux (powerpc) for over 6 years, deployed in millions of units. No one needs to even know that it's there, in fact people think the company I work for is 0wn3d by MS...but linux has been lying there all the while doing things no one really wants to mess with (management GUIs etc.) It's survived through high attrition and remains up to date.

      The only issue are still device drivers, that is always the achilles heel of open source. MS does a good job of helping certain companies not rele
    • Even if a kernel update comes out, it shouldn't be too hard to upgrade to it since the source code is available to make migrating to the newer kernel easier.

      Keep in mind too that if they decide to change hardware platforms then they can fix bugs in the old code that make prevent them from doing the port if the cost of taking the new kernel is too expensive.

    • Here is the problem I see with linux for this application. When your hardware dies, you'll have to replace it. Chances are your 2006 Linux kernel won't support 2008 hardware. That's fine and a common problem with all OSs, the problem with linux is that the APIs the kernel presents to your applications is also likely to change enough to break your applications. Stability of this API is something that Linus has said he isn't interested in.

      I don't recommend Windows CE for obvious reasons. It is expensi
  • Hire An Expert (Score:3, Interesting)

    by Some guy named Chris ( 9720 ) on Thursday February 16, 2006 @08:21PM (#14738271) Journal
    I'm guessing nobody in your organization has ever developed an embedded app, or you would have industry contacts, real world experience, and better things to do than post this to "Ask Slashdot".

    • Re:Hire An Expert (Score:4, Informative)

      by bsd4me ( 759597 ) on Thursday February 16, 2006 @09:11PM (#14738620)

      There is a lot of truth to this. A few years ago, I joined a project team after development had been underway for a while. Most of the people had no embedded experience, and I had to spend a lot of time redoing things that would have been OK on a general purpose system, but were nightmares under an RTOS. There a lot of programming fields where speciality and experience matter, and embedded systems is one of them.

      • Most of the people had no embedded experience, and I had to spend a lot of time redoing things that would have been OK on a general purpose system, but were nightmares under an RTOS.

        You just described why Linux can never suffice as an embedded RTOS. Too many 'general purpose' fingers in the code. I have seen this in the past as well.
    • That guess is highly accurate. I'm the only software engineer here, and all of the embedded work I've done in the past has been on OS-less targets. This time around, that simply isn't an option due to time constraints and peripheral connectivity issues. The only truly embedded OS I've personally used before is QNX. QNX is great, but way too expensive. In fact, VxWorks and pretty much all of the usual suspects just cost too much, and are overkill for what we need.

      Based on cost, board support and driver avail
      • Re:Hire An Expert (Score:2, Informative)

        by AgentCooper ( 167258 )
        I'm a developer on the Windows CE team at Microsoft.

        Microsoft offers a minimum of 5 years support for Windows CE. Beyond that you can get up to 5 more years support (at additional cost). Click here [] to read more about how we support Windows CE.

        We're active on the newsgroups as well, as are many of the more experience developers who've used CE in their products.

        I'm not familiar with ETX hardware, but we have excellent support for x86-based CPUs and the usual peripherals. You can even add device drivers to
        • So in other words this is a highly biased suggestion, by a person whom may not even have any experience with any of the more tried-and-true embedded OS choices? The very fact that you can download most of the tools means you have a very limited number of tools available. What about JTAG? Do you offer an ICE?

          You're asking him to spend time checking out an OS put out by a company with very limited experience wrt developing embedded OS's. Remember, "Time is the most valuable thing a man can spend. -- Th
          • OK, I'll bite.

            Very limited experience with developing an RTOS? CE has been in the field for 10 years.

            No experience with the other options? Do you think Microsoft hires people who are ignorant of their own field? Speaking only for myself, I was a firmware developer in the cellular industry prior to coming here, and have a long background in Unix and non-MS embedded systems. Many of us do.

            Tools download - actually the tools are substantial. I'd order the DVD or set of CDs, but I know some folks would rat
      • You seem to think you need a vendor for Linux. Its possible, but its also possible that the sort of support you need is actually from the community around the embedded Linux distro. I've worked on a product using uClinux, which we chose for its support for the Coldfire processor and its networking. The core developers of uClinux use it for their companys firewall and router products. The community around it oferred enough support so I could write drivers to interface a few bits of unique hardware.

        That was i
      • Have you looked at inferno?
  • Device Drivers (Score:4, Insightful)

    by bsd4me ( 759597 ) on Thursday February 16, 2006 @08:22PM (#14738279)

    I would pick the OS based on whichever has the best device driver support for everything in your product. Device driver development can chew up a lot of time. You would be better off spending resource time on the application layer of the product.

  • Source code (Score:3, Insightful)

    by sunderland56 ( 621843 ) on Thursday February 16, 2006 @08:26PM (#14738309)
    If you really want it to be sustainable, use something where you have access to the source code. Even if you don't want to modify the sources, just having access can help you track down obscure bugs.

    So of the two you've listed, clearly Linux would be your choice. Plus, don't forget that Microsoft's embedded OSes reinvent themselves every few years - just wait until they throw out CE and sell you Vista Embedded next year.

    There are other choices based on the size/scale of your project - such as Nucleus, which gives you source access.

    • Uhm, that would be ALL of the source code in this case. Actually Microsoft is making at least parts of it available to OEMs after buying Platform Builder. Under NDAs, of course.
      • Unfortunately there's a lot of misunderstanding around this. IANAL, but I am a Windows CE developer at Microsoft.

        The majority of the Windows CE source code is available (2.5+ million lines). It's free and there are no restrictions. Code includes:

        Explorer Shell

        HTTP Web Server

        SOAP and uPNP Protocol Implementations

        UPnP AV toolkit

        Infrared Data Association protocol

        Dynamic Host Configuration Protocol V6 Lite (DHCPV6)

        Wireless Network Drivers, including Blu
      • Short answers are not the whole story.

        Half-truths are sometimes worse than the whole truth.

        True: Shared source code is free, apparently without restrictions.
        Also true: You need to buy a runtime license for each and every device that you ship.[1]

        [1]: From the webpage you link to:
        "A valid Windows CE 5.0 runtime license must be purchased for each Windows CE 5.0 derivative work prior to distribution.".

        From link to "How to Buy Windows Embedded Operating Systems" [] on the same page:
        "Step 4
        Acquire runtime licenses f
    • Your comment about source code is very true, and highly relevant to sustainability. However;

      Microsoft have been selling CE for some time now and show no sign of throwing it out. Embedded NT/2000/XP have been parallel offerings for those who are willing to have a much bigger system - only marginally "embedded", really just a customised desktop build.

      They do release new versions of CE and mostly forget about the old one, but the new ones are pretty much straight supersets of the old, with quibbles. Since with
  • by Anonymous Coward
    Why limit yourself to Microsoft and *nix? There are literally more than 100 operating systems that will run on "standard" PC hardware.

    What you need to do is list out the features you want from an OS. Once you have that, a quick visit to the web sites of various OS vendors should help you quickly narrow your list down to a dozen or so. When I had to make this decision, I found the vendors were happy to send me API documentation, programming manuals, and in some cases, an evaluation copy of the OS itself.

    • by Anonymous Coward
      As the last AC said it. List your needs (include your boss' needs too - as secondary to begin with ;-P ). Then search for an embeddable OSes that most closely meets your needs. After the list has narrowed down to four or five OSes, apply your boss' needs to limit the list to two or three AT MOST.

      You really can't go wrong with Linux, but that can not be said for all other OSes, though some come close.

      You can always fall back to the most used OS in the world ... CP/M! It is the Mother and Father of Microsofts
    • Nucleus is really more of a fancy scheduler than an OS. Don't get me wrong, it's very good at what it does, but it won't give you things like, oh, drivers, memory protection, separate processes (all threads run at the same level as Nucleus and share memory with it). For people looking at Linux and CE, that's a bit bare.
      BTW, Nucleus Plus (scheduler) may be very good, but Nucleus File (their FAT filesystem extension), is pretty fucking bad. It is slow, buggy, and extremely lacking (silly things like assumi
  • I recommend you go with Linux over CE. I've had experience embedding both and I don't think there's much of a comparison. Linux may take more work in some cases but ultimately you can be assured it will do what you want. CE shifts with the Microsoft winds and there's no guarantee your hardware will be supported down the road. Now, that being said, if you're developing a PDA or other graphical device where user experience weighs in over flexibility of hardware, you may want to seriously consider CE. How
  • If your main concern is support, then Linux. Linux never reaches end of life- even if red hat decides to stop support for a specific version, 3rd party vendors can still do it.

    Now if you need hard realtime capabilities, neither. Use QNX, VxWorks, or ThreadX. Just be prepared to pay. And pay. And pay.
    • There's a pretty nice RTOS called uCos-II from Micrium that's not as ridiculously expensive. No per-seat licenses, but you may need to purchase the book. The license fee is per product line.
    • Now if you need hard realtime capabilities, neither.

      Why not? Ever heared of Xenomai []? With Xenomai (formerly kown as RTAI-fusion) you can write user-space apps in Linux that can switch hard real-time mode on or off seamlessly. You can basically forget about VxWorks, QNX and other hard-RTOS's, since Xenomai has API "skins", that can be used to run software written for your favorite RTOS directly on Linux; just as reliable and predictable, with truely deterministic real-time behaviour. If your favorite RTOS

  • by eric76 ( 679787 )
    How about QNX?

    I have no idea what the prices are, but it is reportedly the most superstable embedded platform available.

    If I were building embedded devices for critical medical applications, I suspect QNX would be my only choice.

    For less critical applications, I'd still keep it in mind.
    • I am a huge QNX fan. We used QNX for our DARPA Grand Challenge vehicle [], and were very satisfied with it. It's perhaps the most elegant operating system on the market, it's solidly reliable, and it's usable for embedded systems from microwave-oven size to Cisco megarouter size. It's a true microkernel, with less bloat in the kernel than almost anything else out there.

      But, sadly, I wouldn't recommend QNX for a new startup that doesn't absolutely need hard real time. Since QNX was acquired by Harmon (the

      • by grub ( 11606 )

        The lead architect of QNX died about two years ago, and there's been a brainpower exodus since then.

        If you're talking about Dan Hildebrand, it was more than two years. I'm pretty sure it was 1998. He was the man that first got me onto *nixish systems when he installed a 'demo' version of QNX on my old 286 (AT) way back in the day when he still lived here (Winnipeg).
  • for the last 5 years or so. Unless CE offers you some turn key solutions that are really appealing and not found on Linux, then embedded Linux is for sure the way to go.
    Simply speaking, you will get no support from Microsoft without dumping bucket loads of cash & if it isn't the latest release of the OS then you have no hope at all. The MS newsgroups are many times poorer for support than Linux mailing lists.
    At least with Linux you can hire someone to work on old code, because you have the code!

    MS onl
  • by ifdef ( 450739 ) on Thursday February 16, 2006 @08:50PM (#14738468)
    I've worked on products that had no OS at all, just a loop that called various functions in sequence. I've worked on products where the company wrote the realtime OS from scratch. I've worked on products where the company used a commercial OS, but bought a source code licence. I've worked on products which used an off-the-shelf Microsoft OS. It all depends on your requirements.

    Are there realtime requirements? Do you know what hardware will be used, or will you need to support different kinds of displays, for example? What are the reliability requirements -- will this be used in life-critical applications, or will it be used for games? Will you want to upgrade to the latest version of the OS from time to time, or will you pick a good one and make zillions of copies of your product based on that one version? I'm sure there are other questions you should be asking yourself (help me, fellow Slashdotters).

    Figure out your requirements first, then figure out how to meet those requirements. Don't just pick a solution and then try to make it fit.
  • QNX is a long running Posix-compliant real-time OS, complete with embedded developement tools. But if you need to keep the sourcecode "tight to your chest" the *BSD license allows that, i.e. it's free to you, but you don't have to give out your changes if you don't want to.
  • I dont get your question.

    Linux for example will run for a long time while support for it (as in knowledgeable people) will remain available. I think 20 years later people will still be easily capable of fixing kernel 2.6 issues. How many people do you know know how to fix issues with windows 3.1?

    If you want the OS to change very little over time, BSDs are better at that. Expect OpenBSD to be around and to change little in 20-30 years. It'll change enough to accommodate the new hardware etc but thats it. How
  • How about DOS? (Score:3, Interesting)

    by Ritchie70 ( 860516 ) on Thursday February 16, 2006 @10:20PM (#14739042) Journal
    Semi-serious, semi-not. DOS runs a lot of embedded systems, because it gives some really basic hardware support (file systems and booting, really) but still lets you get direct to the hardware. My employer has somewhere around 65,000 MS-DOS systems in the field.
  • Microsoft moves their "A" team to the latest version of their OS. In your example, you will be left with "B" (or "C") team support resources. I worked on a CE device from 2.1 through 4.0beta; there is no realistic option but to move forward in lockstep with MS.

    With Linux, you can still find support for the 2.4 kernel, and products are still moving to 2.6. Transitions can be managed at your pace; you can have all of your platform's source code in revision control, building everything from scratch indef

    • We tried that. We got tired of saying "mu-COS" dozens of times per day.
    • Incorrect. uC/OS II is not free. Did you even look at the site you posted?
    • I tried to go to that site.

      It presented me with a page with a big blank white screen and nothing on the screen.

      I am browsing from a NetBSD machine using a current version of Mozilla.

      I have to assume that the web page is supposed to load some sort of Flash animation and/or proprietary mess that I don't have a 'helper' installed to make work.

      They expect to IMPRESS people with a home page like that? They think they will get CUSTOMERS that way? Without even providing a 'bail out of the bullshit and take me to
  • Since you're not likely to see many favourable comments about Windows CE on here, I'll chuck in some.

    Windows CE is actually fairly cheap now if you go for the basic version - that is kernal-level only, no GUI or desktop - only about $3 per unit. Sure in cost sensitive cases that could still be an issue but for most specialist apps it's not significant.

    You do have to buy Platform Builder for around US$700, but that's one off. And you can get a free 30-day eval to see if you like it.

    WinCE is basically really
  • #1 - All OS platforms suffer from Kernel upgrade syndrome, so make sure you have the complete source code to your kernel.

    #2 - Over time licensing costs will add more to the price of your product then you think. Get a flat fee license arrangement so that your license cost is fixed for the life of the product. Or use a no-license fee needed platform

    #3 - Note that the Linux Kernel development path is maturing and slowing down. 2.6 is very featureful and will be an ok place to be for a long time.

    #4 - Securit
  • I have been developing embedded systems for over 20 years and I have never seen the need to upgrade the OS. Never! The beauty of an embedded system is that the user does not see the OS and really does not (or should not) care what it is. You are going through a development cycle and if you do your job well, you will be fixing most problems during the development cycle before the first release and immediately after. Over the years, you will be in a maintenance mode and you will only be fixing some functional
    • One of the rare occasions where real insight from significant experience appears in Slashdot!
    • It depends a LOT on what said embedded application is intended for.

      If your embedded OS goes into a home appliance or some stand-alone application, your experience holds fast. If the application is net connected and world-visible, i.e. the controller in an internet-enabled vending machine, then your experience and opinion is lacking. It is NOT acceptable to 'screw down the lid and forget' about a net connected app, especially if a widely-used OS is embedded. Exploits WILL surface, and maintenance of the s
  • If you are running on comodity x86 hardware, look into eCos. You can go open source of commercial (with someone like [] eCosCentric). Full source code. Lots of drivers. Easy to understand API. I have worked with nearly 2 dozen RTOS's, and this one is one of my favorites.

    I also strongly agree that you never, ever consider kernel upgrades to a shipping product (any more that you would replace the CPU or whatever in the hardware design). What you really need to think about is how to ca

  • I would start with at D=163700590 [] Some BSD variants and uCos weren't included, but it's still a great survey of the embedded OS space.
  • I've based my own harddisk image cloning software (g4u []) on NetBSD, and I didn't regret it so far. I've started with NetBSD 1.4 some 5 years ago, and I'm still very happy with it. Latest versions of g4u are based on NetBSD-current for getting support for new hardware earlier, but that may not be required for your type of application.

    In general, I can only recommend NetBSD, as it not only comes as a rock solid operating system in itself, but as it supports many different platforms and crosscompiling of ker

Air is water with holes in it.