Open Source In Embedded Systems
coxjohnson writes: "Technology Review reports on the OS battle between Microsoft and Open Source for the lucrative embedded computing market. Since 99% of computers can be found in embedded applications, an Open Source victory in this sector could deal a major blow to Microsoft." Good informative overview of the competition for embedded OSes.
There are things which do benefit from intelligence, especially things that control other things. IBM and Carrier are collaborating on an airconditioner which is controllable through HTTP and HTML forms. In a commercial environment, if there was a blackout and you switched to your emergency generators, the facilities manager could turn down noncritical airconditioners to conserve power. If you were going to be working late you could use your WAP phone to tell the air conditioner to turn on a few hours later. This seems frivolous, but if energy prices go high enough there'll be people in CA willing to pay the premium.
I'll give you one appliance I have that is fairly intelligent. My thermostat has a PIC that adapts based on the way my house responds. I tell it to keep the house at 58 degrees all night, and then to bump it up to 68 at 7 am (it then turns it back down after 8:30 AM). Initially, it just turns on the heat at 7am, but gradually, it figures out how long it takes my house to go from 58-68; if that's 20 minutes it starts the heat at 6:40 AM. As the seasons progress, it continually adapts so that it always hits the mark when I ask it to. I love this because I like it to be cold when I sleep but have trouble getting out of bed unless it is warm.
The problem is that it is painfully hard to program. I'm pretty good at this kind of stuff, but I don't look forward to figuring it out again when the battery goes dead. Think of the proliferation of bad interfaces; these are generally because some kind of complex behavior is required, but there isn't money or space for a decent UI and no computing power for connectivity to something with a reasonable UI. And, bad enough as the interface problems are on my thermostat, I'd like it to be even more complicated in behavior -- eventually I'd like a system that controlled heat and cold air to different rooms on individual schedules.
I can give other examples. Many people have systems which control irrigation on a timer. These could well get smarter as the costs go down. Why water the grass after a rain storm, or better yet, why not cut down the watering if there is 50% chance of rain today, or if it is cloudy? You may need to water the grass more when the temperatures are high. Water is likely to become fabulously expensive in places over the next few decades.
Of course, there's even MORE utility for this in an agricultural setting. I had a farmer recently ask me about web enabling some heating equipment he had for some high value crops.
Generally speaking, the consumer part of this is just the tip of the iceberg. Commercial, industrial and agricultural environments abound with things that are already smart but difficult to use, or which really ought to be smarter. Why not have an elevator service which adapted to produce minimal wait times by prepositioning the cars based on statistical analysis? Or which automatically switched some cars into express mode? For all I know new elevators are already doing this; most likely you wouldn't notice.
The degree of automation is almost incredible, and almost all of it utterly invisible to the casual observer.
For example, there is one company that sells salmon to high end restaurants. It has strategically placed several facilities within less than a day's driving distance of probably 90% of their potential US clientele. The restaurant orders exactly the number of steaks or filets in precisely the portion size they want. Meanwhile, workers throw a continuous stream of fish onto a computerized assembly line, where laser scanners develop a 3D model of a fish. This goes into a sophisticated computer model which basically figures out how to cut the stream of fish into pieces that will fit all the needed orders with minimal wastage. Robotically controlled jets of super high pressure water cut the salmon, and each piece is then routed to the container destined for the ordering restaurant.
You, as a diner, have no idea of the automation involved in the salmon steak your eating; even the chef doesn't know. All he knows is that he can order two dozen one pound salmon steaks at 10 AM and have the right number of steaks, accurate to within less than an ounce, ready for the dinner rush.
Ultimately technology like this will allow us to enjoy a higher standard of living with less environmental impact. Go capital!
Oh, and that toaster? I'd like to put my toast in at night and have it hot and ready for me after I wake up in the morning. If I didn't have to program another damned clock. It should also have a smoke detector and shutdown when my toast begins to burn.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Unless my embedded system has a GUI (e.g.: a PDA), why would I _ever_ use a Microsoft operating system? There are plenty of other good choices out there, including (as mentioned above), but not limited to, VxWorks, OSE, various BSDs, some Linux distributions, LynxOS, and a whole bunch of others.
Most of these are (by reputation) faster, more reliable, and more stable, with more embedded-type features such as real-time scheduling and cross-platform support.
Unless I need a nice GUI on my system (and I'm pretty sure GUI-based embedded applications are only a small fraction of the embedded market), I might as well go with one of these. Whether Open Source or commercial win, I don't know, but MS doesn't even seem to be a contender.
Oh, and regardless of open source, many of the commercial vendors (some mentioned above) support open standards such as POSIX, making even more interoperability possible. How about WinCE? Hmmm...
-Puk
ÕÕ
ÕÕ
Of course, a couple of other lessions learned from that job are that you should hire developers who know the platform you're using. Moving a bunch of Win* programmers with no previous Linux experience over to a Linux platform seems to be a recipe for disaster. Also, a clueless manager can spell doom for a project. Well, we knew that from before, but I've never seen a project heading for destruction quite that fast before. It was actually kind of impressive in a morbid sort of way.
Anyway, Linux can be a good choice of environment for at least some embedded projects and if it fits your needs it can save you a considerable amount of money in the process.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
As they have little market share. Linux is competing against other closed source embedded systems, most of which most of you have never heard of. Why? Because they go along and they work fine. Here's to hoping this proprietary stuff keeps going. My Microwave works great as it is. I don't want it to signal 11 on me.
You see, the embedded market is already solid. It is not a fluid entity like say, DB and web servers. The proprietary manufacturers have stuff locked up. MS has little chance to be a big player. Linux has some being a Unix, but it will be a proprietary Linux that even if the code is open, is of no use to anyone else. These guys are coding in languages closer to assembler, not pearl.
not to use Windows XP in embedded MP3 players.
Got friends?