Mike Hall on Choosing Embedded Linux over Windows 75
prostoalex writes "Mike Hall from Microsoft asks the audience why they would choose Linux over Microsoft for embedded projects. He provides a point-by-point description of benefits of Microsoft's products (Windows CE and Windows XP Embedded) and points out that starting out on Windows-based embedded platform might save development and testing time."
In other news... (Score:4, Funny)
Re:In other news... (Score:1, Offtopic)
Even if it saves development time ... (Score:5, Insightful)
Re:Even if it saves development time ... (Score:4, Informative)
No doubt, and I'll add;
...or pay for the extra hardware needed to run embedded Windows over embedded Linux.
...or, if you decide that even embedded Linux is too heavy, your Linux app can be much more easily ported to one of the other open or propriatory *nix clones out there (*bsd, QNX, ...)^
OT Unix - like OS (Score:2)
This isn't intended as a troll. I'm just curious if what one person would call "Unix-like" another would call "modern."
Re:OT Unix - like OS (Score:4, Informative)
a "Unix" operating system is one that fully complies with POSIX and has been certified as such. in this case, it can legally carry the Unix trademark.
"modern" is probably the wrong word for anyone to call Unix. "mature" is more accurate, as it is a relatively old standard that has survived the test of time. Unix applications written in the early 80's would probably compile and run just fine on any modern Unix-like with few to no modifications (provided the compiler support exists, of course).
Re:OT Unix - like OS (Score:5, Informative)
To have a UNIX-like system, you need:
With those basic attributes, most batch UNIX programs stand a fair chance of working well.
I've worked on systems which implement only a few of them. Porting a UNIX combined file-and-network program to Windows is a massive pain, because the TCP sockets are not in the same identifier-space a s file handles--so you need to handle them separately. Similarly, any system which doesn't have "fork()" means you have to re-write all your co-processing code. AS/400's POSIX interface is particularly misleading--even more so than Windows. On Windows, you can at least run Windows .exe files fairly normally from the POSIX API; but on OS/400, non-POSIX stuff just doesn't work right (or didn't, back in 1997 when I last had to deal with it).
Even when there seems to be a good alternative, it may not work out well after all. So you can't fork()/exec() on Windows... well, so what, you just want to run a program and wait for it to exit, right? So spawn() is good enough, or CreateProcessEx() if you want more control.
But, launching a new process is very expensive on Windows; a make or shell program will be 10x to 100x slower on Windows than on a UNIX-ish system running on the same machine. When you write native Windows applications, you just don't code that way--you use threads, you use DLLs, you do everything you can in the same process image. You do NOT run external programs if you can help it. (You can, of course, do this on UNIX too if you like; but you don't have to....)
So even having [part of] the interface isn't going to save your code--if your application uses features which aren't handled well, or are simulated, it's going to suck on that system.
Re:OT Unix - like OS (Score:3, Informative)
Re:OT Unix - like OS (Score:2)
I believe that in the end it is all about system calls.
In the end, it would be up to these guys [unix.org] to say that you are a Unix OS. The closer you get to meeting the spec... the more "Unix like" you are.
Slashdot-like (Score:2, Funny)
Re:Slashdot-like (Score:2)
Re:OT Unix - like OS (Score:2)
You can think of Unix-y to be: having a certain subset of system calls, having a certain style of filesystem behavior and layout, a minimum set of "standard" utilities, the availability of a bourne compatible shell, the concept of "everything is a file", and
Re:Even if it saves development time ... (Score:2)
Re:Even if it saves development time ... (Score:1)
I don't know. They have been so persistent about thwarting standards and slowly sucking people in to lock-in, that for them to change might be too much to ask.
Re:Even if it saves development time ... (Score:2)
It could happen, but I doubt it will happen within 20 years and who knows what the computing landscape will look like by that time.
Re:Even if it saves development time ... (Score:1)
The world is choosing open standards, and Microsoft is digging itself into a hole.
Re:Even if it saves development time ... (Score:3, Interesting)
Generally seapking, commercial software makes getting things off the ground easy -- it's an important competitive point and vendors pay attention to this. Open source stuff is usually poorly documented, has a fairly rough learning curve , but has many benefits that offset this. In a sense, open source sits somewhere between "make" and "buy" on the make/buy decision continuum. It takes a bit more sweat
Re:Even if it saves development time ... (Score:2)
Re:Even if it saves development time ... (Score:2)
With my engineer hat on, I agree that one size fits all is a bad idea. With my business hat on, then you can bet I'll say fortunately, my product happens to fit you.
As always, caveat emptor.
Re:Even if it saves development time ... (Score:2)
The question is whether you will be able to get access to source code 5+ years from now. Depending on the embedded application you're designing, the lifecycle of the product can be decades - water/sewer valve control systems are a good example of an embedded system that can work without catastrophic failure for 40-50 years. Code maintenance issues are amplified significantly when all of the developers who originally worked on a project are dead. This is the main reason why most embedded applications (up unt
Plain old FUD (Score:4, Interesting)
and ends with:
Re:Plain old FUD (Score:4, Insightful)
Also, he fails consider that Windows CE has licencing issues, and the SDK has its own licence. And you need a licence per developer for the OS that these run on.
Re:Plain old FUD (Score:3, Insightful)
Re:Plain old FUD (Score:3, Insightful)
Re:Plain old FUD (Score:1)
Re:Plain old FUD (Score:2)
I do find it odd that Windows CE is not considered to be hard real time ready.
If you read the story a one thing come out loud and clear.
1. Linux IS cheaper to deploy.
CE maybe a good choice for PDAs but I am really interested in seeing what Palm does. Could they do for Linux on the PDA what Apple did for BSD on the desktop?
In the PDA market going with Windows CE will do nothing but give you a Me too product.
If you get the Xscale c
It is not that simple (Score:5, Insightful)
IMO, choosing your software is not just a matter of point-by-point feature comparison. Some times you need the ability to modify the behavior, especially because embedded hardware is typically somewhat eccentric.
Re:It is not that simple (Score:2)
Re:It is not that simple (Score:2, Informative)
Yes, there have been times that we wish we could modify other parts, but it hasn't been too bad.
WinCE 4.2 does seem to be more restrictive than previous versions -- haven't looked into it too much yet.
I don't know what the license agreements are in terms of modifying the so-called "private" code, as opposed to just the "public" code. If modifying the priv
Re:It is not that simple (Score:2)
It sounds to me like your friend's company chose the wrong OS if they needed to make "hundreds of tweaks" to it.
My recommendation is to forget about Linux and Windows CE and use a OS that was designed from the ground up for embedded use.
Re:It is not that simple (Score:2)
What other OS are you referring to? I'm not picking on Linux, I'm making the general point that traditional OS's are not the most effective choice for embedded systems.
Re:It is not that simple (Score:2)
I apologize if I failed to make myself clear. What I meant is that when a company produces their own embedded hardware (which is the case I describe), no OS in the world will ever support your chipsets because they are unique to you. At least in those cases you need a kernel over whose code you can have full control.
My point goes to a simple pragmatic truth, that no matter how clever something
Re:It is not that simple (Score:4, Insightful)
It's not generally necessary to modify an OS just to support custom hardware. Historically, most embedded OS's were proprietary and not being able to modify the OS has never been a great limitation.
Perhaps the problem is that since general purpose OS's like Linux weren't designed for embedded systems, more tweaking is required.
Re:It is not that simple (Score:2)
Maybe building a device with custom hardware and having to pay developers to tweak an OS that does not support it is a bad business decision. Even if Linux is k-rad.
The keyword here is... (Score:2, Interesting)
Sure, if you're lucky...
POSIX? (Score:1)
IANAD[eveloper].
Re:POSIX? (Score:1)
Re:POSIX? (Score:1)
Truth in bias (Score:1)
Anyway, Geeks use linux to start with, so it's not like they'll take him seriously!
Billy
Re:Truth in bias (Score:1)
GPL less of a problem here (Score:2)
Re:GPL less of a problem here (Score:2)
If that's true, there's not much value to the "community" in forcing companies to release the source either. Perhaps revising the GPL accordingly would help promote OSS/Free software in embedded systems.
Re:GPL less of a problem here (Score:1)
That would make it into the BSD license.
Re:GPL less of a problem here (Score:2)
That certainly wouldn't bother me, but I was suggesting a different treatment of embedded systems vs. non-embedded systems under the GPL.
Re:GPL less of a problem here (Score:1)
Re:GPL less of a problem here (Score:2)
Writing an application that runs on the GPL'd linux kernel does not make that application GPL, you can do whatever you want with it. The only time you have to GPL your code is when you use GPL code yourself, or link to a GPL library, etc.
If you write a driver compilied into the kernel, that
Let's all help MS with their marketing campaign (Score:2)
The whole discussion will probably only be pored over by
This may be redundant, but (Score:2)
Re:This may be redundant, but (Score:1)
For example, there is a bug in the IrDA driver. I spoke with Microsoft, they agreed it was a bug, asked for my code fix, have not yet patched the kernel (last time I looked)
But, our version of the kernel works fine.
PS. The bug is ironically commented that it is a bug in HP printers. Presumably HP was broken at some point, and so Microsoft hacked their code to work with the HP printers, but their fix was incorrect. HP has now fixed it in their printer
What a crock .. (Score:2, Informative)
"the technology leader for real-time operating systems and software development tools for 32- and 64-bit embedded systems."
I'm sure they don't have an interest in picking holes in Linux.
Re:What a crock .. (Score:2)
QNX (Score:1, Informative)
http://www.qnx.com/
Re:QNX (Score:1)
let's see... (Score:3, Informative)
Linux natively uses POSIX-compatible APIs, widely used in the embedded world, Windows XP doesn't.
Linux has no per-copy licensing costs, Windows does.
Linux runs on a much wider range of hardware than Windows.
Linux has a mature, standard set of command line administration tools, invaluable for running and debugging a system over, say, a serial line. Windows XP doesn't.
Those are just off the top of my head. There are probably lots more reasons.
As indigo montoya might say (Score:2)
Re:As indigo montoya might say (Score:2)
It means exactly what any reasonable person would think it means: the Linux kernel runs on a small ARM board with a couple of megs of RAM, on a 16G 64bit machine, or a compute cluster with 256 nodes. The same software, libraries, etc., can run across that entire spectrum of machines.
Windows XP doesn't scale down to a small ARM board with a couple of megs of RAM and no disk. And Windows CE doesn't
Re:As indigo montoya might say (Score:2)
I guess when you said "small" you were referring to the footprint. A system with "a couple of megs of RAM" is not small by embedded systems standards.
"The same software, libraries, etc., can run across that entire spectrum of machines."
Many embedded systems don't have memory management or a processor with p
Re:As indigo montoya might say (Score:2)
We are discussing the relative merits of Windows CE/XP and Linux. Linux scales from systems that are smaller than what Windows CE can handle to systems that are larger than anything Windows XP has been demonstrated with, and it does so with a single kernel and binary compatibility.
Many embedded systems don't have memory management or a processor with priv
Re:As indigo montoya might say (Score:2)
No. YOU have been discussing the relative merits of Windows CE/XP. I simply questioned your claim that Linux scaled seamlessly from small systems on up. I'm not addressing Windows CE/XP simply because nobody has made the "seamlessly scale" argument for it as you have for Linux.
"With Linux, you can run an MMU-less port like ucLinux, or you can use any of a dozen other embedded operating systems with POSIX APIs."
In other words, in real-worl
Re:As indigo montoya might say (Score:2)
Of course you could use that statement to wiggle out of any argument against seamless scaling; even Windows could make that claim. Your not going to convince me that Linux or Windows is seamlessly scalable.
"That's what "seamlessly scale" means when talking about an OS, and it's the best any OS is going to achieve."
Certainly it's possible that an OS could be written that is more scalable than Linux. In any case even if Li
Control at Low Cost (Score:2, Informative)
I will agree, the vendor had a really fast development time. I was happy about all the high level changes they could make in such a short time. It would have taken us longer to code something from the ground up
Porting woes (Score:3, Interesting)
A minor anecdote to illustrate the problem. Yesterday I performed a code review on a trivial piece of code. I wrote the Motif version in three days. They wrote the Windows version in one month. My code (using the horribly "bloated" Motif) was 850 lines. Their code using MFC was 5200 lines of code. Before you blame an outdated MFC and recommend moving to
Re:Porting woes (Score:2)
Next time figure out what their estimate will cost (e.g. 10 people ~ $100K = 1M). Then, if it's a good value give Microsoft the contract, subcontract your employees to Microsoft and pay Microsoft the money they estimated up front. Make them deliver the product for whatever it costs them, more or less than they quoted by contract.
See if they bite.
Our experience with vxworks, XPe and Linux (Score:2, Informative)
for parts of our systems that require submillisecond timings, we use vxWorks (and before that pSOS) because we can easily get to bare metal and control exactly what is happening with interrupts and threads. We use the very basic kernel of vxworks. its very expensive but we are relatively content for that type of application. We can't screw around with these applications so we bite the bullet.
we also have parts of the system that are