Linux Kernel 2.6: the Future of Embedded Computing, Part II

More on how the 2.6 kernel makes for better embedded devices.

In Part I of this article, we discussed three significant improvements--preemption points, an efficient scheduler and improved synchronization--have made the 2.6 Linux kernel the future of embedded computing. Here, we discuss further improvements and applications the 2.6 kernel offers embedded development.

USB Support

USB 2.0, about forty times faster than conventional USB, makes its debut in Linux 2.6. The high speed USB devices support device bandwidth of up to 480 megabits per second, compared to 12 mbit/sec of current USB.

On the complete opposite end of the field, for the first time the kernel includes support that allows a Linux-powered machine to be a USB device rather than a USB host. This would allow, for example, your Linux-powered PDA to be plugged into your PC and to have both ends of the line speaking the proper protocol. Much of this support is new, but this is an essential direction for Linux to move into for embedded devices.

Wireless Devices

Wireless seems to be the buzzword today in the communication industry. Looking at the kind of research being carried out in such fields as pervasive computing, mobile computing and so on, the day is not far when the world becomes truly embedded and connected.

In the wireless networking space, support for both long-range devices--for example, AX.25 over amateur radio devices--and short-range devices--usually 802.11, but some older protocols exist--was updated during development of the 2.6 kernel. The largest change here is major components of the short-range subsystems for the various supported cards and protocols have been merged into a single wireless subsystem and API. This merge resolves a number of minor incompatibilities in the way different devices had been handled and strengthens Linux's support for the subsystem by making a central set of userspace tools that work with all supported devices. In addition to standardization, Linux 2.6 introduces a number of overall improvements, including better capability to notify in the event of a state change--such as a device that has a "roaming" state--and a change to TCP to better handle periodic delay spikes that occur with wireless devices.

In the wireless devices space, IrDA (the infrared protocol named for the Infrared Data Associates group) has received some advancements since the last major release, such as power management and integration into the new kernel driver model. The real advancements, however, have been made in providing Linux support for Bluetooth devices. Bluetooth as a protocol is designed to go anywhere and has been implemented in many devices ranging from PDAs, cell phones and printers to more bizarre things, such as automotive equipment. The protocol itself is made up of two different data link types: SCO (Synchronous Connection Oriented), for lossy audio applications, and L2CAP, (Logical Link Control and Adaptation Protocol), for a more robust connection supporting retransmits and so on. Both the SCO datalink for audio and the L2CAP for connection-oriented data transfers are available, making Linux a natural choice wherever no-fuss connectivity is a key requirement.

Human Interface Devices

The human interface layer is the center of the user experience with a Linux system, including the video output, mice and keyboards. In the new version of the kernel, this layer has been reworked and modularized to a much greater extent than ever before. It now is possible to create a completely headless Linux system without any included support for a display or anything else. The primary benefit of this modularity may be for embedded developers making devices that can be administrated only over the network or serially. But end-users benefit too, as many of the underlying assumptions about devices and architectures has been modularized out.

Linux 2.6 also includes a number of smaller changes for human interaction. Touch screens, for example, now are supported. Linux also has changed the system request interface to better support systems without a local keyboard. The system request (sysrq) interface is a method for systems administrators at the local console to access debugging information, force a system reboot, remount filesystems read-only and do other wizardly things. Because Linux 2.6 now supports a completely headless system, it now is possible to trigger these events using the /proc filesystem. This support is available wirelessly, so the functionality could be performed from virtually any device.