Introduction to Embedded systems
• Objectives
After going through
this session you should be able to
• Know
what an Embedded system is
• Distinguish
a Real time embedded system from other systems.
• Categories
of embedded systems
• Know
the architecture of embedded systems
• Tell
the major components of an embedded systems.
• Understand
Linux embedded system architecture
• Advantages
of using Linux OS for embedded systems
• In
day-to-day life we come across a wide variety of consumer electronics products
such as TV remote controllers, Mobile phones, fax & xerox machines etc.
• Each
of these devices have one or more programmable devices waiting to interact with
the environment as effectively as possible.
• These
are class of “Embedded systems”, providing service in real time i.e we need not
have to wait too long for the action.
• An
Embedded system is a special purpose system designed to perform specific
control functions often with the real-time computing constraints.
• It
is usually “Embedded” as a part of complete device including hardware and
software components as compared to a general purpose computer such as PC, which
is designed to be flexible and to meet a wide range of end-user needs.
Examples of Embedded
system
• Embedded
systems controls many of the common devices in use today
• Mobiles
• Digital
watches
• Traffic
lights
• Printers
• Medical
equipment
• MP3
players, digital cameras
• Routers,
telephone switches
• Automotive
Characteristics of
Real Time Embedded systems (RTES)
• RTES
is precisely the union of subsystems to discharge specific task coherently.
• Single-functioned.
• RTES
is meant to perform specific task.
• Tightly
constraint
• The
constraint of the design and marketability of RTES is more rigid than their
non-real-time non-embedded systems counter parts.
• Time
domain constraints are the first thing to be taken care of.
• Size,
weight, power consumption and cost are other major factors
• As
embedded systems is dedicated to specific tasks, design engineers can optimize
it to reduce the size and cost of the product and increase the reliability and
performance.
• Reactive
and Real time
• Many
embedded systems must continually react to the changes in the system’s
environment and must compute certain results in real time without delay. For e.g.
A car’s cruise controller continuously monitors and reacts to speed and
brake sensors. It must compute
acceleration or deceleration amounts repeatedly within a limited time; a
delayed computation could result in failure to maintain control of the car.
Classification of
embedded systems
• The
heart of the embedded systems is customized microprocessor or microcontroller
• Small
scale embedded systems
– Single
8/16bit microcontroller
– Little
hardware and software complexity
– Mostly battery operated
– Need
to limit power dissipation when system is running continuously
• Medium
scale embedded systems
– Single
or few 16 or 32 bit microcontrollers or Digital signal processors(DSP)
– Both
hardware and software complexity
• Advanced/Sophisticated
embedded systems
– Need
multiple scalable or configurable processors
– Enormous
hardware and software complexity
– Constrained
by processing speed available in their hardware units
Embedded systems
components
• Hardware
• Processor,
interrupt controllers, I/O devices, Memories etc.
• Software
• Performs
series of tasks of controlling the hardware.
• Real-time
operating system (RTOS)
• RTOS
is intended to serve real-time application request.
• A
key characteristic of an RTOS is the level of its consistency concerning the
amount of time it takes to accept and complete an application’s task
• The
chief design goals is not high throughput, but rather a guarantee of a soft or hard performance
category.
• RTOS
that usually meets the deadline is soft-real-time OS and if it can meet the
deadline deterministically it is hard-real-time OS.
• Every embedded system may not need RTOS.
Design metrics
• A
design metrics is a measurable feature of the system’s performance, cost, time
for implementation etc.
• Cost
– One
time cost of designing the system. Once the system is designed, any units can
be manufactured without incurring additional cost.
• Size
– Physical
space required by the system, usually in bytes for software and gates or
transistors for hardware.
• Performance
– The
execution time of the system
• Power
consumption
– Amount
of power consumed by the system, which may determine the life time of the
battery or the cooling requirements of the IC, since more power means more
heat.
• Flexibility
– The
ability to change the functionality of the system without incurring heavy cost.
S/w is typically considered flexible.
• Time
to prototype
– Time
needed to build the working version of the system which can be used to verify
the system’s usefulness and correctness and to refine the system’s functionality.
• Time
to market
– Time
required to develop a system to the point that it can be released and sold to
customers. The main contributors are design time, manufacturing time and
testing time.
• Maintainability
– It
is the ability to modify the system after its initial release, especially by
designers who did not originally design the system.
• Correctness
– This
is the measure of the confidence that we have implemented the system’s
functionality correctly. We can check the functionality throughout the process
of designing the functionality.
Performance design
metrics
• Performance
of a system is a measure of how long a system takes to execute the desired
tasks.
• Latency
or response time
– This
is the time between the start of the task’s execution and the end. For e.g processing an image may take 0.24ms
• Throughput
• This
is the number of tasks that can be processed per unit time. For e.g, a camera
may be able to process 4 images per second.
• Based
on the various design metrics, the functional blocks of RTES are implemented in
software or hardware
System on Chip (SOC)
• System-on-chip
(SOC) is an integrated circuit that integrates all components of a computer or
other electronic system into a single chip
• It
may contain digital, analog, mixed-signal and often radio frequency functions –
all on one chip.
• In
any embedded system application, functional blocks can be
– Level
I: External discrete hardware components on board
– Level
II: Hardware integrated with CPU on chip(SoC)
– Level
III: Done by software running on CPU
Example of Advanced
embedded systems
– Multi-core
system of chip, like mobile handset which has one chip containing
• DSP
processor for audio/video processing
• Embedded
processor like ARM
• Custom
hardware for GSM
• Custom
peripherals (touch screen, memory card, usb)
– Automotive
application, which has network of embedded microcontrollers on board
communicating together through specific bus protocol like CAN.
Embedded system
hardware
Processors
• The
central processing unit is the most important components in the embedded systems.
• Depending
on the type of applications the processors are broadly classified into 3
categories
• General
purpose microprocessors
• Microcontrollers
• Digital
signal processors
• General
purpose microprocessors
• This
microprocessor is designed to solve problems in a large variety of applications
as diverse as communications, automotives and industrial embedded systems.
• The
prime of microprocessor is to read data, perform extensive calculations on that
data and store the results in mass storage device or display the results.
• Have
complex architecture with multiple stages of pipeline and parallel processing.
• Microcontrollers
• A
microcontroller is a small computer on a single integrated circuits containing
a processor, memory and I/O peripherals.
• Using
on chip hardware for I/O and RAM/ROM results in pretty low performance
CPU.
• Microcontrollers
often use timers to generate interrupts.
• The
prime use of microcontroller is to use to control the operations of the machine
using a fixed program that is stored in ROM and does not change over the
lifetime of the system.
• Digital
signal processors
• These
processors are designed for handling signal processing algorithms.
• One
of the common operations required in such applications is array manipulations
which required lot of multiplication/addition operations.
• DSP
units generally use multiple access and multiport memory units, allowing more
than one memory in one clock cycle.
Embedded hardware for
Linux systems
• Processor
architecture: Linux kernel supports wide range of 32 and 64 bits architectures
– X86
and x86-64 as found in PC and embedded platforms
– ARM,
with hundreds of different SOCs(multimedia, industrial)
– PowerPC
(Real-time, industrial)
– MIPS(networking
applications)
– Others,
SuperH, Blackfin etc.
Memory
• Memory
serves processor short and long-term information storage requirements while
registers serve the processor’s short term storage requirements.
• Both
the programs and data are stored in the memory.
• The
memory may be Read-only (ROM) or Random access memory (RAM)
• It
may exist of the same chip with processor or outside the chip. On chip memory
is faster than off chip memory.
• To
reduce the access (read/write) time, a local copy of portion of memory can be
kept in a small and fast memory called “cache” memory
• Memory
can also be categorized as Static and dynamic.
– Dynamic
memory (DRAM) dissipate less power, hence compact and cheaper but access time
is slower than static memories.
– Static
memory (SRAM) are much faster than DRAMs but consume more power.
• Memory
– RAM,
a very basic Linux system can work within 8MB of ram, but a more realistic
system will require at least 32MB RAM
• Storage
– Flash
storage with NAND and NOR Flash
– Block
storage with SD/MMC and eMMC cards
• Input
Output device and interfaces
– Input
output interfaces are necessary to the RTES interact with the external world.
– The
input output devices kerboard, the display screen, the antenna, microphone,
speaker etc.
• Networking,
Ethernet, WiFi, bluetooth etc.
• Communications,
SPI, I2C, SDIO, USB, UART.
Embedded Linux system
architecture
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
• Operation
system
– 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
Boot loaders
• Boot
loader is a piece of code which performs
– Basic
hardware initialization
– Loading
of an application binary, usually OS kernel, from the flash storage, from the
network or from another type of non-volatile storage
– Possibly
decompression of application binary
– Execution
of the application
• Most
boot loaders also provides command line interface with various commands
implementing different operations.
Boot loaders on x86
• X86
processors are typically bundled with non-volatile memory containing program
called BIOS.
• This
program is executed by CPU on reset and is responsible for initialization of
basic hardware and loading a small piece code from non-volatile memory.
• This
piece of code is usually the 1st stage boot loader, which will load
the full boot loader.
• The
boat loader than offer all its features. It understands file system formats so
that kernel file is loaded directly from normal file systems.
Embedded boot loaders
• On
reset, the CPU starts executing code at fix address.
• BIOS
is usually not present on embedded devices.
• The
hardware design must ensure that the NOR flash chip is wired so that it is
accessible at the address at which CPU starts executing code.
• The
first stage boot loader must be programmed at this address in the NOR flash.
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
• Fundamental
architecture of Linux operating system
Kernel subsystem
• 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.
• 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.
User space
User space on Linux
is based on the following concepts
• Program:
This is the image of an application, resides on a filesystem. When an
application needs to be run, the image is loaded into memory and run.
• Virtual
memory: allows each process to have its own address space including memory map
for code, global data and dynamic data, stack etc
• System
calls: These are entry points into the kernel so that the kernel can execute
services on behalf of the application.
Advantages of Linux
and open-source for embedded systems
• Reusability
– The
key advantage of Linux and open-source in embedded systems is the ability to
re-use components.
– Open-source
ecosystem already provides many components for standard features from hardware
support to n/w protocols, multimedia, graphics libraries.
– Allows
to quickly design and develop complicated products based on existing
components.
• Low
cost
– Free
software can be duplicated on as many systems as you want, free of charge.
– If
your embedded systems uses only free software, you can reduce the cost of
software license to zero.
– Allows
you to have higher budget for hardware.
• Full
control
– With
open-source, you have source code for all the components
– Allows
unlimited modifications, changes, tuning, debugging, optimizing of code.
– Allows
to have full control over the software part of your system.
• Quality
Allows to design
your system with high quality components
– Many
open-source components are widely used on millions of systems.
– Usually
higher quality than what an in-house development can produce or even propriety
vendors.
• Eases
testing of new features
– Allows
to easily explore the new possibilities and solutions as open-sources is freely
available.
• Community
support
– Allows
to speed up the resolution of problems when developing your system, as
open-source software components are developed by communities of developers and
users, which can provide high-quality support.
Embedded Linux development
environment
• Embedded
Linux solutions: Two ways to switch to embedded linux
– Use
solutions provided and supported by vendors such as MontaVista, WindRiver or
TimeSys. These solutions come with their own development tools and environment.
They use mix of open source & proprietary tools
– Use
community solutions, open source solutions. We will use open source solutions
for the course.
OS for Linux
development
• Using
Linux as desktop operating system is recommended to embedded linux developers.
– All
community tools are developed and designed to run on Linux
– All
knowledge used for using desktop, also applies to embedded devices
• Desktop
Linux distribution
– Any
good and sufficiently recent Linux desktop distribution
• Ubuntu,
Fedora , Redhat etc
• We
have chosen Ubuntu as it is widely and easy to use desktop Linux distribution.
Software packages
• The
distribution mechanism for software for GNU/Linux is different from the one
used in windows.
• Linux
distributions provides a central and coherent way of installing, updating and
removing applications and libraries: packages
• Packages
contains the applications or library files, associated meta-data such as
version and dependencies
– .deb
on Debian and Ubuntu
– .rpm
on Redhat
• Packages
are stored in repositaries, usually on HTTP or FTP servers
Managing software
packages
• Instructions
for Debian based GNU/Linux systems (Debian/Ubuntu)
– Packages
repositories are specified in
• /etc/apt/sources.list
– To
update package repository list
• Sudo
apt-get update
– To
install a given package
• Sudo
apt-get install <package-name>
– To
remove a given package
• Sudo
apt-get remove <package-name>
– To
install all available package updates
• Sudo
apt-get dist-upgrade
– Get
information about the package
• apt-cache
show <package-name>
– Graphical
Interfaces
• Synaptic
for GNOME
• KpackageKit
for KDE
Host Vs. Target environment
• In
embedded development, there is always a spilt between
– The
Host, the development workstation, which is typically a powerful PC
– The
target, which is the embedded system under development.
– They
are connected by various means, almost always a serial line for debugging,
frequently an Ethernet connection and sometimes JTAG for low level debugging
Cross-compiling
Toolchain
• The
usual tool chain available on Linux workstation is a native toolchain.
• This
toolchain runs on your desktop/workstation and generates code for your
workstation, usually x86
• A
cross-compiled toolchain is required for target. They run on the workstation
but generate code for your target.
Cross-compilation
toolchain components
• Binutils
– Binutils
are set of programs necessary for
compilation, linking, assembling and other debugging operations
• as
- the assembler, that generates binary code from assembler source code
• Ld,
the linker
• As,
ranlib to .a archives used for libraries
• Objdump,
readelf, nm, strings to inspect binaries
• Strip,
to strip useless part of binaries in order to reduce their size
• http://www.gnu.org/software/binutils/
• GNU
C compiler
• The
basic C compiler used for generating object code (both kernel and applications)
• Can compile C, C++, Ada, Fortran, Java, Objective-C, Objective-C++, and
generate code for a large number of CPU architectures, including ARM, AVR,
Blackn, CRIS, FRV, M32, MIPS, MN10300, PowerPC, SH, v850, i386, x86 64, IA64, Xtensa, etc.
• Available under the GPL license, libraries
under the LGPL.
C library
• The C library is an essential
component of a Linux system
• Interface between the applications
and the kernel
• Provides the well-known standard C
API to ease application development
• Several C libraries are available:
– glibc, uClibc, eglibc, dietlibc,
newlib, etc.
• The choice of the C library must be
made at the time of the cross-compiling toolchain generation, as the GCC
compiler is compiled against a specific C library.
Machines in build
procedures
• Three machines must be distinguished
when discussing toolchain creation
– The build machine, where the
toolchain is built.
– The host machine, where the
toolchain will be executed.
– The target machine, where the
binaries created by the toolchain are executed.
• Four common build types are possible
for toolchains
Different tool chain
build procedures
No comments:
Post a Comment