Linux is a widely used open source operating system kernel that can also refer to full operating system distributions. It is commonly used in embedded systems due to its portability, modularity, and ability to run on hardware with limited resources. Device drivers can be dynamically loaded and unloaded from the Linux kernel as modules, allowing new functionality to be added without rebooting the system. This makes Linux well-suited for embedded device development.
2. Linux operating system
•Linux was initially developed by Linus Torvalds in 1991 as
an operating system for IBM compatible personal
computers based on the Intel 80386 microprocessor.
•Linus remains deeply involved with improving Linux,
keeping it up-to-date with various hardware
developments and coordinating the activity of hundreds of
Linux developers around the world.
•Over the years, developers have worked to make Linux
available on other architectures, including Alpha, SPARC,
PowerPC, and ARM.
•Now it has been matured into a solid unix-like operating
system for workstations, networking and storage servers,
data centers, clusters and embedded systems.
3. What is Linux
• Linux is interchangeably used in reference to the Linux
kernel, a Linux system, or a Linux distribution.
• Strictly speaking, Linux refers to the kernel maintained by
Linus Torvalds and distributed under the same name
through the main repository and various mirror sites.
• The kernel provides the core system facilities. It may not be
the first software to run on the system, as a bootloader
may have preceded it, but once it is running, it is never
swapped out or removed from control until the system is
shutdown.
• In effect, it controls all hardware and provides higher-level
abstractions such as processes, sockets, and files to the
different software running on the system.
4. • Linux can also be used to designate a hardware system running the Linux
kernel and various utilities running on the kernel.
– If a friend mentions that his development team is using Linux in their
latest product, he probably means more than the kernel.
– A Linux system certainly includes the kernel, but most likely includes a
number of other software components that are usually running with
the Linux kernel.
– Often, these will be composed of a subset of the software such as the
C library and binary utilities. It may also include the X window system
• Finally, Linux may also designate as a Linux distribution. Red Hat,
Mandrake, SuSE, Debian, Slackware, Caldera, MontaVista, BlueCat, and
others are all Linux distributions.
– They may vary in purpose, size, and price, but they share a common
purpose: to provide the user with a set of files and an installation
procedure to get the kernel and various overlaid software installed on
a certain type of hardware for a certain purpose
5. Linux kernel key features
• One of the more appealing
• Security, it can’t hide its
benefits to Linux is that it
isn't a commercial operating flaws. It code is reviewed by
system: its source code many experts.
under the GNU Public • Modularity, can include
License is open and available only what a system needs
to everyone. even at run time
• Portable and hardware • Exhaustive networking
support . Runs on most support
hardware • Easy to program, you can
• Scalability, Can run on super learn from existing code.
computers as well as on tiny Many useful resources on
embedded devices.(4MB of the net.
RAM is enough)
6. • Linux is powerful • Linux is highly compatible
Linux systems are very fast, with many common
since they fully exploit the operating systems
features of the hardware It lets you directly mount
components file systems for all versions
• High standard for code on MS-DOS, MS Windows,
quality Mac OS, Solaris, many BSD
variants and so on.
Linux systems are usually
very stable; they have a It also provides supports for
very low failure rate and various networking
system maintenance time protocols and layers such as
ethernet, fibre channel,
IBM’s Token ring and so
forth.
7. Embedded systems
• Embedded systems are everywhere in our
lives, from mobile phones to medical
equipment, including air navigation systems,
automated bank tellers, MP3 players, printers,
cars, and a slew of other devices about which
we are often unaware.
• Every time you look around and can identify a
device as containing a microprocessor, you've
most likely found another embedded system.
8. • An embedded system is a special purpose computer system that is designed to
perform very small sets of designated activities.
• Not meant to be traditional, general purpose computers
• Examples : mobile phones, cameras, home multimedia, network appliances,
transportation, industrial control, medical instrumentation, personal and air
navigation systems
• Uses application specific processors such as
• ARM
• x86
• PowerPc
• Even simpler microcontrollers
• An embedded systems is designed from both hardware and software perspective,
taking into account a specific application or set of applications. For e.g. your MP3
player will have a separate hardware unit for MP3 decoding
• Embedded systems are usually cost effective
9. Embedded Linux system architecture
Development Embedded Systems
Host
PC
Application Application
Tools
Compiler Library Library Library
Debugger
…. C library
Linux Kernel
Bootloader
10. Software components
• Cross-compilation tool chain
– Compilers that runs on the development machines but
generates code for the target machine
• Boot loader
– Started by the hardware, responsible for basic hardware
initialization, loading and executing the kernel
• Kernel
– Contains the process and memory management, network stack,
device drivers and services to user space
• C Library
– The interface between the kernel and user space applications
• Libraries and applications
– All user space components, open source, 3rd party or in-house
11. Introduction to Linux kernel
• User/Application space,
where applications are
executed.
• Kernel Space, where the
kernel exist
• GNU C library, this
provides the system call
interface, a mechanism
to communicate
between user space
application and kernel
13. • System call interface: provides the means to perform function calls from
user space into the kernel.
• Process Management
– Kernel in-charge of process creation and termination.
– Communication among different processes (signals, IPC primitives)
– Process scheduling, how processes share the CPU
• Memory management
– The kernel builds up the virtual address space for all the processes.
• File systems
– Linux is heavily based on file system concepts; almost everything is
treated as file.
– Linux supports multiple file systems types, i.e different ways of
organizing data on the physical medium.
– E.g. Ext2, ext3,
– Virtual File system(VFS) provides a common interface abstraction for
the various file systems supported by the kernel.
14. • Networking
– The network stack is part of the kernel.
– It is in charge of delivering data packets across applications and
network interfaces.
– All routing and address resolution issues are implemented
within the kernel.
• Device control
– Almost every system operations eventually maps to the
physical device. Few exceptions such as CPU, memory, etc,
– All device control operations are performed by the code, called
as Device Driver.
• IPC
– The interprocess communication on Linux includes signals, pipes and
sockets, shared memory and message queues.
15. Device driver development using
kernel modules
• Linux kernel has the ability to extend at runtime the set of features
offered by the kernel. This means that you can add functionality to
the kernel while the system is up and running.
• Each piece of code that can be loaded and unloaded into the kernel
at runtime is called a module.
• Module extends the functionality of the kernel without the need to
reboot the system.
• The Linux kernel offers support for quite a few different types (or
classes) of modules, including, but not limited to, device drivers.
• Each module is made up of object code (not linked into a complete
executable) that can be dynamically linked to the running kernel.
• Device drivers are developed for various hardware such hard disks,
network controllers, USB devices, serial devices, display devices,
printers
16. Advantages of modules
• Modules make it easy to develop drivers without
rebooting: load, test, unload, rebuild & again load and so
on.
• Useful to keep the kernel size to the minimum (essential in
embedded systems). Without modules , would need to
build monolithic kernel and add new functionality directly
into the kernel image.
• Also useful to reduce boot time, you don’t need to spend
time initializing device that may not be needed at boot
time.
• Once loaded, modules have full control and privileges in
the system. That’s why only the root user can load and
unload the modules.