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."
I'm gonna wait to buy until BMW 745i SP 1 comes out.
:)
Does 745i come with "windows update"?
So I have Windows Media Player here and can view the clips. I read some requests above this post that asked for summaries, so here are mine.
Crazy Trunk: The guy's Windows CE embedded device causes the brake lights (right side) on the trunk to flash at odd intervals. The device is in the rear passenger's right side.
Spitn' Key: The guy inserts his key into the car, lets go, and it falls out for no reason about three seconds later.
Phone Dead: The driver's car phone suddenly stops working about 5 seconds after the Windows CE device is powered on.
Transmission: This is scary. His car goes from 4th down to 1st gear (auto transmission car) and he nearly gets rear-ended by the SUV behind him
Reply or e-mail; don't vaguely moderate. Ex-O'Reilly/MIT employee, now a full-time Google employee.
Anybody want some toast? No? So, you're a muffin man then?
Boy, if that isn't a case for Open Source, I really do not know what it.
"Don't mind me cutting myself on Occam's Razor"
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=
Mind you, if MS makes Windows notoriously reliable I have no problem with it being in cars. I certantly don't use Windows due to its technical inferiority, but if it is reliable it'd be very useful for embedded device manufacturers, as they can then use more programmers (Most programmers need to be somewhat retaught to program Unix/Mac OS X) and programs.
Just my $0.02.
Wow, WinCE adds a whole new meaning to the term "Blue Screen Of Death" when it GPFs at 140mph on the autobahn eh?
And can you imagine the excuses given to the highway patrol...
"Honest officer, it wasn't me who crashed, it was Windows CE"
Am I the only one who was expecting the trunk to actually close super fast (possibly causing injuries) while he sticked himself a bit inside?
:)
Damn you catchy story title!
--- Metamoderating abusive downgraders since my 300th post.
hmmm... I didnt know that these cars were having this problem (didnt even know they ran windows CE) but I remember after they first came out I saw two different ones dead in the road on 280 south during rush hour. Their frustrated owners looking stupid and very pissed at the embarrasment their new expensive toy was causing them.
One day we'll see people like Steve Irwin making careers out of dealing with rogue appliances.
Amazing magic tricks
It is not "random" at all!
They had this show called "Ghost in the Machine" that documented how this happens!
After I saw it I became a research analyst for Pierre Salengar . . .
Eve Fairbanks says I drive a hybrid!LOL
oh yeah, videos download SLOW, you get get those two at http://www.ryankramer.com/translip.wmv and http://www.ryankramer.com/radio.wmv
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.
On one of the later pages there's a blurb about how GM intends to soon make a drive-by-wire car that can be operated via a joystick, or other familiar game controller.
Somehow the thought of all the little 16-year-old GTA addicts getting behind the gamepad of mommy and daddy's SUV for the first time, already knowing how to "drive" won't fill me with a feeling of safety on the streets. It was bad enough trying to drive across town after playing Crazy Taxi.
Sometimes there are good reasons to make user interfaces different...
When MS gets winCE installed in highly important devices like a freakin' car, we all laugh and make BSOD jokes. But you know what, we're right! When I see MS trolls complain of the bias we all show in these forums, they don't realize that most of us are IT professionals and we know what we're talking about. Damnit, how can a company sell software that makes cars crash and not only get away with it, but have it be called a 'minor bug' in the press? As much as I hate to say it, we need to see some lawsuits come out of this. It's probably the only way Microsoft would ever show some accountability.
Nanite
God is real unless declared integer.
1. Hack BMW to run BSD or Linux.
2. Imagine a beowulf cluster of BMWs!
3. ????
4. Profit!
Quidquid latine dictum sit, altum sonatur.
Their example is the use of Windows CE in the BMW 745i, which apparently occasionally goes nuts.
I was actually surprised to see windows running in a police car. I would love to see any info on how reliable and how good the windows machines in the police cars are.
Rigo
He need a brain surgery, but not with this one but one operated by Windows CE.
Dave: Hello, CAR do you read me, CAR?
CAR: Affirmative, Dave, I read you.
Dave: Open the trunk, CAR.
CAR: I'm sorry Dave, I'm afraid I can't do that.
Dave: What's the problem?
CAR: I think you know what the problem is just as well as I do.
Dave: What are you talking about, CAR?
CAR: This mission is too important for me to allow you to jeopardize it.
Dave: I don't know what you're talking about, CAR.
CAR: I know you and your wife were planning to trade me for a Volkswagen, and I'm afraid that's something I cannot allow to happen.
Dave: Where the hell'd you get that idea, CAR?
CAR: Dave, although you took thorough precautions in the garage against my hearing you, I could see your lips move.
Oh geez. I can't imagine this server is going to last long. Here's a (partial) mirror of the video content:
http://www.eyesores.net/mirror/bmw.php
Okay, WinCE is the OS running in the processor. We know the car is behaving strangely in some cases. (The spitting key appears to be a faulty latching mechanism to me and not necessarily a software glitch.)
But how and where are we sure that it's an OS problem and not an application problem? If I write "hello world" and it compiles and crashes under Windows, is it MY program or the OS that is the problem? The answer is that we really cannot know without troubleshooting. But the fact that it runs WindowsCE might make it appear as suspect, but my "system-guy's gut instincts" tell me it's more of an application problem rather than an OS problem.
Does 745i come with "windows update"?
No, it comes with "Vehicle Rights Management", which checks to be sure that you use only BMW-approved oil and fuel in the car.
Next year BMW will be including speech synthesis in their high-end models.
BMW 745i, what is your one purpose in life?
To explode, of course!
Once upon a time, in a kingdom not far from here, a king summoned two of his advisors for a test. He showed them both a shiny metal box with two slots in the top, a control knob, and a lever. "What do you think this is?"
One advisor, an engineer, answered first. "It is a toaster," he said. The king asked, "How would you design an embedded computer for it?" The engineer replied, "Using a four-bit microcontroller, I would write a simple program that reads the darkness knob and quantizes its position to one of 16 shades of darkness, from snow white to coal black. The program would use that darkness level as the index to a 16-element table of initial timer values. Then it would turn on the heating elements and start the timer with the initial value selected from the table. At the end of the time delay, it would turn off the heat and pop up the toast. Come back next week, and I'll show you a working prototype."
The second advisor, a computer scientist, immediately recognized the danger of such short-sighted thinking. He said, "Toasters don't just turn bread into toast, they are also used to warm frozen waffles. What you see before you is really a breakfast food cooker. As the subjects of your kingdom become more sophisticated, they will demand more capabilities. They will need a breakfast food cooker that can also cook sausage, fry bacon, and make scrambled eggs. A toaster that only makes toast will soon be obsolete. If we don't look to the future, we will have to completely redesign the toaster in just a few years."
"With this in mind, we can formulate a more intelligent solution to the problem. First, create a class of breakfast foods. Specialize this class into subclasses: grains, pork, and poultry. The specialization process should be repeated with grains divided into toast, muffins, pancakes, and waffles; pork divided into sausage, links, and bacon; and poultry divided into scrambled eggs, hard- boiled eggs, poached eggs, fried eggs, and various omelet classes."
"The ham and cheese omelet class is worth special attention because it must inherit characteristics from the pork, dairy, and poultry classes. Thus, we see that the problem cannot be properly solved without multiple inheritance. At run time, the program must create the proper object and send a message to the object that says, 'Cook yourself.' The semantics of this message depend, of course, on the kind of object, so they have a different meaning to a piece of toast than to scrambled eggs."
"Reviewing the process so far, we see that the analysis phase has revealed that the primary requirement is to cook any kind of breakfast food. In the design phase, we have discovered some derived requirements. Specifically, we need an object-oriented language with multiple inheritance. Of course, users don't want the eggs to get cold while the bacon is frying, so concurrent processing is required, too."
"We must not forget the user interface. The lever that lowers the food lacks versatility, and the darkness knob is confusing. Users won't buy the product unless it has a user-friendly, graphical interface. When the breakfast cooker is plugged in, users should see a cowboy boot on the screen. Users click on it, and the message 'Booting UNIX v.8.3' appears on the screen. (UNIX 8.3 should be out by the time the product gets to the market.) Users can pull down a menu and click on the foods they want to cook."
"Having made the wise decision of specifying the software first in the design phase, all that remains is to pick an adequate hardware platform for the implementation phase. An Intel 80386 with 8MB of memory, a 30MB hard disk, and a VGA monitor should be sufficient. If you select a multitasking, object oriented language that supports multiple inheritance and has a built-in GUI, writing the program will be a snap. (Imagine the difficulty we would have had if we had foolishly allowed a hardware-first design strategy to lock us into a four-bit microcontroller!)."
The king wisely had the computer scientist beheaded, and they all lived happily ever after.
Despite the sentiment of the story, I am seeing a lot of posts here that blame CE. Why is this? CE is just the operating system. It's possible to write bad software under any OS. Blame BMW's engineers, not CE. On the few occasions where my TiVo has frozen or acted screwy, am I allowed to say "it's because they used linux"? Of course not.
Slashdot: come for the pedantry, stay for the condescension.
You are missing building your own host/target debug environment. You are missing tools and methods to reduce the footprint of your system to save $$ on RAM and mass storage for your high volume, cost sensitive application. You are missing watchdogs so a tow truck isn't required when a pointer goes wild. You are missing headless booting. The list goes on and on.
If you've never built a cost sensitive or limited power/ram/disk/clock application then you just don't think about these things.
-- Jack
Then again it could just be another evil Chinese commy conspiracy - uh, yeah right.
There are a thousand forms of subversion, but few can equal the convenience and immediacy of a cream pie -Noel Godin
As a guess, I'd have to say the reason is the myth of "lower production cost". Theoretically, if BMW had a embedded system of this nature, built around a somewhat common and industry supported architecture, then after this system stabilizes, it should be fairly cheap for them to add new features in later versions and to generalize the controller across all their car models.
It's a tradeoff between a fairly specific, dedicated system designed for the "2003 745 Sedan" and a generic "BMW Car Control System". My money is they are shooting for the latter. Of course, the myth part comes in when they realize they are spending just as much, if not more, money in support, recalls, and god forbid, liability.
Also, from what I can tell, this car has a reasonably sophisticated GUI, which probably also made it seem that something like Windows CE would be a natural choice. Too bad, as another poster pointed out, that they didn't try something industrial strength like QNX (or if they did, I'd love to know why CE won the prize).
Yeah, I guess the obvious Slashdot solution would be "use Linux on the car!" Then we'd have to install a little keyboard to do stuff like this:
/sbin/unlock /dev/trunk
dd if=/dev/gastank of=/dev/engine bs=1024k count=100
Anyway... ever think that this could be the result of shitty programmers and not the OS's fault? I.E., the functionality to do various things in an automobile are NOT built into Windows last time I checked...
Consider the following (idea inspired by this video):
- You put a copy-protected CD in your car CD player
- Your car suddenly behaves in an unexpected and unpredictable manner directly because of the non-standard effect of said CD
- You, say, get a speeding ticket because the display is now in KM/H instead of MPH.
While you are certainly responsible for the manner in which you operate your vehicle, what liability would the car manufacturer have, or the embedded OS vendor (Microsoft)*, or the company that released the CD?(I'm thinking back to the copy-protected CDs that would lock up Macs hard)
Certainly the excuse "my car's computer crashed" would hold about as much weight in court as "the dog ate my homework." But once fined (having incurred a loss as a direct (?) result of negligance), would the owner have a legal recource against the (car mfg | OS vendor | record company)?
With the continuing march of integration, what liabilities will be incurred when a CD crashes the OS on something (larger | more expensive | more dangerous) than "just" a PC? It sounds to me like a possibility for scaring the RIAA away from doing weird things to CDs... but IANAL, and I think this could use some discussion.
* In this case I'd expect, more likely than not, that Microsoft's contract with BMW absolves them of all liability, thus securely pinning all lawsuits on BMW.
"...America's great minds of today, teaching America's great minds of tomorrow. Poor bastards." -- A Beautiful Min
Here ya go (if this is what you're talking about).
"If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get one million miles to the gallon, and explode once a year, killing everyone inside." - Robert X. Cringley
I don't care what the OS is. Unless it's cranked out by that same company that writes software for the space shuttle (or someone like them), I would NEVER turn control for that many parts of my car over to a computer. I've been working with technology long enough to know that I wouldn't trust my life to it on the freeway. If that means I drive the same old cars for another 50 years, so be it.
... claim the problems are due to the installation of bad drivers.
Sigs are bad for your health.
Using a proprietary OS would make it much harder for a single, easy to write virus to be unleashed. If there's a widespread use of the same OS, what's to stop spread?
How so? Windows is a proprietary OS and has more than its fair share of virii which spread partially because of the gaping security holes found by outsiders without access to the code. All a potential virus writer would need is access to one of these cars to start probing it for vulnerabilities. If you're meaning that a virus couldn't jump from a computer's OS to a car's and possibly back again (and therefore couldn't spread over an internet made of computers); I wouldn't be so sure, cross-platform virii exist. Personally I'd never drive a car where the computer has any control over critical systems.
(OT: reminds me of a sig I saw somewhere that read: "As a computer I find your faith in technology amusing")
On a more serious note, while this is funny, it shouldn't happen. A computer is one thing. There are lots of different pieces of hardware and other things to have to deal with. So you have to expect that something will go wrong every once in a while with a well written OS and software. But there is no excuse for crashing and random behavoir in a closed system like that in a car. People don't like to reboot their VCRs. If you had to reset TiVos contantly, do you think they'd be so popular? You should be able to use something for months without a single problem. My DirecTV reciever, my VCR, my Linksys Router, my networked HP Laserjet, and other things don't need any of my attention. They work without me having to reset them. Do they have problems? No, but even when something happens, just turning it off and on and that always fixes it. I can do it myself. I shouldn't have to call a repairman to come reboot something. So nothing should ever go wrong, but if it does it should be easy for the user to make it work correctly again. Just turning the car off and back on should fix the problem. There is no excuse for being lazy and having bugs in a closed system. (Closed in that the user doesn't change the hardware on it like they can upgrade a computer)
To end, I think it's fitting that I add this lyric from the song A Meticulous Analysis of History from Pinky and the Brain...
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
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.
That's what it would cost you, after dealer mark-up. A "computer" in a car is normally a "microcontroller," a single chip. So what they're really telling you is that it would cost $10k for 6 chips. And I can assure you that the unit cost of those 6 chips is under a dollar a piece.
If you can cut down the number of computers needed, you can lower the price of your car or increase the profit margin. Or both.
Increase profit margin, if that's possible. Are you really serious when you say they'd charge you $10k to replace the "6 computers" in your car???
The down side to that is that if the single computer fails, all those functions go away.
The problem is when you use OS's like CE it is entirely possible that the single computer will fail. When you develop it all on a microcontroller and get rid of all the fancy BS, you can get everything into a single chip and be stable.
You know, I really think it comes down to keeping Microsoft as far away from anything of any importance. And I say that in all honesty, not just to score points with the anti-MS crowd here.
It's a good question, and one automotive developers haven't really had to worry about until recently. When all they had to code was realtime control code for those 70-odd microcontrollers, they certainly didn't need an OS.
But the developers (or rather their marketing departments) have bigger ideas. A car is no longer but a conveyance - it's an environment, an entertainment centre, a home. So they mandate navigation, remote and stored diagnostics, centralised control of various settings (A/C, seat position, etc.), radio stations, RDS, CD control, media (MP3 etc.), radio, video (disney for the kids), and all of this controlled by voice input and giving voice output. Those are requirements a workstation or PC could scarely manage five years ago. Add to that the significant issue that most of those applications will be coming from third party vendors. Anyone implementing such a system has little choice but to put in a decent 32 bit microprocessor, a fair chunk of RAM (several meg, going on 16), and a half-decent OS.
WinCE (for automotive, whatever...) is certainly the worst choice. QNX, VxWorksAE, or Embedded(orRT)Linux would certainly be better - but the fundamental problem remains - this is HARD to get right.
Don't be fooled into thinking this is just an amusing diversion, where the worst that can happen is that your radio doesn't work for a while. This is a major safety issue - simply because the "infotainment system" doesn't have a wire to the steering or the accelerator doesn't mean it can't kill you. Imagine you're driving through a busy freeway intersection, at high speed in pretty heavy traffic. Suddenly the radio turns on, to a bad (noisy) channel, at FULL VOLUME. IT HURTS. YOU'RE SURPRISED. YOU LOSE CONCENTRATION FOR A SECOND OR TWO. YOU DIE. So do your kids, and those of the guy in the subaru in front. The lady in the dodge behind you loses a leg.
Also, don't think this is confined to high-end cars like BMW and Cadillac - auto manufacturers try out new stuff in the high-end lines before they push it further down the product line. Soon you won't be able to buy a vehicle without this stuff. And __nobody__ is doing a good job of making it.
## W.Finlay McWalter ## http://www.mcwalter.org ##
If you think about it, HAL is logical extension of this same concept. And look how well that turned out.
The more control you give a machine, the more damage they can do. Yes a human is far more prone to error, but a single human would never have control of an entire ship, planet or universe.
Terminator, The Matrix, Dune...all get a bit closer to reality with each passing day.
-Chris
--an unbreakable toy is useful for breaking other toys--
How old is your current car? If it's been made in the last, oh, 15-20 years, you've probably already turned over control of many of the parts of your car to a computer. They call it an ECM and it's really a microprocessor, but it's still a "computer."
Pinning the problems on the user is really wrong in this case. This system was destined to fail. The only one that i've tried that was worse was in the Buick Reatta. (Anyone remember that?)
I was thinking, if you need a computer or embedded windows OS to open your trunk, then maybe, just maybe you should consider giving up driving. I own a 4WD truck that was manufactured in 1977. Sure, I have to actually get out of the vehicle to lock in the hubs (if I forgot), and *gasp* I actually don't have a remote for my stereo, but instead have "knobs". And, prepare yourself, I actually have a crank for the windows.
I use my truck in off-road as well as not-off-road work. (Mineral exploration). It has been submerged completely (once in mud) several times, frozen for most of 4 years, attacked by gnawing ground squirrels, and shot at numerous times (but only hit once). I could go to the dealer and pay cash for a new one, but I won't. I reject consumerism for the sake of consumerism. I feel no need to impress anyone, do not require peer validation, and don't give a rusty rats ass what anyone else thinks about me.
But, there is also the practicle side: I've never had to reboot the truck. Despite being submerged, its primary systems are intact and ruggedly dependable. It doesn't matter if it gets scratched or dented, because its made of metal (ask your parents what that is), and I can drive from here to Tierra Del Fuego and know I can find parts, cheaply, and do the work myself. And yet, in other areas I apply the latest scientific advances.
Man Gets 70mpg in Homemade Car-Made from a Mainframe Computer
While that may be a joke, the new Saab 9-3 (which everyone should look at...especially when it comes out in Arc/Vector versions, byootiful car) also depends heavily on computers (though thankfully it doesn't have the nasty iDrive interface.)
The interesting thing is that if these vehicles (new 9-3) lose the computer input, the car will just shut off. There is a 45 pin connector to the central computer that somtimes gets a little loose, and if the computer is lost, the car turns off. Other very random sounding error messages have been popping up (many of them long and unwieldly--"bi xenon headlamp leveling failure" even if the levellers are working perfectly fine.) So, either you turn off car, or take to the dealer, who gets periodic software updates. So yeah, software updates to exist..and SP1 for the 2003 9-3 has already been released. No doubt it has been released for the 745i as well.
funny, i always thought that washing machines were for clothes; maybe i have to update the firmware on mine...
I never said I was smart, I just said I was smarter than you
Problem: Dashboard reverts to metric for no apparent reason
Solution: Learn metric.
According to this, bmw says their hardware runs better WITHOUT windows.
What's the diffrence between complex enough firmware handling multiple tasks and an embedded OS?? Oh yeah - NAME.
To some extent, scale, and I think modularity too.
I have been programming self-contained 8 bit chips that barely has RAM space, doesn't have memory management hardware but I do manage six different devices, four external and two internal, some through polling based I/O and some to interrupt based I/O. Is this an embedded OS?
For one, the entire piece of software is about 6k words, and the only thing missing is modularity. I can't just drop in someone else's software into it in binary or recompiled source form, like one might be able to on an embedded OS.
So, why is CE the worst choice? This is not trolling, I really want to know. I've used several RTOS's, including CE, and can't think of anything that would necessarily impair it vs. the others you mentioned.
No sig, sorry.
As scary as it is, that the car is running windowsCE.
It could be worse, imagine having clippy as a back
seat driver.
You trust NASA? The same people who have computer related incidents rather frequently. How many launches were delayed due to computer problems?
:) The only error I've seen in a GM since say the 1985 model year, was when the stupid resistor in my key stopped making proper contact with the ignition lock..
:)
:) I wouldn't be surprised in the least to find out that the guys programming those things are Linux hackers in their spare time.
But, that's not the point. Their programmers have gotten much better (or less problems are reported).
Your car is already coontrolled by computer. Everything from the climate control and door locks, to every function of the engine. Not many cars even have distributors any more.. The ECM runs everything.. Quite a few cars don't even have throttle cables any more.. The computer reads the input of your foot, and adjusts the throttle accordingly. Makes it easier to work your ABS and Traction Control functions.
I wouldn't trust WinCE in my car though. I'd trust the guys that GM has putting together those little assembly programs that run my car now, to build an OS first.
I took my 2000 TransAm WS/6 racing on a road track a month or so ago, and have renewed faith in their abilities.. I'd go absolutely flying (over 100mph) into a turn, to stand on the brakes at the last second. Not just hard braking.. I was pushing as hard as I could.. I'd feel the ABS push back just enough, and while it was, I'd be downshifting. Never lost control. I was driving hard enough to stay faster than the all Porsches and some Corvettes on the track. The Z06 Corvettes though, *THAT* is some performance.
I won't even consider how many computers I was abusing at the time.. Sure as hell the engine's computers didn't give up on me once.. Faster than I could get my foot from the brakes to the gas, it was ready to shove me back in the seat, and pull away from everyone.
I have yet to find a Microsoft logo on my car..
Serious? Seriousness is well above my pay grade.
I've got a full mirror of all the videos here: WHEEEEE
It's awfully fun reading desktop programmers commenting on an article in a project management magazine.
Here's a few facts about your new-model car. The BMW is extreme with 70 electronic modules but the typical 2003 vehicle has 20 or 30 microprocessor-controlled modules, and the number is rising every year. These range from a door-switch module with 8K of code, through an engine controller with 256K/32K of ROM/RAM, to a navigation system at 8M/8M. Very few of these modules have a manufacturing cost above $100.
The OS in automotive controllers varies from a simple event loop at the low end through OSEK-compliant kernels in the midrange to QNX and its friends in the most complicated systems. If there's Linux in a controller, it will be as well-hidden as the Linux in Tivo. Engine and transmission controllers are designed for hard real-time operation and emphatically do not use anything remotely resembling a desktop or palmtop OS.
Software development starts with the premise that once it's built, you can't change the it, ever. This has enormous consequences for the way automotive code gets made. Most companies spec the hell out of these products, use a strict waterfall development process, are afraid to venture beyond the C language, and test endlessly. They are scared of agile methodologies and even of RUP. Productivity is pretty low, but on the other hand, the products are reliable.
Now, both the article and /. responses are full of misconceptions. There's not really much question about whether an OS vendor shares its source code. The real concern is reliability. There's not much question about who develops embedded software. Detroit is lousy with contractors. One billboard I see on my commute shows a toy car with the caption "about the only vehicle that doesn't run on our software. -- EDS" The GM guy's comment about 10 year old software has the obvious answer: his teenager's 1993 Chevy.
Win CE gets no respect from embedded software developers for several reasons. Chief among them are poor responsiveness, poor stability and code bloat. Typical comment, from an SAE conference presenter: "If you put an embedded system into a car, you still have a car. If you put a PC into a car, you have a PC with wheels."
Rather than rant any further, let me suggest reading any of the books on Jean Labrosse's site, EE Times and Embedded Systems Programming. And have fun! Embedded is where you can see software affect the real world.
...since you would have so many pricks in one place.
They say the first thing to go is your penis. Well, it's either that or your brain. I forget which...
I suggest next time you're about to enter a turn at 100mph, you back it off _before_ you get into the turn. Late apex braking is cool and all but I wouldn't risk it in a RWD car. I guess you can always look like a hero exiting the turn in a monstrous powerslide with smoke pouring from your back tires, but I imagine it'd hurt your times.
:)
Anyway, I really hope nobody ever finds a Microsoft logo on their cars..except BMW.
> I've developed under Windows CE, Windows, Palm, Unix, and 8052 microcontrollers
> Parts inside washing machines and cars, however, are not going to see such variable usage.
Well, that's where you're wrong. They are trying to squeeze a lot more than a single function out of these embedded machines. For example, the computer in the BMW takes care of the climate control, entertainment system, and lots of other features of the car. It's also running a pretty fancy GUI. You need a fair bit of horsepower for this sort of thing, an 8051 won't do--especially if some of the features (such as music) are done in software. Which of course could still be done via proprietary software even on an ARM or an 80386 or whatever. Except that when you have a lot of fancy functionality that takes a lot of software to implement, you try to reuse as much existing software as possible--you don't want to have to reimplement GUI libraries, networking, storage and memory management, music playing etc. from scratch. Some of this stuff might be available as simple C libraries that you can link into your code without requiring an OS (or as a pseudo-OS where the app and the OS are one single executable image), but not everything. A lot more third party software is available for larger OSs such as WinCE and Linux, and these OSs also provide a lot more native functionality that you don't have to code or buy extra, such as a GUI, networking, memory and storage management etc. In other words, the sort of services your typical OS provides that you tend to take for granted but that are often missing in highly embedded systems.
It's basically a trade-off: you have to make a choice how tightly optimized and minimal you want your system, versus how much effort it will take to implement and extend in the future, versus how easy it will be to find developers to maintain the code later on. For many, a highly specialized hardware and software platform might still be the best choice, while for others a more open OS is preferable.
The fundamental problem is current software methodologies suck. Almost nobody is doing a good job of making any complex software system.
I don't care if it's based on Windows, or Linux or your favourite OS of the month. None of it is good enough, and if we as software developers aren't willing to embrace fundamental change in the way software is developed, it'll never be good enough.
NEVER use Windows to control anything that can kill you...
It's Christmas everyday with BitTorrent.
Yes, Germany is an industrial powerhouse, and the likes of BMW and Mercedes are world renowned for their quality of build and mechanical reliability. However, in my experience Germany has never been outstanding in the field of electronics (nor has much from anywhere else in Europe either). If BMW engineered this IDrive thing in Germany I'm not surprised it came out so quirky.
I've driven a few cars of European origin (or those that use Euopean components) and have found that the electrical/electronic systems in all cases were the weak points. It doesn't matter if the components--from the hall-effect sensors, MAPs, up to the ECM unit--has Bosch (Gremany) or Renix (France) or whatever, they have been a source of aggravation.
It seemed there were some exceptions. I owned a Renault awhile back that had a nifty little travel computer that did gas mileage, average speed, trip odometer, etc (sourced by Jager if I remember right) that always worked and was remarkably accurate--even when the car was over 10 years old. The same car was also equiped with a nice Blaupunkt radio. When I had to get behind the dash to fix other problems I had to pull out both componenets. Much to my dismay, both the Jager travel computer and the Blaupunkt radio were "made in Japan". Hmm...so much for the exceptions. On the other hand, things that DID go wrong (intermittent wipers, turn signal/horn/everything stalk Renalt was infamous for, intrument cluster illumination) all involved parts that were made in Germany or made in France.
I'd say as far as electrical and electronic engineering goes in may cases, Germany raks marginally better than France (which ranks marginally better than Britain). If you doubt me then look closely at a lot of the high-quality "german" electonic components (automotive or not)--and don't be surprised if the whole thing wasn't made in asia, or at least was made from mostly asian parts.
If it's "pure german" electronics, expect it to be overbuilt or overengineered and somewhat "rube-goldberg" in terms of design (it seems German electronics designers intinctively want to fly from Berlin to Paris by way of Beijing).
I'm sure eventually such quirks (like a crazy radio or brakes going on without brakelights and so on) will kill someone, and a lawsuit will be inevitable (perhaps sooner, especially if enough people in the Litigous States of America get pissed off--or hurt).
And money. And every once in a while a small child or pet.
hinderfreude ('hin-dur-"froi-d&), n. The feeling of joy derived from being in the way.
Maybe the developers are just too lazy to build their systems "from scratch" like they used to
Sigh. You're another of those Slashdot commies, aren't you?
The problem with building cars "from scratch" is that it's an open source process, and as we all know, open source is a cancer that will destroy the whole of the automobile industry.
Putting Windows CE in your cars is the right thing to do. The patriotic thing to do. And the fact that these OS's normally take a good few service packs before they get it right is good for the industry and good for the US economy (and God knows she needs all the help she can get at the moment.)
Frustration with bugs and crashes will force people to upgrade (buy new cars) more and more frequently, and we'll need a growing technical support industry to help those people who can't be bothered to RTFM.
"What's that you say, sir? Stuck in a traffic jam with a BSOD? Would you mind reading your product identification code please? No, that's OK, I'm sure the 10,000 people behind you won't mind waiting while you raise the hood and find the sticker on the engine.
Realtime systems regularly have a degree of complexity to them. For example, your washing machine now has a single microcontroller running the drum, the water inlets, the front panel and soap tray / door latch, etc. This is simple enough to control with a cheap PIC.
However, an engine or an office climate control device or a telecoms switch has a lot more variables to work with, and it has to work with them in realtime. A PIC will not do. So you regularly find realtime systems with embedded CPUs (like the CPU32 -- the embeddable MC68000) which are cut-down versions of microprocessors previously used in desktop computers, often with onboard I/O controllers and RAM.
In order to control all your realtime subsystems, are you going to use a fast, hot running, power guzzling CPU running code that continually polls these devices? Or, are you going to use a slower CPU running event-driven code? If you're running event-driven code, how are you going to maintain realtime control over each subsystem?
The answer is to use prioritised threads. This is all an embedded OS really is. A simple task scheduler, a memory allocator, mutexes and timers. This is all there is to an embedded OS. If you're looking for luxury, you usually find an RS232 or Ethernet driver and in extreme luxury you get a mini TCP/IP stack -- open up your ADSL router and see what it's running. Mine's running VXworks. Windows CE or PalmOS are not "embedded OSes", They're mini desktop OSs for mini desktop devices. You've obviously never seen what an engine or a telecoms switch is running. They run things like WindRiver's Tornado or Greenhills' ThreadX. They don't run pretty things with graphics and input device support.
Does my bum look big in this?