Slashdot Mirror


Linux Kernel 2.4 Or 2.6 In Embedded System?

snikulin writes "My 6-year-old embedded software happily runs on kernel v2.4 on an XScale CPU. The software gets a bunch (tens of megabytes) of data from an FPGA over a PCI-X bus and pushes it out over GigE to data-processing equipment. The tool chain is based on the somewhat outdated gcc v2.95. Now, for certain technical reasons we want to jump from the ARM-based custom board to an Atom-based COM Express module. This implies that I'll need to re-create a Linux RAM disk from scratch along with the tool chain. The functionality of the software will be essentially the same. My question: is it worth it to jump to kernel 2.6, or better to stick with the old and proven 2.4? What will I gain and what will I lose if I stay at 2.4 (besides the modern gcc compiler and the other related dev tools)?"

11 of 178 comments (clear)

  1. testing? by robvangelder · · Score: 5, Informative

    if you're migrating, no doubt you're performing tests to ensure your product is still fit.
    once you have your test plan ready, determining fitness against either kernel should be straight-forward.

  2. Why Linux? by TheRaven64 · · Score: 5, Informative

    2.4 is horrible to work with. It's missing so many features you expect from a POSIXy system that you constantly have to find work-arounds. Having a 2.4 kernel on the cluster during my PhD was enormous pain - I'd write code on FreeBSD, copy it to the cluster, and find half the features were missing. 2.6 is a lot better from a feature-standpoint, but is much heavier and isn't really suited to embedded systems anymore. If you're building the image yourself, why not go with FreeBSD or OpenBSD and get the best of both worlds - FreeBSD if you lean more towards features, OpenBSD if you want a smaller footprint?

    --
    I am TheRaven on Soylent News
    1. Re:Why Linux? by TheRaven64 · · Score: 5, Informative
      I'm assuming you're asking for examples of things that don't work correctly (or at all) in 2.4. If so, off the top of my head (it's been a couple of years since I used a 2.4 kernel):
      • Lots of newer POSIX IPC (SysV IPC works okay).
      • Asynchronous I/O (all of the aio_* family and lio_listio).
      • Several bits of POSIX threads.
      • Most of the realtime extensions, such as queued signal delivery.
      • Some mmap() flags (I think - not sure about this one).

      All of these work on FreeBSD 6 or 7 (aio is in a module that isn't loaded by default on 6, not sure about 7), and most of them work on Linux 2.6.

      --
      I am TheRaven on Soylent News
    2. Re:Why Linux? by beelsebob · · Score: 4, Informative

      Who cares which came first. The important thing is that that kernel is small, and has the features. Linux 2.4 does not have the features, Linux 2.6 does not have the small.

    3. Re:Why Linux? by Anonymous Coward · · Score: 4, Informative

      Define small, I'm working towards a first release of a Linux 2.6 based project, the Kernel + bundled busybox based RFS is 2.1M. Just saying.

  3. 2.6 by JamesP · · Score: 5, Informative

    I had the same question asked for an embedded project 3 years ago. And it was very clear cut then

    2.6 you get (off the top of my head)

    -Modern drivers (including USB/Network/etc)
    -Various tick rates and tickless
    -More support
    -Several other improvements

    So really don't bother w/ 2.4

    --
    how long until /. fixes commenting on Chrome?
  4. This article was written upon 2.6 release by rolfwind · · Score: 5, Informative

    http://www.linuxdevices.com/articles/AT7751365763.html

    Without knowing your exact parameters though, it's hard to debate any specific advantages.

  5. Go 2.6 by digitalhermit · · Score: 4, Informative

    Lots of the improvements to 2.6 have probably been added to 2.4, but many come "native" to 2.6 so no outside patches are required. For example, kernel pre-emption, better scheduler, etc.. There are other intangibles too such as development time, testing, new toolchain, etc.., but you're already moving to a new processor and you'd have to do that anyway.

    Sometime last year I was rebuilding some antique MIPS-based Linux from a 2.4 to a 2.6. Almost everything in the userspace was effortless (though much of it was based on Busybox); the main issue was related to some in-line assembler that took a while to figure out what it was doing. Once I did, I googled it and realized someone else had already solved a year or so ago.

    So in short, no real benefit to sticking with 2.4 IMHO.

  6. Re:If you are olready doing 90% of the work... by ThePhilips · · Score: 5, Informative

    No clue what gp meant.

    From all I heard (I was in embedded business only in 2.2/2.4 times) that 2.6 integrated some number of patches from embedded folks and generally can be customized to run on smaller number of resources. Also, the improved I/O (much lower latencies) and scheduler (interactivity; soft-real-time) would benefit in embedded too. 2.4 has number of problem related to memory management, when virtual memory subsystem can easily grab half of available RAM - only for supporting virtual memory. 2.6 solved the problem for most architectures.

    Generally, many embedded folks moved to 2.6 already - mainly due to support for more new OTS hardware. 2.4 has this support only through vendor patches (e.g. I used in past BlueCat and MontaVista patches).

    In my experience changing kernel on embedded system is quite easy task. Using development system within couple of days you can come up with suitable minimal .config (one needs development system since on target embedded systems might not have sufficient resources to run vanilla kernel). Generally it would either work or not. Normally it works.

    Also note that H/W vendors started being more active in 2.6 times. In 2.4 times best shot at Linux driver was some crude port from e.g. LynxOS or VxWorks. From all I know, 2.6 now supports more PowerPC system than did patch from MontaVista for 2.4 I used three years ago.

    Last, but not least, if you are looking at new modules, many hardware vendors supply Linux compatibility information. 2 years ago finding module with "Linux compatibility" chapter in documentation wasn't a problem at all.

    --
    All hope abandon ye who enter here.
  7. 2.6. See our Space Station project by slashbart · · Score: 4, Informative

    Hi

    We moved our project from 2.4 to 2.6 during development, because the maximum interrupt latency of 2.6 is so much better. We needed to handle UDP packets within 20 ms. max and occasionally on 2.4 we would have a 60 or more. Going to 2.6 solved our problems immediately, even with early versions.

    See this Linux Journal article for more details on our project http://m.linuxjournal.com/article/7190

    Bart van Deenen

  8. Re:New hardware new issues by wtarreau · · Score: 4, Informative

    Yes, 2.4.37 runs fine on an Asus EEE-Box (Atom, PCI-E, SATA, USB2, ...)

    Willy