IndustryInsight
Real-Time Linux
 Linux 2.6
 for Embedded Systems—
 Closing in on Real Time
       While not yet ready for hard real-time computing, Linux 2.6 introduces
       many new features that make it an excellent platform for a wide range
       of embedded computing tasks
       by Ravi Gupta, LynuxWorks
          ith its low cost, abundant fea-
W         tures and inherent openness,
          Linux provides fertile ground
for creativity in embedded computing. As                    1,000
                                                                    Task Response Time Results
                                                                     1GHz Pentium III operating under heavy interrupt load
its importance grows, we can even expect                                                                                          24.18
                                                             100
Linux to become the platform where
progress first happens. The question is,                     10
                                                                                                                                  2.6
could Linux 2.6 be the breakthrough ver-
                                                              1
sion we’ve been anticipating for
embedded systems—the version that                            0.1
opens the floodgates to Linux accep-                         0.01
tance? The answer is “yes.”                                                   Best                 Average                   Worst
      The embedded computing universe                    24.18 kernel         0.073                 1.133                    156.66
is vast and encompasses computers of all                 2.6 kernel           0.068                 0.132                     4.508
sizes, from tiny wristwatch cameras to
telecommunications switches with thou-        Figure 1     Linux 2.6 shows marked improvement in response
sands of nodes distributed worldwide.                      time as loads are increased.
Embedded systems can be simple enough
to require only small microcontrollers, or
they may require massive parallel            Taken together, these enhancements                    reliably. Linux is not yet a true real-time
processors with prodigious amounts of        serve to both “firm up” Linux for                     operating system, yet Linux 2.6 intro-
memory and computing power. Linux 2.6        embedded computing while making it a                  duces improvements that make it a far
delivers enhancements to provide sup-        more attractive alternative for a wider               more worthy platform than in the past
port across the spectrum of these            range of embedded applications.                       when responsiveness was an issue. The
embedded needs as well enhancements in                                                             three most significant improvements are:
the general areas of determinism,            Firming Things Up
reduced memory contention, and the                On the “firming up” front, timing                    •    Preemption points in the kernel
leveraging of POSIX for thread creation      constraints are endemic in many                           •    An efficient scheduler
and management and task scheduling.          embedded applications and must be met                     •    Enhanced synchronization
                                                                                                       Reprinted from                 November 2003
IndustryInsight
       As with most general-purpose oper-        moved to the expired queue. When this          memory is “close” to that processor and
ating systems, Linux has always forbidden        happens, the queues are switched: the          other memory is “farther away.” This
a process scheduler from running when a          expired queue becomes the current queue,       means that when memory contention
process is executing in a call. Once a task      and the empty current queue becomes the        occurs, the nearer processor has superior
was in a system call, that task controlled the   expired queue. As the tasks on the new         rights to the memory. The 2.6 kernel pro-
processor until the call returned, regardless    current queue have already been sorted,        vides a set of functions that are aware of
of how long it took. This can cause more         the scheduler can once again resume its        the memory/processor topology. The
important tasks to be delayed while waiting      simple algorithm of selecting the first task   scheduler is able to use this information to
for the system call to complete.                 from the current queue. Not only is this       favor tasks when they are using local
       With Linux 2.6, the kernel is now         procedure substantially faster than in the     memory, thus ameliorating the memory
preemptible to a degree, making 2.6 more         past, but it also works equally well           contention bottleneck and improving
responsive than 2.4 and giving implemen-         whether there are many tasks or just a few.    throughput.
tors better control over the timing of           A comparison of test response times
events. Moreover, in Linux 2.6, kernel           between 2.4 and 2.6 is shown in Figure 1.      Support For Custom Designs
code has been salted with preemption                                                                   Until now, we have discussed funda-
points that enable the scheduler to run and      Synchronization                                mental enhancements that make Linux 2.6
possibly block a current process so as to            Oftentimes multiprocessing applica-        better suited to embedded systems, par-
schedule a higher priority process.              tions need to share resources including        ticularly those systems requiring some
      The 2.6 kernel can also be built with      memory and devices. Programmers are            degree of determinism and predictable
no virtual memory system, which solves a         able to avoid race conditions by using a       performance. In discussing how Linux
major sticking point in regard to respon-        mutex function to ensure that only one task    2.6 supports large-scale multiprocessing
siveness. Software that has to meet dead-        is using the resource at a time. Until now,    systems and their applications, we have
lines is incompatible with virtual memory        the Linux mutex implementation has             also started to touch on how 2.6 can meet
demand paging, in which slow handling of         always involved a system call to the kernel    the needs of a wide spectrum of
page faults can ruin responsiveness.             to decide whether to block the thread or       embedded requirements in terms of
However, getting rid of virtual memory           allow it to continue executing. But if the     system size and configuration.
means the developer must ensure that             decision happens to be to continue, why               Pursuing this thread further, hard-
there will always be enough real memory          make a time-consuming system call?             ware designs for embedded systems are
available to meet application demands.                  The new implementation in Linux         often customized for special applications
                                                 2.6 supports fast user-space mutexes,          and it is common for designers to need to
