Slashdot Mirror


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?"

56 comments

  1. Comment removed by account_deleted · · Score: 2, Insightful

    Comment removed based on user account deletion

  2. Linux From Scratch by jschmerge · · Score: 3, Informative

    The Linux From Scratch project, while not really a distribution is very well suited to this type of task

  3. You didn't think of uClinux? by diamondmagic · · Score: 3, Informative

    http://www.uclinux.org/index.html
    If this dosn't work on your processor, nothing does.

    1. Re:You didn't think of uClinux? by xenocide2 · · Score: 2, Informative

      uCLinux doesn't support my ATmega128 chips, yet I'm able to program to them just fine...

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    2. Re:You didn't think of uClinux? by pizza_milkshake · · Score: 1

      I believe the parent was assuming Linux-centric viewpoint (welcome to Slashdot); though the AVR chips are fun :)

  4. Re:I am sorry to disappoint you by wed128 · · Score: 1

    He doesn't want to port linux to those platforms, he want's to cross-develop for them on a linux workstation.

  5. Debian (or derivative) by xenocide2 · · Score: 2, Informative

    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

    1. Re:Debian (or derivative) by dhasenan · · Score: 1

      For Gentoo: gentoo-portage.com

  6. Definitely Symbian instead by Gothmolly · · Score: 2, Interesting

    Its cool to use Linux, but the Symbian OS is really the way to go.

    --
    I want to delete my account but Slashdot doesn't allow it.
    1. Re:Definitely Symbian instead by Anonymous Coward · · Score: 0

      LOL! Intentional ?

  7. Arch Linux by soloport · · Score: 1

    Least amount of pain; Most amount of gain. Very easy to maintain (no RPM-hell like issues). Gets out of your way so you can do real work.

    And ABS is a dream to use!

  8. Re:URL by Coke+in+a+Can · · Score: 5, Funny

    Best. Typo. Ever.

  9. perhaps.. Pink Pony Linux? by mr_stinky_britches · · Score: 1

    I heard it rox for what you are doing. Screenshot: http://wi-fizzle.com/images/pplinux.jpg

    --
    Censorship is obscene. Patriotism is bigotry. Faith is a vice. Slashdot 2.0 sucks.
  10. MontaVista by helmutvs · · Score: 2, Informative

    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.
  11. Ach Linux as a Workstation OS by soloport · · Score: 2, Informative

    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.

  12. Re:Not Linux by Anonymous Coward · · Score: 1, Funny
    I use Gentoo on my toaster and it runs great. In about 13 years it will have finished compiling Bash and I will be able to
    # mktoast /dev/slot1
    .

    This will be well worth the wait.

    *sob* I'm so hungry *sob*
  13. Does it matter? by joe_bruin · · Score: 4, Interesting

    You want a Linux desktop/server distribution that will hold your hand and install all the tools for you for embedded software development? It doesn't exist. At this level of work, you should be familiar enough with your tools to install and maintain them yourself. You'll need to know this stuff anyway when you find out that this object file compiled with gcc 2.95 doesn't work with the gcc 3.4 you installed.

    There are two situations here. One is where you just need a development environment and cross compilers. In this situation, it makes no difference which distribution you use. Use the one you're most comfortable with. I've been working off of a 4 year old Redhat machine for all of my work, and just switched to a brand new Suse box, and I can't tell the difference. Hell, sometimes I use my MIPS cross compiler on Windows with Cygwin.

    The second situation is one where you will be trying your software out the dev machine before you have target hardware. In this case, you'll want one whos kernel and the rest of the environment matches what you'll have on your target. You should be putting this Linux system together from scratch. Download a kernel (try the ARM ones), busybox and uclibc. VMWare is also your friend.

    1. Re:Does it matter? by mnmn · · Score: 1

      When it doesnt matter, I use slackware. Some embedded tools are packaged for redhat 9, and I'll use that. Otherwise its all either slackware, or knoppix given its ease and utility, and the fact that its debian, has no shortage of tools and is packaged nicely ( not too many things broken in there).

      --
      "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
  14. FC4 by dwater · · Score: 2, Informative

    I've used FC4 successfully to do cross platform development for mobile phones.

    I tried to move to ubuntu, but it was missing some old versions of libraries* ... maybe they're around somewhere, but nobody was able to help me, so I aborted my switch attempt.

    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.
    1. Re:FC4 by Anonymous Coward · · Score: 0

      Actually, apt-rpm has multilib support now too.
      http://apt-rpm.org/
      Apt for Debian doesn't support multilib because Debian doesn't support it.

    2. Re:FC4 by Anonymous Coward · · Score: 0
      I've used FC4 successfully to do cross platform development for mobile phones.
      Most people use Windows for mobile phone development, so I don't know if that's saying much...
    3. Re:FC4 by dwater · · Score: 1

      I wasn't trying to say 'much', just that FC4 worked for me. He was asking about that, right?

      --
      Max.
  15. Re:Please press any distro. by The+Vulture · · Score: 3, Informative

    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

  16. Keep it simple by Cryptnotic · · Score: 4, Informative

    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.
    1. Re:Keep it simple by Anonymous Coward · · Score: 0
      I agree with everything except minicom.

      Can never remember how to convince minicom that there is not a modem attached to the serial line.

      Much simpler solution is to use cu from the uucp package.

      cu -l /dev/ttyS0 -s 115200

    2. Re:Keep it simple by Samrobb · · Score: 3, Informative
      You'll need to add (or build) your own cross-compilers and debuggers.

      If you're in the "add" camp here, I'd like to suggest you take a look at http://crossdev.timesys.com. This is the free (in both senses of the word) side of TimeSys, where I work; right now, we have freely downloadable releases for x86 and ppc7xx. These include cross-compilers (glibc and uClibc), host system tools, and over 400 target system packages. All the packages are based on FC5 rpms and built using tsrpm, a GPL tool (also available on the site) that makes cross-compiling most rpms trivial.

      If there's something in particular you're looking for, join the mailing list and let us know. We're particualrly interested in hearing about what other processor architecture(s) and target system packages people would be interested in seeing us work on.

      --
      "Great men are not always wise: neither do the aged understand judgement." Job 32:9
  17. Blackfin by Loconut1389 · · Score: 1

    I heavily recommend the blackfin. Well supported, from a good vendor (http://www.analog.com) and runs the latest kernel.

    1. Re:Blackfin by Loconut1389 · · Score: 1

      I should add- it runs uClinux which is the real answer.

    2. Re:Blackfin by Loconut1389 · · Score: 1

      you know what- just ignore me altogether- my adled brain thought you were looking for an embedded platform. RTFS I suppose. eek!

  18. Another nod to buildroot by totalus · · Score: 1

    I have used buildroot for several embedded applications (http://buildroot.uclibc.org/); not only is it good to go for many embedded platforms, it also has a fairly active developer community, and is much more than a simple toolchain (distribution contains scripts to download and compile lots of commonly used packages - pick your target platform, select packages to build, make...(wait)... Optionally tweak the target, install, and you're good to go. It has been an excellent fit for several of our projects. I'd recommend at least taking a look at it before trying to build something from scratch, could save you a LOT of time.

  19. NetBSD is less portable by r00t · · Score: 1

    NetBSD requires a MMU. Linux does not. That shuts NetBSD out of LOTS of embedded systems.

    Even counting systems with an MMU, Linux supports more types of CPU. Heck, there have been CPUs designed explicitly to run Linux.

  20. Re:I am sorry to disappoint you by r00t · · Score: 2, Informative

    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.

  21. hand-holding was very important by r00t · · Score: 1

    5 to 10 years ago, gcc was damn near impossible to build as a cross-compiler. Blame the autoconf shit, which seems designed to make cross-development impossible.

    I hear it's gotten much better lately. Go with something very recent, like gcc 4.1.1, and you might not feel a sepuku urge.

    1. Re:hand-holding was very important by martinultima · · Score: 2, Informative

      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.
  22. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  23. Re:Not Linux by Deorus · · Score: 3, Informative

    > 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!

  24. Embedded Linux? Or Linux for embedded dev? by toybuilder · · Score: 2, Informative

    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.

  25. Re:Not Linux by martinultima · · Score: 1

    Personally I just have an overclocked P4 chip connected to the heating grills in my toaster – I've programmed the handle to activate a shell script which builds gcc, glibc, the kernel, OpenOffice.org, Firefox, etc. (all at once) and makes the thing pop the toast out really fast. Although I tend to use Slackware-based systems on my own toaster.

    --
    Creative misinterpretation is your friend.
  26. Re:URL by Anonymous Coward · · Score: 0

    Think thats good? Try changing the .com to a .org and see the funny. Yeah, I bet _they_ never mess up.

  27. Only the bravest, needs apply... by Dark+Coder · · Score: 2, Informative
    WOW... Forget getting any handholding, this is uber-hacking time!

    1. You're gonna need multiple Linux flavors and versions from multiple sources that specialized in these platforms.

    2. To determine which versions of crosstool (compiler, linkers, debugger), check out The Matrix Guy (Dan Kegel), or more specifically THE MATRIX of workable gcc/g++/ld/gdb.
    3. To ease your pain of figuring out the "./configure" options, definitely checkout PTXDist. Menuconfig is similar to Linux 'make menuconfig'. PTXDist also help to build a root file system in a jiffy, which in my book, is a PLUS!

    My biggest sympathy goes out to you. If this is your first time, enjoy the additional hairs that will grow on your chest.
  28. How about Familiar? by tlhIngan · · Score: 3, Informative

    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.

    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-linu x/

    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.

  29. uClinux by Anonymous Coward · · Score: 0

    We use uClinux at work bundled with an Arcturus networks uCDimm running a Coldfire chip. The number of *nix tools that come standard is amazing and gives us some really good foundation to run our data analysis code on (instrument requires a computer running data analysis). The performance for an embedded chip is quite good, and support (via newsgroups/howtos, professional support) is outstanding.

  30. Re:Please press any distro. by arivanov · · Score: 1

    No, it does not.

    Last time I looked (which was pretty recent) their stuff was supported only on RedHat WS.

    It will run perfectly fine on Debian and derivatives. I suspect that it will run fine on Suse/Novel, but it is "not supported". Main reason is that their primary business objective is delivering cosy feelings to telco vendor midlevel PHBs which look for buzzwords like "carrier grade bollocks" instead of a real product. As such they do very carefully not to mention any such pinko comy distros like Debian and god forbid European stuff like Suse. Anatema. It all has to be "carrier grade" and "enterprise level" tools.

    Windriver is virtually the same.

    This makes them a royal pain in the arse because you have to roll out a working RedHat desktop environment. Anybody who has had to do that for 5-100 developers knows that this is an oxymoron. There has always been something broken in RedHat regarding network client usage in an enterprise environment. In RH8.0-9.0 it was the automounter which blue up magestically with a kernel hang. In WS4.0 it looks to be the combined automount + smbfs mount/umount races and a few other gems. So you either end up patching RHEL to death or bite the bullet and run it on an unsupported platform in first place.

    In either case it is a lot of work and a lot of explanation to be given to PHBs which cannot grasp the idea that "we will not run it on the supposedly supported platform because the supposedly supported platform is shite as a developer workstation".

    --
    Baker's Law: Misery no longer loves company. Nowadays it insists on it
    http://www.sigsegv.cx/
  31. ptxdist uses crosstool... by Anonymous Coward · · Score: 0

    Thanks for the plug for crosstool ("the matrix")!
    And thanks also for mentioning ptxdist, which happens to
    use crosstool to generate its toolchains, and of which
    I'm still fond (though I've been out of embedded systems for
    a couple years since I moved to Google).
    Its closest competitor is buildroot (which somebody else mentioned).
    - Dan

  32. Generic SDKs by grindcorefan · · Score: 1

    A very good generic embedded SDK/compiler suite/distro generator is provided by the OpenEmbedded project:
    http://www.openembedded.org/

    OE is used to produce various embedded GNU/Linux variants like:
    - OpenZaurus (Sharp Zaurus PDAs)
    - Familiar (various WinCE PDAs)
    - OpenDreambox (Dreambox PVRs)
    - OpenSlug, DebianSlug, UcSlugC (LinkSys NSLU2 router platform)

    If using GNU/Linux is not a strict requirement, you could always give OpenBSD or NetBSD a try. Especially NetBSD runs on many platforms, the latest release supports 57 different ones.

  33. scratchbox by blacklungfever · · Score: 2, Informative

    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 :)

  34. Gumstix by BTG9999 · · Score: 1

    Check out the Gumstix.org Project. The project has a very nice distribution of sorts with lots of stuff for embedded processors. They have built a configuration utility for setting up your embedded system. Also it does not just support the gumstix hardware, they have support for most of your standard linux architectures. Just get the svn copy of the build root, this page has their svn access instructions. It is also fairly easy to figure out how it works and add extra packages. Just remember if you want to use C++ that is at beta level. Also check out the mailing list and the wiki.

  35. From the trenches by piotru · · Score: 2, Informative

    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!

  36. Busy Box For The Win!! by Anonymous Coward · · Score: 0

    For space constrained systems I've found a custom build of BusyBox + whatever kernel you need gives you everything you need. Embedded Development by no means needs a fully featured distro for most purposes. In the interests of keeping the foot print as small as possible, compile BusyBox with exactly the utilities you need and add on any other statically compiled command line apps from there. All your binaries should be striped of course to minimize their memory usage. And depending on how many utilities you may use that BusyBox does not provide, you might find you're adding a few shared libraries here and there if multiple utilities use them.

    Its a great starting point and you can replace BusyBox versions of standard commands if you need features provided by the full version, and finding out you need the full version can be a bit frustrating, but for small embedded systems, you want to reduce the amount of bloat as much as possible.

  37. The best Linux distro by joschm0 · · Score: 0
    --
    01/20/09
  38. Re:Not Linux by schweini · · Score: 1

    You should have used NetBSD for that!

  39. Re:URL by Mr.+Jaggers · · Score: 1

    Yeah, especially because sybian.org has text in it like "rapture" and the "coming climax"... search engine confusion?

    --

    When I grow up, I want to have Christopher Walken hair.
  40. Crosstool vs. buildroot by bensch128 · · Score: 1

    Quick question here;
    At work we're using crosstool to build a solid but fairly large distro for our embedded boards.
    So far it's worked ok.
    Does anyone have experience comparing buildroot against crosstool?
    In terms of speed, memory footprint and features?

    Just curious,
    Ben

  41. Debian, or possibly Red Hat for eCos by Nontagonist · · Score: 1

    I'd probably try to use Debian - it's fairly stable and already compiles for quite a few architectures. Maybe you can even get Kdevelop to cross-compile for you. (If you do, please consider working on the documentation for Kdevelop).

    For the smaller architectures I'd seriously consider eCos (see Embedded Software Development with eCos at http://www.phptr.com/promotions/promotion.asp?prom o=1484&redir=1&rl=1). The eCos stuff is known to work with Red Hat Linux and Windows. You may be able to get it to work under another Distro.

    While eCos is not Linux, it is an Open Source RTOS, with a POSIX layer and support for quite a few architectures. Check out the freely downloadable PDF. Note: I haven't used it myself, but have looked into it a bit.

    Regards, Nontagonist.

    --
    There is another theory that states that this has already happened.