Linux Gets Interrupted

Dec. 4, 2003
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.

CHANGING LINUX 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.

www.linuxhq.org

www.uclinux.org

See associated table

About the Author

William G. Wong | Senior Content Director - Electronic Design and Microwaves & RF

I am Editor of Electronic Design focusing on embedded, software, and systems. As Senior Content Director, I also manage Microwaves & RF and I work with a great team of editors to provide engineers, programmers, developers and technical managers with interesting and useful articles and videos on a regular basis. Check out our free newsletters to see the latest content.

You can send press releases for new products for possible coverage on the website. I am also interested in receiving contributed articles for publishing on our website. Use our template and send to me along with a signed release form. 

Check out my blog, AltEmbedded on Electronic Design, as well as his latest articles on this site that are listed below. 

You can visit my social media via these links:

I earned a Bachelor of Electrical Engineering at the Georgia Institute of Technology and a Masters in Computer Science from Rutgers University. I still do a bit of programming using everything from C and C++ to Rust and Ada/SPARK. I do a bit of PHP programming for Drupal websites. I have posted a few Drupal modules.  

I still get a hand on software and electronic hardware. Some of this can be found on our Kit Close-Up video series. You can also see me on many of our TechXchange Talk videos. I am interested in a range of projects from robotics to artificial intelligence. 

Sponsored Recommendations

Comments

To join the conversation, and become an exclusive member of Electronic Design, create an account today!