Embedded Systems/Linux

From Wikibooks, open books for an open world
Jump to navigation Jump to search

A few of the many versions of Linux are designed for embedded systems.

Unlike the majority of "desktop" or "server" distributions of Linux, these versions of Linux either

  • (a) support real-time tasks, or
  • (b) run in a "small" embedded system, typically booting out of Flash, no hard drive, no full-size video display, and take far less than 2 minutes to boot up, or
  • (c) both.

Linux and MMU[edit | edit source]

Linux was originally designed on a processor with a memory management unit (MMU). Most embedded systems do not have a MMU, as we discussed earlier (Embedded Systems/Memory).

Benefits of using a processor with a MMU:

  • can isolate running "untrusted" machine code from running "critical" code, so the "untrusted" code is guaranteed (in the absence of hardware failures) not to interfere with the "critical" code
  • makes it easier for the OS to present the illusion of virtual memory
  • can run "normal" Linux (could also run "μClinux", but what's the point?)

Benefits of using a processor without a MMU:

  • typically lower-cost and lower-power
  • can still run the "μClinux" version of Linux specifically designed to run on processors without a MMU.

Linux and real time[edit | edit source]

People use a variety of methods to combine real-time tasks with Linux:

  • Run the real-time tasks on a dedicated microcontroller; communicate with a (non-real-time) PC that handles non-real-time tasks. This is pretty much your only choice if you need real-time response times below 1 microsecond.
  • Run the real-time tasks in a "underlying" dedicated real-time operating system; run Linux as a "nested operating system" inside one low-priority task on top of the real-time operating system. Some of these systems claim real-time response times below 500 microseconds.
  • use a Linux kernel designed to emphasize real-time tasks, and run the real-time tasks with a high priority (perhaps even as a kernel thread). As Linux develops, it seems to be getting better response times ("Preemptible kernel patch makes it into Linux kernel v2.5.4-pre6"; Linux kernel gains new real-time support).

Typically embedded Linux needs a minimum of about 2 MB of RAM, not including application and service needs [1].

Further reading[edit | edit source]