Linux - Embedded & Single-board computerThis forum is for the discussion of Linux on both embedded devices and single-board computers (such as the Raspberry Pi, BeagleBoard and PandaBoard). Discussions involving Arduino, plug computers and other micro-controller like devices are also welcome.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I'd like to provoke and see what other people think.
Could anybody imagine term "Embedded UNIX", lets say, 10 years ago. I don't think so. Meanwhile 'Embedded Linux' today is as normal as 'bagel and cream cheese', even though Linux is essentially another reincarnation of Unix. And it is not because Linux become 'embedded' friendly, it is because definition of the 'embedded' has changed. It used to be that if somebody was doing 'embedded' he was doing something other then desktop (and god save our souls - Windows). Now days with all these lcd-wireless-network-gui-gigaflash enabled gadgets 'embedded', probably, still means not-a-desktop, but it does not mean small device designed for a special function with a limited set of features.
Processors become bigger, less power hungry, cheaper, mmu and virtual memory are given. Then why not to use Linux (or god save our souls- Embedded Windows) on toasters, making them flying a reality.
There is not much difference between 'embedded' Linux and just Linux. Soft real-time features are slowly creeping into the new versions, scheduler become priority aware, etc. Replacing /bin-directory with 'Busybox' doesn't change much, really.
I like Linux on my desktop computer to a degree, but I don't like to put it everywhere just because I can. Managers change system requirements because they heard and want to use 'embedded' Linux, all features are 'free', and you have build-in networking!
But I don't like my toaster fly, I want it to toast my bagel the way I like it without burning, albeit I could fix it by dumping a core file through WiMax.
1) It's free, so there's no licensing costs associated with using it (which is very important if you're producing thousands of units of cheap devices).
2) Linux runs on, umm, anything.
3) Linux, with uclibc and busybox for example, can be stripped down to very minimal memory and processor requirements, again reducing costs and power needs.
4) Because it's well known and open source, it's fast and cheap to program for and configure.
I don't know of any other OSes which can claim all these properties, hence the popularity of Linux in embedded situations.
You're right, though. The advent of surprisingly powerful one-chip systems has enabled embedded systems to run a real Operating System, rather than programmed on the bare metal dedicated applications. It just so happens that Linux is a perfect fit for companies who want to get devices to market cheaply, quickly and reliably.
I own three embedded Linux devices that I know of: My Tom Tom GPS, the routers on my home network (there's two of them, but I'll count them as one), and a digital picture frame thing. Do I care that these things run Linux? No. They were all surprisingly cheap for what they're capable of, and they all Just Work. If that's what happens when you use embedded Linux, then I'm all for it.
My (non-linux) toaster still burns my toast, though.
I would not argue on you point #2, and leave #3 aside even though it is possible to make an argument. But #1 and #4 implying that if it is free then it is cheap, I'd like to contest. I think that it is an illusion that Linux is cheap. Yes, you could get it for free and there is no licensing fees, but it doesn't mean that it brings best possible value. There is a lot of cost in support and maintenance of any code, and Linux based in particular. I should still to see 'an easy bug' in Linux code, the fact that you are using layers of collaboratively written code built during some length of time by different individuals make it really hard to find, and to fix underlaying real problems. I wander how much 'wraps around' are floating out there masking actual problems?
If you need elaborated networking capabilities then, probably, Linux is the way to go. But using Linux because it is perceivably cheap - I don't think so.
BTW. How do they use Linux on devices like TV's? Booting up even stripped down Linux takes few noticeable seconds, I guess they never do 'poweroff' or 'shutdown -h now', it is on even with TV off. Then if you unplug TV from the wall and plug it back, the boot up time will be akin of warming up cathode tubes in old RCA's.
Development will, of course, cost you, but I'd say it's easier to find Linux developers than it would be to find developers for a system you'd built from the ground up in-house. Windows developers are probably more plentiful, but you'll end up paying per-unit for the Windows licenses. The added advantage of using Linux is that bug-fixes are (with the exception of your application code, and any hacks required to get it running on your platform) free - the community fixes the bugs for you.
There is a lot of cost in support and maintenance of any code, and Linux based in particular.
the fact that you are using layers of collaboratively written code built during some length of time by different individuals make it really hard to find
Really? The Linux codebase is largely well commented and clean. It's considerably better than the c I've seen in a couple of proprietary applications. It is this way precisely because of the collaborative nature of its development - if the maintainer can't understand submitted code, it's not going to get into mainline.
Anyway, the proof is all around. Companies are using embedded Linux more and more (smartphones anyone?). If it wasn't the best economic choice, they wouldn't be using it.