Efficient Scheduling                             which check from user space to see if          solve a design issue in an original way. For
      Along with becoming somewhat pre-          blocking is necessary and only perform         example, a purpose-built board may use a
emptible, Linux 2.6 features a rewritten         the system call when blocking the thread       different IRQ management scheme than a
process scheduler developed to eliminate         is required. These functions also use          similar reference design. In order to run on
the slow algorithms of past versions.            scheduling priority to decide which thread     the new board, Linux has to be ported, or
Previously, the scheduler had to look at         gets to execute when there is contention.      altered to support the new hardware. This
each ready task and score its relative                                                          porting is made easier when the operating
importance. The time required for this           Sharing Memory                                 system is made up of components that are
algorithm varied with the number of tasks              Large multiprocessor systems intro-      well separated. Hence it is only necessary
and thus complex multitasking applica-           duce proportionally large contention           to change the code that actually needs to
tions would suffer from slow scheduling.         issues. Embedded systems are sometimes         change. The components of Linux 2.6 that
      In Linux 2.6, the scheduler no longer      extremely large systems of processors,         are likely to be altered for a custom design
scans all tasks each time. Instead, when a       as in telecom networks or mass storage         have been refactored in line with a concept
task becomes ready to run it is sorted into      systems. Here, numerous processors share       called Subarchitecture.
position on a queue called the current           memory, either as symmetric or loosely                With Subarchitecture, components
queue. The scheduler only has to choose          coupled multiprocessors. Symmetric mul-        are clearly separate and can be individually
the task at the most favorable position on       tiprocessing designs are inherently limited    modified or replaced with minimal impact
the queue. Consequently, scheduling is           because the shared memory has to be            on other components of the board support
done in a constant amount of time. When          equally accessible to all processors,          package. This means more efficient devel-
the task is actually running, it is given a      making competition for memory the lim-         opment and faster time-to-implementation
period of time it may use the processor          iting factor in both scalability and pro-      and time-to-market for Linux-based
before it has to give way to another thread.     cessing efficiency.                            embedded solutions (Figure 2).
When its time slice expires, the task is               Linux 2.6 supports a different way of
moved to another queue, called the expired       achieving multiprocessing, called Non          Devices, Buses and I/O
queue, and sorted according to its priority.     Uniform Memory Access (NUMA). With                   Linux is fast becoming the first
        Eventually, all of the tasks on the      NUMA, memory and processors are inter-         choice of operating system for embedded
current queue will have been executed and        connected, but for each processor some         products aimed at consumer markets.
Reprinted from            November 2003
                                                                                                                       IndustryInsight
                                                                                               very large memory sizes have their choice
                                                                                               of 64-bit microprocessors with Linux 2.6.
         The Importance of POSIX                                                                   The Intel Itanium 64 architecture was
                                                                                               treated in a previous releases of Linux, and
              There’s a lot to be said about the utility of POSIX. For example, the            support continues in 2.6. Linux 2.6 also
         POSIX standard describes a set of functions for thread creation and                   continues to cover the AMD64 architecture
         management called POSIX threads, or pthreads. This functionality has                  with support of the AMD Opteron micro-
         been available in past versions of Linux, but its implementation has                  processor. Nor is the PowerPC left out, as
         been much improved in 2.6. The Native POSIX Thread Library (NPTL)                     PPC64 support is also available. Clearly, as
         has been shown to be a significant improvement over the older
                                                                                               2.6 illustrates, the Linux community has
                                                                                               the momentum to keep up with innovations
         LinuxThreads approach, and even improves other high-per formance
                                                                                               in large-bus, large-memory computing.
         alternatives that have been available as patches.
                                                                                                   Microcontrollers, on the other hand,
                Along with POSIX threads, 2.6 provides POSIX signals and POSIX
                                                                                               have been something of a frontier for
         high-resolution timers as part of the mainstream kernel. POSIX signals
                                                                                               Linux. Now they are supported on the
         are an improvement over UNIX-style signals, which were the default in
                                                                                               mainstream Linux 2.6 kernel. In most
         previous Linux releases. Unlike UNIX signals, POSIX signals cannot be                 cases, previous instances of Linux
         lost and can carry information as an argument. Also, POSIX signals                    required a full-featured microprocessor
         can be sent from one POSIX thread to another, rather than only from                   with a memory management unit (MMU).
         process to process like UNIX signals.                                                 But simpler microcontrollers are typically
                Embedded systems also often need to poll hardware or do other                  the more appropriate choice when low
         tasks on a fixed schedule. POSIX timers make it easy to arrange any                   cost and simplicity are called for.
         task to get scheduled periodically. The clock that the timer uses can                       There have been ways to put Linux on
         be set to tick at a rate as fine as one kilohertz, so that software engi-             MMU-less processors prior to version 2.6.
         neers can control the scheduling of tasks with precision.                             The Linux for Microcontrollers project has
                                                                                               been a successful branch of Linux for some
                                                                                               important small systems. Version 2.6 inte-
                                                                                               grates a significant portion of uClinux into
