Hardware, Software and Applications
“An Embedded System is a microcontroller (or microprocessor) based
system) that is embedded as a subsystem in a larger system (which may or
may not be a computer system) to perform one or few dedicated and/or
specific functions often with real-time computing constraints”
It performs a single task
Not for general purpose use
High performance bound and real time constrained
High reliability bound
Hardware – Software systems
Software is used for extra features and flexibility
Hardware (processors, ASICs, memory etc. are used for performance
Military and Aerospace software applications
Healthcare (Medical Electronics)
Industrial automation and process control software
Embedded processors (MIPS, ARM, PowerPC etc.)
RAM ( in MB )
Communication ports (Ethernet, USB, Serial etc.)
Power Supply Regulator
and many more…….
“Firmware is a microcode (lowest level code directly talking to hardware) that
internally control various electronic devices”
Firmware usually resides in PLAs (or PROMs)
Examples of devices containing firmware include end-user products:
Remote controls hardware
and many more…..
Types of Software:
o System Software
• Operating System
• MMU, EFMS, Scheduler etc.
o Application Software
• Games, Browsers, calculator etc.
Software is used for extra features and flexibility depending on the
type of the embedded system like Mobile phones, Digital Signage
Embedded systems without software also exists like x-ray detectors,
remote controls, micro-wave ovens etc. But these contain firmware.
Firmware is a must for every embedded devices.
Operating systems should be time bound (RTOS)
o Quick and predictable response to events
o Advanced algorithms for scheduling
o Examples: VxWorks, QNX, RTLinux, Symbian
Should be customized and optimized
Non-RTOS operating systems are also used
o Designed to be used in embedded computer systems like PDAs
o Operate with a limited number of resources
o Very compact and extremely efficient by design
o Examples: Windows CE, Minix 3, Embedded Linux
C, Embedded C
o Device Driver implementation
o Kernel module implementation
C++, Java (optimized), etc.
o For application development
Steps 1: Write code ( C, C++ etc. ) in a host machine.
Host machine is development machine.
Steps 2: Cross compile source code for the target machine.
Target machine is your embedded device.
Step 3: Flash your executable to your target machine through Serial
port, Ethernet port or USB port.
Step 4: Execute the code in your target machine and test.
Code should be speed efficient to support real-time
o Less CPU execution time
Code should be space efficient
o Less Memory
“Speed Vs Space complexity”
More time spent on Design front
Career options for fresh college graduates:
Hardware Design Engineer
o Electrical/Electronics Engineers
Software Design Engineer
o Electrical/Electronics/Computer Science Engineers
Embedded System Architecture, Programming and Design
o Raj Kamal
Embedded System Design A Unified Hardware/Software Introduction
o Tony Givargis
The C programming Language
o Dennis.M.Ritchie & Brain.W.Kernighan
The C++ programming Language
o Bjarne Stroustrup
Object Oriented Programming with C++
Thank - you