Is (Embedded) Linux Worth The Effort?
Embedded Geek writes "Embedded Systems magazine is running an interesting story about building an embedded system (specifically, a diagnostic tool for auto mechanics) using Linux. Despite the foreboding title and tagline ('If your embedded system doesn't need networking and storage, porting Linux to your hardware may not be worth the effort'), it offers a balanced look at how the engineer implemented his solution and observations on each step. Interestingly, his discussion is as much about embedded design philosophy versus Linux's philosophy, pointing out where each meets or diverges. A nice read."
But you don't need Linux just because you need TCP/IP networking. RTEMS has that, and so does eCos. Likewise, file systems. So, the real question is whether you want to run off-the-shelf programs that expect a full Posix environment. Furthermore, even if you do need a Unixy environment, NetBSD may be an equally good choice, or even a better one. (E.g. NetBSD works on lots of chips that have no mature Linux port.)
Asking the right questions is the only way to end up with the right answers.
Maybe, but most people ask that question based on what they know and what they have available to them for hardware. Especially things like fuel injection programmer for a motorcycle or car, for example. You are basing needs on pre-existing conditions and equipment and what will âoedo the job.â And chances are, computers are what you know least. Meaning, you know just enough to get by. Things like Tuneboy run on laptops running some kind of WinO$. I would love to see something like it on a dedicated unit that would save maps, but am not to that level of knowledge yet. And if it was open source? Even better.
"All I want is a warm bed and a kind word and unlimited power." - Ashleigh Brilliant
Although not mentioned in the article, licensing costs per unit do play an important role in many companies' decision. I know of two companies here in NZ who were offered substantial discounts on the OEM licensing of WINCE on their devices only after considering Linux (for access to its TCP/IP stack, and other comms facilities). If you're planning on selling like 100 thousand to a million units, the difference between 10 bucks NZ per unit licensing fee and 3 bucks NZ per licensing fee makes a huge difference.
Of course, zero dollars per unit is even better, and access to RTOS source for zero dollars is even better, but it turns out that it's perceived by companies making these devices (who typically often have more EE's who happen to know how to program, than, say, linux kernel and device driver experts, or experts in some other RTOS) that it's better to take a small hit (3 bucks NZ per unit) on the proprietary embedded OS per unit than to have to develop the expertise in-house that they would need to in order to really take best advantage of an open source RTOS. It's when they're looking at having to take the big hit (10-15 bucks NZ per unit) that Open Source becomes more attractive, but that's precisely the point at which M$ is willing to lower their price per unit on WINCE.
Were that it weren't the case. What we really need is a big player who is willing to actively offer to these companies licenced support on an embedded linux at a lower cost than what M$ can do. By "actively" I mean having people on staff who will phone up the engineering managers of these companies and make a deal with them to supply kernel and device driver support, and to train their staff at a lower cost per unit than M$ will charge for WINCE. Then we'll start to see greater growth in the embedded linux market.
It's the steep learning curve for Open Source RTOS and the perception of lack of ongoing support that makes these companies willing to pay for proprietary embedded OS's, unfortunately.
Murphy (the author) claims that the /dev/xxxx metaphor isn't suitable for A/D, or memory mapped registers.
He seems to have forgotten block devices. Block devices can be mmap'd and manipulated as he would want (the device driver writer would have to permit such access). Also, chara devices can do very well for A/D if you use realtime signal delivery.
(RT)Linux, NetBSD, QNX: they all do this.
Modern unix-likes are more flexible than one might believe.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
I truly fear (for the sake of the market, not my life [yet]) the companies that say "well, we'll take this processor, these support chips, then just slap linux on top of it and be done with it. After all, all the components we picked have drivers in the kernel." Without someone who truly understands all the pieces they're pulling together, we have the hardware analoge of much of the open source software built today - a mismash of tools in varying states of quality with some glue and new logic slapped on top. This leads to poor (well, I'll say "incompletely tested" ;-)) software, and would lead to a similar state in hardware.
I'm not at all suggesting that you should develop everything in house so someone understands it all, or that you need someone with a vast amount of knowledge covering all sorts of different chips etc to do embedded linux. But I do think if you're doing hardware integration using linux you should take every driver that touches the hardware you pick as your own. That means analysis, auditing, testing, etc. Many companies don't do this, and its a dangerous practice.
I think that there's truly a need for "trusted" platforms in the embedded market. That is, for a given SBC (single board computer) you can buy a BSP (board support package) that says here is a known tested and working configuration with a linux kernel on it. I think this is where the "exotic kernels" come in. Different projects have different needs, but most of them overlap with somebody else. So it makes sense to have a third party do the integration. This is the way it works with most commercial RTOS - how many companies buy the source to VxWorks, let alone patch and compile it themselves?
The government has finally figured out that (C)OTS (off the shelf) is the way to go, I wonder why so many companies still roll their own?
I would tend to disagree with the statment that most embedded items DO require networking. Not really. Does a portable MP3 player need network support? Or the ABS system of your car "I am talking TCP/IP not CAN"? Would you want your microwave on your net work? :)
There are many stand alone devices that run just find on a 8k 8051. Linux is not always the best possible solution for a problem. It is a good solution for many. For really critical things that can kill people. I would want the SMALLEST possible RUNTIME I could get. The fewer "features" and the fewer lines of code the less chance of nasty bugs. I want my ABS to be run by a computer that ONLY does ABS. I do not want it to play MP3s and serve webpages as well
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.