This is largely due to its cost-effectiveness   user interface and sometimes with no           the production kernel, bringing microcon-
in what are often low-margin commodity          operator interface. While previous Linux       troller support into the Linux mainstream.
devices. Linux 2.6 delivers support for         versions made it possible to build a head-          The Linux 2.6 version supports sev-
several technologies that are key to the        less system, some of the support software      eral current microcontrollers that don’t
success of many types of consumer prod-         was not removable, giving the kernel more      have memory management units. These
ucts. For example, 2.6 includes the             bulk than was necessary or desirable.          include Motorola m68k processors such as
Advanced Linux Sound Architecture, or           Linux 2.6 however can be configured to         Dragonball and ColdFire, as well as
ALSA. This state-of-the-art facility sup-       entirely omit support for unneeded dis-        Hitachi H8/300 and NEC v850 micro-
ports USB and MIDI devices with fully           plays, keyboards or mice.                      processors. The ETRAX family of net-
thread and multiprocessor-safe software.               For portable products, Linux 2.6        working microcontrollers by Axis
With ALSA, a system can run multiple            debuts the Bluetooth wireless interface,       Communications is also supported.
sound cards, play and record at the same        which is now taking its place next to              As a caveat, Linux running on MMU-
time or mix multiple audio streams.             802.11 as a protocol option for wireless       less processors will still be multitasking,
    USB 2.0 also makes its debut on Linux       communications. With both the SCO              but will obviously not have the memory
2.6. We can expect that high-speed devices      datalink for audio and the L2CAP for con-      protection provided on fully endowed
will proliferate in the near future, and that   nection-oriented data transfers available,     processors. Consistent with the lack of true
Linux will be a leading platform for USB        Linux 2.6 is an excellent choice wherever      processes on these small platforms, there is
2.0 products.                                   no-fuss, short-range wireless connectivity     also little in the way of security.
    Video4Linux, the system for sup-            is a key requirement.                              In the area of middleweight systems,
porting video, is also new in Linux 2.6.                                                       sometimes an embedded system may use a
Although it is not backward compatible          Size Matters                                   conventional Intel-architecture micro-
with the previous video paradigm, it is               On the other end of the spectrum are     processor, but may need to manage more
intended for the latest generation of radio     computers that provide exceptionally large     RAM that can be addressed in the usual 32-
and TV tuners, video cameras and other          resources, such as very large memory sizes     bit address space. Intel’s Physical Address
multimedia devices.                             or high-throughput multiprocessors. These      Extension (PAE) makes it possible for 32-
                                                heavyweights have numerous embedded            bit computers to access up to 64 Gbytes of
Headless Operation                              applications, such as mass data storage sys-   memory through page frames. With PAE,
  Deeply embedded systems have their            tems and special compute engines.              Linux 2.6 systems running on newer x86
own challenge and are often built with no       Embedded Linux developers who need             machines view memory through a movable
                                                                                                  Reprinted from           November 2003
IndustryInsight
“window,” allowing the system to      Linux 2.6                                                                 Developers also need to
address up to 64 Gbytes of RAM.       High-Level Components                                              bear in mind that while Linux
Linux 2.6 support of PAE is espe-                                                                        2.6 is not a true real-time oper-
cially useful on systems that per-      User Space                                                       ating system, it’s possible to see
form store-and-forward service                             App1      App2         ...                    one from there. That is, should
for images, video and applica-                                                                           the need arise, the time and
tions where large datasets must be                                                                       effort spent developing an
handled quickly.                        Kernel             Network   Device    USB2.0/1394/ALSA ...      embedded application on Linux
                                          Scheduler 0(1)    VM        FS      Thread Lib    Others ...   can be leveraged into the real-
Looking Ahead                                                                                            time space with the choice of a
     Linux is easily the fastest                                                                         Linux-compatible, POSIX-
                                        Architecture/Platform (32/64 Bits)
growing operating system in the                                                                          compliant RTOS. Hence
embedded world and Linux 2.6                    x86         PPC         ARM     MIPS        Others       embedded developers can turn
will undoubtedly accelerate that                                                                         to Linux 2.6 with the confi-
growth. Still critical to success of    Hardware                                                         dence that they can go real time,
individual embedded projects,                                                                            in almost no time.
however, is expertise in Figure 2 The increased modularity of the Linux 2.6 kernel
embedded           design       and              makes it easier to create custom configurations for     LynuxWorks
Linux/POSIX (see sidebar: “The                   specific embedded applications.                         San Jose, CA.
Importance of POSIX”, p. 33).                                                                            (408)979-3900.
There is a lot on the way of                                                                             [www.lynuxworks.com].
expert support and guidance that needs to      it is an opportunity for competitive differ-
be wrapped around an embedded Linux            entiation and time-to-market advantage
implementation. But with the proper            for the embedded project.
vendor, this is not so much a challenge as
Reprinted from          November 2003