When Appliances Revolt
conaone writes "From the "disconcerting" file, Baseline has a weird story about how the increase in use of embedded operating systems is causing strange things to happen to consumer products. Their example is the use of Windows CE in the BMW 745i, which apparently occasionally goes nuts. The best is the list of video clips showing off the possessed car."
In an attempt to sidestep the "Windows + (vehicle) = crash LOLOL!!!!111!!one" line of comments, which I'm sure there will be many of, I'd like to ask why you need an "embedded operating system" to begin with.
What is so preferable to this approach than more traditional imbedded computer systems? Does the functionality of the system really outweigh the overhead of an entire OS/computer system? Are they really doing anything a halfway decent microcontroller unit can't handle?
Maybe the developers are just too lazy to build their systems "from scratch" like they used to. I personally can't see the benefit of using an embedded OS. What am I missing?
=Smidge=
So, some months ago I got a chance to drive one of the new BMW 745's and apart from the subjective opinion that the car was *ugly*, the user interface of the iDrive system was awful. Beyond that the iDrive system takes over a whole host of functions that do mimic the Windows paradigm. For instance, to complete an action that should be relatively straight forward, like change the radio station, or change the settings of the climate control system I had to make three or more separate actions in a menu driven system. What was wrong with turning a dial? Big dials are fast and I don't have to take my eyes off of the road to do it like you do in the BMW 745.
There are things that probably should not be done in automobiles just because we can and the iDrive is not for use by drivers. It's simply bad design philosophy and for many things like driving a car, they should be intuitive enough to be able to perform a quick safety check, get in, start the car and begin driving. Instead with the 745, I had to sit in the parking lot of the airport for twenty minutes while I figured out just what was going on with the thing and the fact that the manual said it was Windows CE based did not instill confidence.
Visit Jonesblog and say hello.
What a bunch of crap. How do you know that these problems are related to the OS? In all likelyhood, these problems are caused by shoddy programming of the application which runs on top of it. I've seen *plenty* of poorly-written *nix apps crater, on all of the OSes that you mention.
I've run Windows CE on an iPAQ for several years now without a single OS-related problem. For a control group, I've run Linux since early 1994, FreeBSD since 1996, QNX between 2000-2001 and Mac OS X since early 2001. All of these operating systems are quite stable but it's not hard to find a poorly-written application for them.
IMHO, this guy's problem was that he bought a BMW. Recent (1993+) BMWs are notorious for little nags like these. BMW loves to load its high-end BMWs with gee-wiz features but their quality control is horrible. Example: When the M3 convertable came out, my manager at the time bought one and was stuck driving with her top down for a day when the one-touch convertable system refused to work.
I've developed under Windows CE, Windows, Palm, Unix, and 8052 microcontrollers. For reliability I would choose those "platforms" in reverse order. And, yes, development tools, memory optimization, and watchdogs are available for all of them.
OS's are generally for when a single piece of hardware is going to have to do many different tasks. Maybe one user will use it to listen to music, another to burn CDs, another to develop software, another to surf the Internet, etc. Parts inside washing machines and cars, however, are not going to see such variable usage. A washing machine is always going to wash utensils. A car is always going to drive down the road. These are not applications that really require an OS. Some good firmware is all you need.
Using microcontrollers in cars is not new. They've been doing it for over a decade. Only now, when you start contaminating things with OS's such as CE, do you really see a problem.
So, to summarize, it's the worst because it says "Windows".
Nope.
It's the worst because a significnat number of the programmers at Microsoft write unreliable code that Microsoft ships. The result is something too unreliable for life-critical systems.
That's not just an uninformed opinion. I've spent much of my professional life (which started when the logic used vacuum tubes for the DIODES in the logic) writing high-reliability embedded software. (One of my colleagues once commented that I was the only person he'd trust to program his pacemaker.) My wife spent some years dealing with WinCE's bugs at a company that made the mistake of trying to use it in a telephony application. Some of her laments made my jaw drop.
I'm sorry if this annoys you, zjbs14. But an OS that crashes when you pass a NULL pointer (or handle) as an argument that is labeled "undefined" in an interface description is NOT ready for life-critical applications.
In fact, an OS that crashes AT ALL, no matter WHAT an application feeds it, is not ready for life-critical applications.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way