Electronic Design

Linux Gets Interrupted

New 2.6 kernel brings standard Linux to embedded systems.

Linux no longer requires a customized kernel for real-time support, but extensions are still needed for hard real-time support. Also, uClinux was merged into the new release, so the 2.6 kernel now covers all systems from low-end, MMU-less MCUs to 64-bit supercomputers. The effect of uClinux becoming part of standard Linux will be felt next year as the 2.6 kernel moves into the embedded mainstream. For now, uClinux based on the 2.4 kernel will remain the choice for deployment.

Developers using uClinux will appreciate the expanded peripheral support. This is particularly useful in embedded systems that use CAN, USB, and wireless devices. Linux features unavailable in uClinux include native IPsec support, cryptography, and performance tuning. Dynamic allocation of many operating-system data structures in the 2.6 kernel helps uClinux keep a small memory footprint.

Of course, this begs the question of whether or not uClinux will remain a separate entity. At this point it appears that it will because creating a distribution for an MMU-less system is a useful differentiation. A large number of systems utilize the smaller 2.0 uClinux due to space constraints. The big advantage now is that enhancements will be part of the larger Linux environment.

One major improvement to the 2.6 kernel has actually been around for years. Back in 2000, MontaVista made its low-latency, fully preemptible kernel patches available. These have been used by a number of embedded Linux vendors, along with their own enhancements, for hard real-time support.

Linux interrupt performance was good on average. However, the new changes sprinkle preemption points within the code, enabling the scheduler to run. The kernel still isn't fully preemptible, so third-party enhancements are needed for hard real-time support. An improved scheduler also increases system performance.

The 2.6 kernel includes a host of additional changes. Some, like the Fast User Space Mutexes and improved POSIX support, will be beneficial across the board. Fast User Space Mutexes provides mutex functionality without the overhead of kernel-based mutexes, except when contention occurs, thereby minimizing kernel switch overhead. Better POSIX support is key to portability. This makes Linux a better target for POSIX application migration.

Additions to 2.6 for larger systems include NUMA (non-uniform memory access) support and support for 64-bit processors. These features are very important to large-scale, embedded systems. NUMA support requires multiple processors, so it probably won't show up in a set-top box. Nevertheless, NUMA is invaluable in a radar processing system that must handle huge amounts of real-time data.

Linux is growing surprisingly well. It handles multiple processing systems with 64-bit processors down to MCUs such as the Motorola ColdFire and Hitachi H8/300. Although Linux isn't the best solution for all applications, it is suitable for most applications. This version of the kernel simply expands Linux's coverage.



See associated table

Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.