By Jake Edge
April 23, 2008
Technical conferences generally provide a wealth of choices, to the point
where participants have to make tough decisions at times to pick the session
to sit in on. This year's Embedded Linux
Conference was no exception; there were multiple slots where the author
had to wish that he could be in more than one place at a time. But, he did
manage
to take notes in some of those that he attended; hopefully some of the
conference flavor can come through in the following report.
Power management
MontaVista's Kevin Hilman presented an approach for
handling power management on embedded devices that focused on changes that
can be made to the kernel, but noted that there is much that can be done by
applications too. Because of
the time and money budgets available for embedded projects, many do not
have the resources to do a complete job of tuning the kernel to get the
best possible power performance. There is also no "one size fits all" solution
for power management, there are too many device-specific issues to allow that.
Hilman's approach is to target specific "building blocks" that embedded
developers can incorporate into their project. Each block will provide
some savings, so the project can stop when the desired performance is
reached—or it is time to ship the device. One of the easier steps is
to customize the idle loop in the kernel, putting the processor to sleep
when there is no work to be done. There are different kinds of sleep,
though, generally trading off power savings and wakeup latency. The
cpuidle subsystem provides a means to specify those values in an
architecture independent way, which, along with a platform independent
"governor", can put the processor into various sleep modes. The only
platform dependent piece are the hooks to enter each of the different sleep
states.
A similar approach is taken by the CPUfreq subsystem, which can reduce the
clock frequency of the CPU to reduce power consumption using the Dynamic
Voltage and Frequency Scaling (DVFS) feature of some processors.
"Operating points" (OPs)—voltage and frequency tuples—are defined for the
hardware. There are
various generic CPUfreq governors that can then be used to determine when
to change OPs and which to change to. The governor will invoke a
platform-specific driver to effect that change. In addition, power
management "quality of service" is currently being discussed to allow
applications to request a certain level of performance that may override
some of the lower-level sleep or frequency decisions.
Embedded SELinux
SELinux has a well-earned reputation for being able to restrict
processes to only use those resources that have been specifically allowed
by policy, but it is rather resource intensive. Yuichi Nakamura presented
Hitachi's research into bringing SELinux into a more resource constrained
embedded environment. One of the first problems they encountered was the
need for flash filesystems that support extended attributes (xattrs),
which is where SELinux stores labels for files. Only jffs2 currently
supports xattrs, so that is the one they used.
The next big hurdle was trying to get a set of policies that were stripped
down to the needs of an embedded platform. Nakamura started with the
SELinux reference policy (refpolicy) and started removing rules. The sheer
number of rules and policies that needed to be removed was
daunting—as was the need to understand what was being removed.
He also ran into strange dependencies: removing a sendmail policy caused a
problem in the apache rules. The solution was to create a simplified
policy language and policy
editor that reduced the problem to something more tractable for the
embedded world. In the process it greatly reduced the size of the policy
files, from 4.6M down to 60K.
Another problem encountered was the performance and size of
SELinux, which is a common embedded woe. Through some hand optimization of
the read/write path, along with removing some unused permissions checks,
they were able to increase the performance by a factor of ten on their
SuperH reference platform. By changing some static buffers in SELinux to a
dynamic allocation they also saved 250K of runtime memory. Much of that
work was merged into 2.6.24.
There is still
work to be done, but with the changes, SELinux is viable for embedded
platforms.
GCC and kernel hacking
Two sessions provided various tips and tricks for embedded development,
with Gene Sally of Timesys focused on GCC, while IBM's Hugh Blemings shared
some of the things he has learned from the kernel hackers he works with.
Sally discussed the different ways that developers could get a GCC
toolchain for their target processor. One of the bigger hurdles that an
embedded developer faces is getting a cross-compiler toolchain—one
that runs on his development workstation, but generates code for the target
platform. There are several ways to get the toolchain: as a tarball for
popular development/target combinations, by using helper tools like crosstool or buildroot from uClibc, or by
building it from source directly.
Building from source is the most difficult, of course, but allows for the
most customizations and flexibility. Sally went on to describe a handful
of useful GCC command-line options for helping to debug cross-compilers or
just to better understand what GCC is doing:
- gcc -### - show what GCC would have executed
- gcc -v - show what GCC is executing
- gcc -g x.c -o x; objdump -S x - show the C and generated
assembly code
- gcc -E -dM - </dev/null - show all predefined GCC macros
- gcc -C -E - show pre-processor output, but leave comments intact
- gcc -M - show all include file dependencies (for use in Makefiles)
- gcc -MM - like above, but ignore system include files
Blemings concentrated on the development infrastructure by describing the
lab that he used to port the kernel to a Taishan PowerPC-based evaluation
board. When undertaking a project like that, "get to know your hardware
team" because they will have lots of important information and shortcuts
that can be used as part of the board "bringup". At IBM in Canberra, where
Blemings is based, they have gotten to the point where they can bring up
Linux on any board where they can "access memory and point the PC [program
counter] at it"; his tips have come out of that environment.
One of the most important things is to realize that you will be building
kernels over and over again, so optimizing your environment for that will
save lots of time. His suggestion was to start with a "honkin'" compile
box; he described an IBM multi-processor box as an excellent choice but noted
that the cost was so high he couldn't get one. It would, however, do
"3k/sec"—that's compile 3 kernels per second. In the absence of
something like that, he suggested borrowing cycles by using ccache and distcc to reduce and parallelize the
compilation that needs to be done. Even adding relatively modest machines
into the distcc pool can significantly reduce time spent waiting for a new
kernel.
Ubuntu mobile and embedded (UME) and Maemo
One of the hottest areas in embedded Linux these days is the mobile
internet device (MID) market. There were two talks on MID-focused
distributions, with Canonical's David Mandala giving an overview of Ubuntu
Mobile and Embedded (UME) and Nokia's Kate Alhola talking about the status
and future directions of Maemo Mobile Linux. UME is a relatively recent
addition to the mobile device space—they are anxiously awaiting
hardware to run on—whereas Maemo has been around for a while,
powering the Nokia N770, N800, and N810 internet tablets.
UME is an effort to apply the Ubuntu distribution and philosophy to
touchscreen devices. Mandala explained that they are taking existing Linux
applications and adapting them for small screens that use fingers, rather
than keyboard and mouse, as the input device. The resolution of the
displays is typically something approaching that of low-end desktops, but
the physical space they take up is far smaller (i.e. the dots per inch or
DPI is high) making it difficult to do development without actual hardware.
The UME project is working with Intel's Moblin.org project to target Atom processor
based systems. It uses the Hildon
application framework atop GNOME
Mobile, running on an Ubuntu 8.04 (Hardy Heron) distribution. Mandala
stressed that Linux should be "invisible" on these devices as users just
want applications that work to browse the web, use email, and the like.
The main focus of UME has, so far, been on the user interface, though power
consumption, memory footprint, and speeding up boot times are all on their
radar. Canonical is very interested in fostering a community around UME,
but that has been "a bit of a challenge", mostly due to a lack of hardware
to run on. Mandala expects a few different hardware devices to be
available "soon" and that will make it easier to attract a development
community.
As should come as no surprise after Nokia's purchase of Trolltech early
this year, Alhola announced that Maemo would be supporting both GTK and
Qt in the near future. This is part of Nokia's belief that there is "no
single truth", so Maemo supports multiple paths to development on the
platform. Maemo directly supports C, C++, and Python, while the community
has added support for Java, Objective C, Vala, and Mono.
Nokia makes a very clear distinction in its product line between phones,
which are largely closed platforms, and tablets, which are open. Open
source software is an essential part of their strategy as they want to
build an application ecosystem around their products. "We are taking open
source to the consumer mainstream," Alhola explains.
One of the interesting tools that Nokia is working on as part of Maemo is
Scratchbox, which is a toolkit
geared towards making cross-compilation easier. It does this by making the
development environment look and act like the execution environment, using
QEMU to simulate the
target hardware. Scratchbox supports both ARM and x86 targets, with
experimental support for additional architectures. It uses standard
toolchains and distributions where possible and is released under the GPL.
LogFS
LogFS is a flash filesystem that is targeted at the larger flash devices
that are becoming more widespread. Unlike some filesystems currently in
use, most notably jffs2, LogFS is specifically designed to avoid some of
the performance and scalability problems that come with larger
devices. Jörn Engel is the developer of LogFS, with some support from
the Consumer Electronics Linux Forum
(sponsor of ELC), so he gave an update on the status of the project.
Engel used an unconventional scale (the sucks/rules meter) to measure the
progress that had been made in the last year. The scale runs from -10 to
10 and measures the "suckiness" of particular features
of the filesystem. Taking a page from This Is Spinal Tap, the score for the
mount speed of LogFS was measured at 11 both last year and this. It is
clearly the feature that Engel is most proud of as it takes 10-60ms to
mount a filesystem; a similarly sized jffs2 takes on the order of one second.
Engel looked at around ten separate attributes of the filesystem, first
rating them on where LogFS was a year ago, then re-rating based on where it
is today. The conclusion is that the average measure has moved from -2.75
to -0.55, so that "on average, it hardly sucks". He says he is getting
confident enough to submit it to Andrew Morton for inclusion in his tree,
hopefully on its way into the mainline. Engel is clearly somewhat
frustrated with people who are waiting until it is "done" to start using
LogFS—though there are some fairly serious usability problems that
would tend to limit testers—proclaiming: "LogFS is finished, try
it now, today!"
In conclusion
There were more talks, of course, as well as an active "hallway track" for
the roughly 175 participants. ELC is a well-run and very interesting
conference that is worth consideration for anyone who uses, or plans to
use, Linux as an embedded operating system. This year's venue, the Computer History Museum was
a nice facility for a conference of this size. It also had some great
exhibits that will bring back memories for anyone who has been
using computers, calculators, or game systems over the past 50 years or
so—well worth a visit when one is in Silicon Valley.
(
Log in to post comments)