
Which Embedded Linux Distribution? 62
Abhikhurana writes "I work for a company which designs a variety of video surveillance devices (such as MPEG4 video servers). Traditionally, these products have been based on proprietary OSs such as Nucleus and VxWorks. Now, we are redesigning a few of our products and I am trying to convince my company to go down the Linux route. Understandably, our management is quite skeptical about that and so I was asked by our CTO to recommend a few RTOSs which have mature networking stacks and which work well on ARM platform. I know that there are many embedded Linux based distributions out there. There are commercial ones such as Montavista, LynuxWorks, free ones such as uclinux, muLinux and some Linux like distros such as Ecos. What is the most stable and best community supported embedded Linux distribution out there?"
Re: (Score:2, Informative)
Coming Soon: Ubuntu (Score:3, Insightful)
Re: (Score:3, Informative)
Eh. Practically any Linux distro could do what this person is asking for without blinking at this point, assuming the CPU is fast enough to keep up. Video isn't really a hard-real-time environment. Where the embedded vendors shine is in supporting custom hardware, which I assume this company is using. That doesn't sound like it's up Ubuntu's alley. Mobile and embedded are not the same thing, though they do overlap.
My advice: talk to several vendors, tell them what you're trying to do, and let them gi
Openembedded (Score:5, Informative)
Openembedded has;
- Been around for a number of years
- Has a strong developer community
- Is used be a few commercial projects, notably openmoko.
- Can builds its own cross compiler
It allows you to pretty easily define your own distro and build an image for it.
Re: (Score:2)
Re: (Score:2)
OE uses tasks (similar in concept to debian tasks) to group packages.
e.g.
http://www.openembedded.org/repo/org.openembedded
Re: (Score:2)
I don't think that patients will be an liberty for him if he makes embedded hardware.
Mod Parent Up (Score:2, Informative)
Dont forget about the GPL (Score:4, Informative)
(karma shields to 120%)
GPL is not a problem ... (Score:3, Insightful)
... except with people saying things like this:
Just a friendly reminder, but don't forget to tell your higher-ups that using a *modified* Linux in their product means they have to release the source. Don't forget that, or you may be in for a nasty suprise.
How friendly/nasty of you. First, you assume the company is anal about the working of their systems or sharing kernel fixes and drivers. Second, it does not matter anyway. They can put all of the stuff they can't or don't want to share into code the
Re:GPL is not a problem ... (Score:4, Informative)
Re: (Score:2)
Re: (Score:2)
Not to side with twitter here, but the GPL says you have to make available the source of any modifications you've made to GPL'ed software if you are also distributing them. If you're not, then you don't have to do anything. Like Google. Although I think the GPL3 will pretty much kill that (I think?).
Now in this case obviously there is intent to distribute modifications to Linux in the device(s) the company will sell, but
Re: (Score:3, Interesting)
Huh? No, GPLv3 has the same terms for distribution as GPLv2. Its main change is the patent provision, which (I believe) requires you to unconditionally license your patents, which apply to GPL code that you distribute, to the people you distribute it to. So if MS adopted some GPL program, added some great feature which they had a patent on, and then distributed this new version, the GPLv3 would require that anyone they distribute this code t
Re:GPL is not a problem ... (Score:4, Informative)
- address patents and how they may affect distribution of code
- close the TiVo problem of tying hardware to a software revision (where people can't truly modify their own GPL code on their own device)
- close the ISP loophole where you aren't really "distributing" your code, so you don't have to share it
We mostly hear about patents, and we heard a bit about the hardware issue when Linux objected to a GPLv3 revision. Not so much makes the news about the ISP loophole. I am not sure what the latest draft of the license does in this regard.
TiVO doesn't distribute source code (Score:2)
As I recall, TiVo "distributes" its modified code every time it sells a device. However, TiVo doesn't give away the modifications to the kernel in their device. Is TiVo violating the GPL? If not, then why does the OP's company have to give away their modifications?
As I recall, TiVo made the argument that they were primarily distributing hardware, and that the fact that the har
Re:TiVO doesn't distribute source code (Score:5, Informative)
Re: (Score:2)
Realtime Control with Linux Considered Harmful (Score:5, Interesting)
Whether Linux is appropriate depends largely on the type of project you're doing. You're probably aware that tons of routers and assorted network gear runs Linux. It might be the best choice if that's what you're doing. But if you're trying to do hard realtime control with Linux... well, if your experience is anything like mine was, it'll be painful.
I did a project with a 266 MHz PII single-board computer [embeddedsys.com] once. I chose it because it had tons of on-board A/D and D/A, and when I ordered it I asked the company [embeddedsys.com] for their Linux drivers, etc, as well (which they advertised). They sent me a customized version of Redhat to be installed on the development machine, and a bunch of tools to set up a stripped down distro on the target as well, using the same libc libraries, etc.
There were numerous errors in what they sent me, including stupid things like configuration files having DOS instead of UNIX line endings. How this got out the door I do not know. But, I could fix all those dumb oversights, so that wasn't the problem.
The issue was that the distro they sent did not include any realtime extensions (a must for my application), so I endeavored to install RTAI [rtai.org] on it. This was where I began to have real problems.
The kernel they were using was old -- 2.2.some-low-number. Assuming this is what their drivers would work with, I found the vanilla source from kernel.org for a nearby 2.2 version, slightly higher, compiled it, no problems. I then tried it with their extra A/D and D/A drivers compiled in: no problems. Then, I tried it with the RTAI extensions (without their extra drivers: Test one thing at a time!) It compiled, but when I tried to run RTAI diagnostic programs the machine would unceremoniously reboot. No good.
"Ok," I thought, "this is a pretty old version of RTAI. Let's try a newer version; maybe that's a little more mature." In order to do that, I needed to use either a 2.4 or a 2.6 kernel. So, I started by trying to build a 2.4 or a 2.6 kernel, again from kernel.org, first, without either RTAI or the extra drivers. First problem: gcc too old. Solution: Compiled on another machine (really, coLinux on my laptop, running Debian Sarge). But after putting the kernel images in the correct locations and reinstalling the boatloader with lilo as you'd expect, the machine would just reboot every time it'd start to execute the kernel. This happened for more permutations than I can remember of 2.4 and 2.6 kernel versions, and configuration options.
Unable to get RTAI working on an old kernel, and unable to get a new kernel to run, (and desperately needing realtime), I ended up putting DOS on the thing and writing code in 16-bit real mode. This gave me essentially unfettered access to the hardware, with fast interrupts, so that, even though people tend not to consider DOS an 'RTOS' per-se, it stayed out of my way enough that I was able to access the hardware directly and run with guaranteeable latencies.
DOS made lots of things harder -- networking and accessing extended memory in particular -- but solving each of those problems proved possible, since I was working with small enough atomic "pieces of the system" that they could be debugged. When I'd been trying to put together linux with RTAI with the given drivers, I was working with a big-monolithic-kernel... running-in-another-mini-kernel, and I could do little more than follow instructions, compile, and pray. If it'd worked, it'd've made my life much easier, but, when it didn't work, I was pretty much at a loss.
If you're on a tight time budget and you've never used embedded Linux before, as much as I love Linux, I've got to say: If you're doing a realtime project, just pay the money for a "real" RTOS.
** If anyone else has had different experiences, I'd be curious to hear them. Though it's too late now, I'd also be curious if anyone has some after-the-fact ideas about why the 2.4 and 2.6 kernels wouldn't execute.
Re: (Score:2)
Re:Realtime Control with Linux Considered Harmful (Score:5, Informative)
When it comes to hard RT extension (even in userland), I tend to prefer Xenomai [xenomai.org] over RTAI. Xenomai has better non-x86 support (ARM is there), nifty so-called skin support for legacy API's (VxWorks, uITRON, ..), and very good community.
Talking about distro, ELDK [www.denx.de] is best what comes to mind. This is industrial grade software, free as in beer and speech, but with commercial support if needed. The toolchain is excellent. What goes into the flash image must be hand-picked because only you know the necessary stuff.
If you are in D/A A/D business, then have a look at Comedi [comedi.org], it is also RT enabled by the comedi-rtdm project.
All these tools/projects are used and backed by industry. I'm a simple user of these tools, and they make my day life happy.
MOD UP (Score:2)
Re: (Score:1)
I have used Xenomai in a real product that shipped for a company that does embedded real-time systems for industrial controls. This was on a Freescale mpc5200 (PowerPC). Worked nicely for our real-time application. A guy named Philip Gerum heads up the project and is a swell guy to work with. If you need real-time support on x86, ppc or arm, then xenomai is definitely the way to go.
Accolades Xenomai!
Speaking of VxWorks (Score:2, Informative)
http://www.windriver.com/announces/rtlinux/ [windriver.com]
Re: (Score:2)
Well (Score:2)
Roll your own (Score:2)
What you really need to pay attention to is your toolchain. Get that right, and you are laughing.
Re: (Score:3, Insightful)
Re: (Score:3, Interesting)
You don't *technically* need anything else, but for development it can be IMMENSELY useful to have a shell and a base set of utils. Busybox [busybox.net] will get you everything you need in a multicall binary under 1MB (dynamically linked
Memory Management Issues? (Score:2)
Maybe not Montavista (Score:2)
Also, you have to pay high per-unit royalties, even though the software is GPL. For this reason, customers don't want to use it.
Why people use Montevista or Windriver (Score:1, Insightful)
As far as support goes, both companies are well known for not providing any serious support. Sure, they'll take your money (usually) so that you can say you have a support contract. But forget getting any real help.
The bottom line i
Re: Why people use MontaVista or Wind River (Score:1)
Try baby steps - Wind River Linux (Score:2)
Some ponderings to think about (Score:3)
They have even has the rt patch [kernel.org] from Ingo Molnar merged into their standard distribution. Sounds like a Gumstix might
not be a bad way to go now that I think about it. And then you would have some pretty good community support. My $.02
Montavista hires spammers (Score:2)
Re: (Score:2)
But at my last job, we used WindRiver. They offer DO-178B Linux . And in our case, we needed DO-178B, so that limits the selections.
Why?? (Score:2, Redundant)
With Nucleus, for example, you spend 99.9% of your time writing/testing your own code. You're on a solid, well-known base that you have prior experience with. Clearly your management has no problems with their licensing scheme or pricing.
If you go to linux, you'll get:
Re: (Score:2)
Nucleus+ is a small closed OS (that means you need to statically link everything you need unless you use something like a Java virtual machine on top of it). It can be OK, but not for everyone.
Also note that I rewrote the dynamic memory allocation from scratch because the one provided with Nucleus
NetBSD (Score:4, Interesting)
RTEMS rather than LINUX (Score:2, Informative)
RTEMS in particular is much closer in functionality to VxWorks so it is likely porting to it would not be a huge job. It is well supported, extremely stable and free from GLP licensing issues.
Maybe not BlueCat (Lynuxworks) (Score:1)
eCos is not Linux (Score:2)
It's a pretty cool little OS, mostly because it's smaller and easier to understand, and hack on, then Linux. That said, it also doesn't do, or even
Roll your own (Score:3, Interesting)
1) build a tool chain using http://kegel.com/crosstool/ [kegel.com]. Note: this uses glibc instead of newlib/uClibc but there are patches to make it work.
2) Download and build the mainline kernel with needed modules compiled in
3) Place onto device.
4) Develop application
5) ???
6) Profit!
Easy! (Score:2)
The one you build... (Score:3, Insightful)
Observation about support (Score:1, Insightful)
Having worked with pSoS, vxWorks, and embedded Linux, I have found the support process to be identical for both pay and free OSs:
1. Ask the provider for help.
2. Ask on a user's group / mailing list.
3. Get the code and fix it yourself.
You will be ignored at stage 1 nearly every time, because the Linux development people are busy, and because your proprietary OS provider has enough bigger, better paying customers that they can afford to ignore you.
armedslack, debian arm (Score:2)
Snapgear
http://ftp.snapgear.org/pub/ [snapgear.org]
armedslack
A couple of things... (Score:2)
Also, eCos isn't a linux distro - it's a bootstrapper like RedBoot. You can use it on ARM, but it's not a full kernel.
Picotux (Score:1)
Choosing a CPU for an embedded project (Score:1)