Linux Distributions for Embedded Development?
FirmWarez asks: "Time to put together a new Linux box. I'm an embedded systems guy. I need to support cross development for a number of embedded platforms, from tiny micro-controllers through Coldfire, ARM, and other embedded processors. Projects will range from 'for work' to putzing around with open sourced consumer gadgets. What Linux distribution would you choose and why?"
The Linux From Scratch project, while not really a distribution is very well suited to this type of task
http://www.uclinux.org/index.html
If this dosn't work on your processor, nothing does.
Wonder what the public key field is for?
Debian's got several cross platform compilers (like the popular avr) available to install. And it's got plenty of other support tools for the rest of the env, and you'll still have the flexibility to install your own stuff cleanly.
But before you jump in, it helps to dig through the platforms you aim to use and see what their official toolchain does, and what exactly is available for linux. GCC is definately popular with cheap embedded processor people, since it means less work for them usually, but sometimes you wind up with closed source tools in a processor gcc doesn't support. In those cases, linux binaries are a luxury. Basically do your research. p.d.o should prove valuable here; I think gentoo has something similar, and Ubuntu I know runs a similar service.
I Browse at +4 Flamebait
Open Source Sysadmin
Go with MontaVista. You'll have to pay for it, but their Linux is used in many industries and by many large, successful, corporations. It's solid, and they have good support.
Here's a list of boards/platforms supported by MontaVista Linux.
There are no uninteresting things. There are only uninterested people.
Hate to reply to my own post, but since prior posts seem to think the OP is asking about embedded OSs... As an embedded developer I choose Arch Linux as a workstation OS because it has a natural, virtually headache-free way to keep up with the bleeding edge of tools (or not, if you like) and an easy way (ABS) to introduce new tools that may not be distro-available.
I've used FC4 successfully to do cross platform development for mobile phones.
... maybe they're around somewhere, but nobody was able to help me, so I aborted my switch attempt.
I tried to move to ubuntu, but it was missing some old versions of libraries*
I 'poo poo' all those 'rpm hell' comments. I use the 'smart package manager' and have no problems, ever :
http://labix.org/smart
Unlike apt-get, it's able to install packages of multiple architectures too (useful for AMD64).
* I'm running FC4 on AMD64, so perhaps that was an issue too - I forget exactly.
Max.
Any decent desktop distribution should work great for what you're doing.
Agreed. Having, "been there, done that", I've used both Fedora Core and Mandrake for this in the past. (Mandrake because this was my main PC and I wanted easier access to multimedia and a slicker desktop).
Most of the time will be spent actually building the cross-compilation toolkit and developing code for the target, so you might as well do it in an environment that you're familiar and comfortable with.
-- Joe
Use the easiest and most up-to-date distro you can. I personally use Fedora Core 5 for cross-development, but RedHat, SuSE, Debian, Ubuntu or whatever is probably fine. You'll need to add (or build) your own cross-compilers and debuggers. Nothing comes with those tools out of the box. And generally for every target, there is generally a preferred toolchain and set of libraries. buildroot (http://buildroot.uclibc.org/) is very handy for building cross-toolchains, by the way.
Things that you'll want to install:
minicom (a serial terminal emulator program)
tftp server (for embedded systems to boot over the network)
telnet (for things that don't include ssh)
cross-toolchains (*-gcc) and cross-debuggers (*-gdb), you'll have to build these yourself, probably.
Then whatever development environment you want. I personally like using Eclipse with the C/C++ environment, since I don't need to manage makefiles or build scripts by hand and it can target native compiles as well as cross-compiling.
My other first post is car post.
Oh!
In that case the question is not very interesting. Any Linux distribution will do, though Debian includes a few pre-built cross-compilers now.
So let's answer the more interesting question that a minor mis-reading gives us: try LFS (Linux From Scratch) for the smallest devices. For something bigger, Debian or Gentoo would be good.
> I use Gentoo on my toaster and it runs great. In about 13 years it will have finished compiling Bash
Go and read something about Gentoo Embedded and stop trolling!
Crosstool – haven't used it too extensively myself, but it did a great job when I had to cross-compile a Linux kernel to run on my AMD64 system. And if you're using ARM or similar architectures, QEMU might be helpful. I may be entirely missing the point here, but may as well offer my own limited knowledge anyway :-)
Creative misinterpretation is your friend.
Is your question aimed at choosing a Linux distro to be targeted for a variety of embedded targets? Or do you mean you want a Linux distro for running various development tools for whatever (non-Linux) embedded projects?
If the focus is on picking a Linux that you want to embed, Montavista is the popular Linux vendor -- it seems like a lot of silicon and library vendors certify/support development on MV. They provide tools that help you with cross-platform configuration management. Of course, you pay for MV.
If you're trying to go "cheap" and are willing to do the legwork yourself, I suggest rolling your own, building the kernel and building uClibc (or glib if you have lots of memory/storage on your target).
If you're main point is to have a Linux desktop in which to do development work, I would lean toward Redhat, if only because it seems like most software vendors certify the software to run on Redhat. If you're running any hardware in your PC, driver support for the hardware will probably require a specific OS (a JTAG tool that I had, for example, required me to run a certain release of Redhat in order to work).
Good luck.
My biggest sympathy goes out to you. If this is your first time, enjoy the additional hairs that will grow on your chest.
We use Familiar as the basis of our distribution. Familiar is nice because it leverages most Debian-ARM packages, so you don't have to do very much compiling, and most of the build system is scripts and easily compilable programs.
u x/
I've personally ported the entire Familiar system to another architecture, too - PowerPC (IBM/AMCC 405 series), and Debian-PowerPC for the most part works. Took me a couple of weeks to create the port, which involved repackaging a number of Debian-PowerPC packages for size.
The ability to leverage a normal Linux distribution, especially Debian (there aren't many distributions that have the immense number of architectures as Debian) saves a LOT of time. Recompiling sucks.
Here are some links - I did a lot of work on the build process.
http://download.intrinsyc.com/supported/iso/i-lin
The PowerPC one is similar to the 4.x releases, 5.0 is ARM only but uses a later version of Familiar, so you'll want that.
For development Scratchbox(http://www.scratchbox.org/ ) is great. Let's you test your code through emulation on host-side and you work in it's own shell as if you're working on the embedded hardware. It is distro independent not surprisingly :)
I took part in building a system that basically acts as an embedded server, but with today's powerful hardware it turns out that we can give our customers less "embedded" thing than we thought of primarily. The system is upgraedable, flexible, tinkerable. We don't put limits on useability. Finally, we went with customized Debian.
The big point is - we can have disk storage.
At the beginning, while we were toying with ideas for a diskless OS, buildroot/uClibc was our favourite. It works well hosted on Gentoo, from what I overheard on their mailing list. Still some rough edges, but they had 1.x release quite recently.
Good luck!