1. Embedded Linux
Information Technology Institute (ITI)
Sherif Mousa
Embedded Linux @ Information Technology Institute 1
2– Introduction To Embedded Linux
3. Definition
• Embedded Linux is the use of Linux in embedded
computer systems.
• Adapting the Linux kernel and customizing the
user-space libraries and utilities to embedded
applications such as those in use in consumer
electronics, military, medical, industrial, and auto
industries.
• Creating an Embedded Linux based system is like
a puzzle. Putting the right pieces together will
create the final image.
Embedded Linux @ Information Technology Institute 3
6. Why OS for Embedded ?
• Make use of micro-processor capabilities
(Multi-Tasking …).
• Easy to program.
• System scalability.
6Embedded Linux @ Information Technology Institute
7. Why Embedded not Normal OS ?
• Systems with small and limited resources.
• Special-Purpose systems.
• Real-Time systems.
7Embedded Linux @ Information Technology Institute
8. Why Linux ?
• Inexpensive, Robust, Easy to program.
• Source code is available.
• Ported to a variety of CPU architectures.
• Large device drivers coverage.
• Hosting huge number of languages & libraries.
• Software is highly modularized, making it easy
to build something new.
8Embedded Linux @ Information Technology Institute
9. Why build from scratch ?
• “When you bake it at the factory that’s what it
does forever. “ Tim Bird, Sony Entertainment
• You can use ready-made distributions as well,
but you will face some restrictions if you need
to modify something.
9Embedded Linux @ Information Technology Institute
11. Is it easy ?
• NO, IT’S NOT EASY.
• To finish a complete OS, it’s not just Linux
kernel to compile, you need to build and
integrate the other OS components
(BootLoader, Libraries, Commands, …….)
• And you will do all of this without getting a
PhD degree in OS building
11Embedded Linux @ Information Technology Institute
12. Do I need more knowledge ?
• If you are a Linux super user, and you think
that you need to learn more things to enter
the Embedded Linux field, THAT’S WRONG.
• Linux - Somethings = EmbeddedLinux
12Embedded Linux @ Information Technology Institute
13. Android is embedded Linux?
• “Of course not” Karim Yaghmour
• Google custom-built Android as a mobile
operating system that comes with its own
ecosystem, separate from the classic Linux
ecosystem. Its user interface is optimized for
touch screen devices. It comes with a set of
APIs. But most classic embedded devices
don’t need Google maps, for example.
13Embedded Linux @ Information Technology Institute
15. Cross Compiler
• A cross compiler is a compiler capable of
creating executable code for a platform other
than the one on which the compiler is
running.
15Embedded Linux @ Information Technology Institute
16. ToolChain
• Set of programming tools that are used to
create a product (typically another computer
program), used in chain.
• A simple software development ToolChain
consists of a compiler and linker to transform
the source code into an executable program,
libraries to provide interfaces to the operating
system, and a debugger.
16Embedded Linux @ Information Technology Institute
17. Cross-ToolChain
• The usual development tools available on a
GNU/Linux workstation is a native ToolChain.
• For embedded systems, it is usually impossible or
not interesting to use a ToolChain installed on it
– The target is restricted in terms of storage and memory
– The target is very slow compared to your workstation
• Therefore, Cross-ToolChain is used. They run on
your workstation but generate code for your
target.
17Embedded Linux @ Information Technology Institute
18. Cross-ToolChain
18Embedded Linux @ Information Technology Institute
X86 Binary Target Binary
X86
X86 Target CPU
Source Code
Native ToolChain Cross ToolChain
19. Cross-ToolChain Components
• Binutils is a set of tools to generate and
manipulate binaries for a given CPU architecture
– as, ld, ar, …….
• Kernel headers
– Available system calls and their numbers, Constant
definitions, Data structures.
• C/C++ libraries
– Interface between the applications and the kernel
– glibc (or) uClibc
• GCC compiler
• GDB debugger
19Embedded Linux @ Information Technology Institute
21. Embedded Linux Components
• Boot Loader (grub, Lilo, Uboot)
• Kernel (Normal or Real-Time)
• FileSystem (FHS)
• Configuration files
• C Library
• Common system commands
• User application(s)
21Embedded Linux @ Information Technology Institute
22. Embedded Linux Components
• Bootloader
– Started by the hardware, responsible for basic
initialization, loading and executing the kernel.
• Linux Kernel
– Contains the process and memory management, network
stack, device drivers and provides services to userspace
applications.
• System libraries (C library)
– The interface between the kernel and the userspace
applications.
• Filesystem
– Contains Linux commands, libraries and other needed
scripts.
22Embedded Linux @ Information Technology Institute
23. System Integration & Installation
• Integrate all the components, bootloader,
kernel, system libraries and applications and
our applications into a full working system.
• Install the OS into the device (?!!??!?!!!?!?!)
23Embedded Linux @ Information Technology Institute
24. Booting Sequence
• Bootloader
– Executed by the hardware at a fixed location in ROM / Flash
– Initializes support for the device where the kernel image is found
(local storage, network, removable media)
– Loads the kernel image in RAM and execute.
• Kernel
– Uncompresses itself
– Initializes the kernel core and statically compiled drivers (needed to
access the root filesystem)
– Mounts the root filesystem (specified by the root kernel parameter)
– Executes the first userspace program (specified by the init kernel
parameter)
• First userspace program Configures userspace and starts up system
services and user interface (if found).
24Embedded Linux @ Information Technology Institute
25. Linux System Running
25Embedded Linux @ Information Technology Institute
Hardware
Linux Kernel
User
SpaceC Library
app A app B
Call
a service
Manage
Hardware
Event
Handler
Event
notification
26. Then What ???
• Once you have the system installed with no
problems on your development device, you
are free to write applications as you need with
the any programming language (supported by
your embedded OS).
26Embedded Linux @ Information Technology Institute