The new Linux 3.9 kernel adds driver support for tiny MEMS (micro-electro-mechanical systems) devices made by ST, including accelerometers and motion sensors. Other Linux 3.9 features that affect the embedded world include SSD caching support, a lightweight suspend power mode, and support for Android’s “Goldfish” virtualization system.
When Linux 3.9 arrived on April 28, its support for MEMS devices was hardly a marquee enhancement. Yet of all the many Linux 3.9 improvements of interest to the mobile and embedded world, MEMs support may have the most significant long-term impact. As devices continue to shrink and sensing applications grow in importance, there is greater demand for the tiny devices, which range in size from a millimeter down to 20 micrometers.
ST, whose MEMS products are specifically supported in Linux 3.9, claims to be the world’s leading MEMS manufacturer. Indeed, ST’s MEMS may well be in your smartphone, tablet, or gaming device in the form of accelerometers, gyroscopes, digital compasses, microphones, and other sensors. Other ST MEMS devices include inertial modules, magnetometers, as well as temperature, pressure, and touch sensors.
In consumer devices, emerging new applications for MEMS include indoor navigation and gesture recognition, says ST. There is increasing use of MEMS in industrial and healthcare applications, especially those that require precision movement and position sensing in multiple axes. The latter are said to include remote monitoring, test and measurement, robotic control, machine vision, and surveillance.
Developers can gain access to drivers for all ST MEMS devices through a standard IIO (Industrial-IO) interface. As a result, developers working with Linux 3.9 can connect any ST sensor with minimal software overhead, claims the company. The kernel support enables the system to “recognize devices, access data, support interrupts and perform polling data acquisitions,” says ST. The driver support also offers SPI and I2C bus interoperability, FIFO embedded at the driver level, and the ability to reduce code overhead.
With these new tools, Linux developers can tap interesting MEMS devices like ST’s new LIS331EB iNEMO-A Smart Sensor, which is aimed at motion-recognition applications. Housed in a 3 x 3 x 1mm LGA package the Smart Sensor adds an ARM Cortex-M0 microcontroller to a 3-axis accelerometer. The Cortex-M0 runs sensor-fusion algorithms, offloading processing from a mobile device’s host controller and application processor while reducing power consumption, according to ST.
Linux 3.9 for embedded in a nutshell
While new MEMS support extends Linux into some exciting new applications, there were several other Linux 3.9 changes that may be of more immediate interest to embedded developers. Here’s a sampling:
- SSD cache — With Linux 3.9, you can now use a solid state drive (SSD) as a cache to potentially speed data writes and reads. The new “dm-cache” device mapper target for SSD caching supports writeback and writethrough modes, as well as different policy plugins.
- “Suspend-freeze” power mode — A new lightweight “suspend-freeze” power consumption mode aimed at smartphones and tablets saves less power than a full memory suspend mode, but wakes up more quickly on resume. On the other hands, this lightweight sleep mode is more power efficient than the RTPM/idle mode. On Intel processors, meanwhile, developers can use a new Intel Powerclamp driver to throttle power consumption at an absolute limit.
- Android virtualization — Linux now supports Android’s QEMU-based “Goldfish” ARM virtualization platform, which supplies a virtual CPU and drivers for components like battery, MMC, audio, and graphics. The upshot: You can now develop for Android with out-of-the-box kernels.
- Chrome OS support — There’s now full support for the full range of Chromebook laptops running Google’s Linux-based Chrome OS. The increasingly popular Chrome OS may be principally a desktop OS, but a tablet model is said to be in the works.
- KVM on ARM — Linux now offers support for KVM virtualization on ARM, specifically on Cortex-A15 system on chips. This will primarily interest developers working with ARM micro-servers, but some embedded applications could emerge as well.
- More embedded drivers — There’s now support for Synopsis’s 32-bit RISC ARC700 SOCs, which are commonly used in set-top boxes and digital media players, as well as the Meta ATP and HTP processor cores from Imagination Technologies, which are typically used in digital radios.
Additional highlights of Linux 3.9 include improved performance of multi-threaded network server applications running on multicore systems, improved RAID support in the Btrfs filesystem, and VMware VMCI drivers. Other new drivers include support for AMD’s upcoming Fusion processors (Richland architecture) and Intel’s series 7000 WiFi components.