18CS44 MC&ES Module4 Notes
18CS44 MC&ES Module4 Notes
1
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Reactive and Real Time:
• Embedded systems are in constant interaction with the Real world through sensors and user
defined input devices which are connected to the input port of the system.
o Any changes happening in the Real world (which is called an Event) are captured by the
sensors or input devices in Real Time and the control algorithm running inside the unit
reacts in a designed manner to bring the controlled output variables to the desired level.
• The event may be a periodic one or an unpredicted one. If the event is an unpredicted one, then
such system should be designed in such a way that it should be scheduled to capture the events
without missing them.
• Embedded systems produce changes in output in response to the changes in the input. So they are
generally referred as Reactive Systems.
• Real Time System operation means the timing behavior of the system should be deterministic;
meaning the system should respond to requests or tasks in a know amount of time.
• A Real Time system should not miss any deadlines for tasks or operations.
• It is not necessary that all embedded systems should be Real Time in operations.
o Embedded applications or systems which are mission critical, like flight control systems,
Antilock Brake Systems (ABS), etc. are examples of Real Time systems.
• The design of an embedded Real Time system should take the worst case scenario into
consideration.
2
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Distributed:
• The term distributed means that, embedded systems may be a part of larger systems.
• Many numbers of distributed embedded systems form a single large embedded control unit.
o An automatic vending machine is a typical example for this. The vending machine
contains a card reader (for pre-paid vending systems), a vending unit, etc. Each of them
are independent embedded units but they work together to perform the overall vending
function.
o Another example is the Automatic Teller Machine (ATM). An ATM contains a card
reader embedded unit, responsible for reading and validating the user's AIM card,
transaction unit for performing transactions, a currency counter for dispatching/ vending
currency to the authorized person and a printer unit for printing the transaction details.
We can visualize these as independent embedded systems. But they work together to
achieve a common goal.
o Another typical example of a distributed embedded system is the Supervisory Control
And Data Acquisition (SCADA) system used in Control & Instrumentation applications,
which contains physically distributed individual embedded control units connected to a
supervisory module.
Power Concerns:
• Power management is another important factor that needs to be considered in designing
embedded systems.
• Embedded systems should be designed in such a way as to minimize the heat dissipation by the
system.
3
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The production of high amount of heat demands cooling requirements like cooling fans which in
turn occupies additional space and make a system bulky.
• Nowadays ultra low power components are available in the market. Select the design according to
the low power components like low dropout regulators, and controllers/ processors with power
saving modes.
• Also power management is a critical constraint in battery operated applications. The more the
power consumption the less is the battery life.
2. Throughput: deals with the efficiency of a system. Throughput is defined as the rate of
production or operation of a defined process over a stated period of time.
o The rates can be expressed in terms of units of products, batches produced, or any other
meaningful measurements.
4
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o In case of a Card Reader, throughput means how many transactions the Reader can
perform in a minute or in an hour or in a day.
o Throughput is generally measured in terms of 'Benchmark'.
o A 'Benchmark' is a reference point by which something can be measured.
o Benchmark can be a set of performance criteria that a product is expected to meet or a
standard product that can be used for comparing other products of the same product line.
3. Reliability: is a measure of how much % you can rely upon the proper functioning of the system
or what is the% susceptibility of the system to failures.
o Mean Time Between Failures (MTBF) and Mean Time To Repair (MTTR) are the terms used
in defining system reliability.
o MTBF gives the frequency of failures in hours/ weeks/ months.
o MTTR specifies how long the system is allowed to be out of order following a failure.
o For an embedded system with critical application need, it should be of order of minutes.
4. Maintainability: deals with support and maintenance to the end user or client in case of technical
issues and product failures or on the basis of a routine system checkup.
o Reliability and Maintainability are considered as two complementary disciplines.
o A more reliable system means a system with less corrective maintainability requirements and
vice versa. As the reliability of the system increases, the chances of failure and non-
functioning reduces, thereby the need for maintainability is also reduced.
o Maintainability is closely related to the system availability. Maintainability can be broadly
classified into two categories, namely, 'Scheduled or Periodic Maintenance (preventive
maintenance)' and 'Maintenance to unexpected failures (corrective maintenance)'.
o Some embedded products may use consumable components or may contain components
which are subject to wear and tear and they should be replaced on a periodic basis. The
period may be based on the total hours of the system usage or the total output the system
delivered.
o A printer is a typical example for illustrating the two types of maintainability. An inkjet
printer uses ink cartridges, which are consumable components and as per the printer
manufacturer the end user should replace the cartridge after each 'n' number of printouts,
to get quality prints. This is an example for 'Scheduled or Periodic maintenance'.
o If the paper feeding part of the printer fails the printer fails to print and it requires
immediate repairs to rectify this problem. This is an example of 'Maintenance to
unexpected failure'.
5
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o In both of the maintenances (scheduled and repair), the-printer needs to be brought offline
and during this time it will not be available for the user.
o In any embedded system design, the ideal value for availability is expressed as
Ai = MTBF / (MTBF + MTTR)
Where, Ai – Availability in the ideal conditions.
5. Security: aspect covers ‘Confidentiality’, 'Integrity', and 'Availability' (The term 'Availability'
mentioned here is not related to the term 'Availability' mentioned under the 'Maintainability'
section).
o Confidentiality deals with the protection of data and application from unauthorized
disclosure.
o Integrity deals with the protection of data and application from unauthorized modifications.
o Availability deals with protection of data and application from unauthorized users.
o A very good example of the 'Security' aspect in an embedded product is a Personal
Digital Assistant (PDA). The PDA can be either a shared resource (e.g. PDAs used in
LAB setups) or an individual one.
o If it is a shared one, there should be some mechanism in the form of user name and password
to access into a particular person's profile – An example of' Availability.
o Also all data and applications present in the PDA need not be accessible to all users. Some of
them are specifically accessible to administrators only. For achieving this, Administrator and
user level s of security should be implemented – An example of Confidentiality.
o Some data present in the PDA may be visible to all users but there may not be necessary
permissions to alter the data by the users. That is Read Only access is allocated to all users –
An example of Integrity.
6. Safety: 'Safety' and 'Security' are confusing terms. Sometimes you may feel both of them as a
single attribute. But they represent two unique aspects in quality attributes.
o Safety deals with the possible damages that can happen to
o the operators,
o public and the environment;
o due to
▪ the breakdown of an embedded system,
▪ the emission of radioactive or hazardous materials from the embedded
products.
o The breakdown of an embedded system may occur due to a hardware failure or a firmware
failure.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
6
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o Safety analysis is a must in product engineering to evaluate the anticipated damages and
determine the best course of action to bring down the consequences of the damages to an
acceptable level.
o Some of the safety threats are sudden (like product breakdown) and some of them are gradual
(like hazardous emissions from the product).
7
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o A standard embedded product should always be flexible and portable.
o In embedded products, the term 'porting' represents the migration of the embedded firmware
written for one target processor (i.e., Intel x86) to a different target processor (say ARM
Cortex M3 processor).
o If the firmware is written in a high level language like 'C' with little target processor-specific
functions (operating system extensions or compiler specific utilities), it is very easy to port
the firmware for the new processor by replacing those 'target processor-specific functions'
with the ones for the new target processor and re-compiling the program for the new target
processor- specific settings. Re-compiling the program or the new target processor generates
the new target processor-specific machine codes.
o If the firmware is written in Assembly Language for a particular family of processor (say x86
family), it will be difficult to translate the assembly language instructions to the new target
processor specific language and so the portability is poor.
o If you look into various programming languages for application development for desktop
applications, you will see that certain applications developed on certain languages run only
on specific operating systems and some of them run independent of the desktop operating
systems.
o For example, applications developed using Microsoft technologies (e.g. Microsoft
Visual C++ using Visual studio) is capable of running only on Microsoft platforms
and will not function on other operating systems; whereas applications developed
using 'Java' from Sun Microsystems works on any operating system that supports
Java standards.
4. Time to prototype and market: is the time elapsed between the conceptualization of a product
and the time at which the product is ready for selling (for commercial product) or use (for non-
commercial products).
o The commercial embedded product market is highly competitive and time to market the
product is a critical factor in the success of a commercial embedded product. There may be
multiple players in the embedded industry who develop products of the same category (like
mobile phone, portable media players, etc.). If you come up with a new design and if it takes
long time to develop and market it, the competitor product may take advantage of it with their
product.
o Also, embedded technology is one where rapid technology change is happening. If you start
your design by making use of a new technology and if it takes long time to develop and
market the product, by the time you market the product, the technology might have
superseded with a new technology.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
8
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o Product prototyping helps a lot in reducing time-to-market. Whenever you have a product
idea, you may not be certain about the feasibility of the idea.
o Prototyping is an informal kind of rapid product development in which the important features
of the product under consideration are developed.
o The time to prototype is also another critical factor. If the prototype is developed faster, the
actual estimated development time can be brought down significantly. In order to shorten the
time to prototype, make use of all possible options like the use of off-the-shelf components,
re-usable assets, etc.
5. Per unit and total cost: is a factor which is closely monitored by both end user (those who buy
the product) and product manufacturer (those who build the product).
o Cost is a highly sensitive factor for commercial products. Any failure to position the cost of a
commercial product at a nominal rate, may lead to the failure of the product in the market.
Proper market study and cost benefit analysis should be carried out before taking a decision
on the per-unit cost of the embedded product.
o From a designer/ product development company perspective the ultimate aim of a product is
to generate marginal profit. So the budget and total system cost should be properly balanced
to provide a marginal profit.
The Product Life Cycle (PLC): Every embedded product has a product life cycle which starts with the
design and development phase.
• The product idea generation; prototyping, Roadmap definition, actual product design and
development are the activities carried out during this phase.
• During the design and development phase there is only investment and no returns.
• Once the product is ready to sell, it is introduced to the market. This stage is known as the
Product Introduction stage.
• During the initial period the sales' and revenue will be low. There won't be much competition and
the product sales and revenue increases with time. In the growth phase, the product grabs high
market share.
• During the maturity phase, the growth and sales will be steady and the revenue reaches its peak.
• The Product retirement/ Decline phase starts with the drop in sales volume; market share and
revenue. The decline happens due to various reasons like competition from similar product with
enhanced features or technology changes, etc. At some point of the decline stage, the
manufacturer announces discontinuing of the product.
9
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The different stages of the embedded products life cycle-revenue, unit cost and profit in each
stage-are represented in the following Product Life-cycle graph.
10
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The sensor data is fed back to the control unit and the control unit generates the necessary
actuator outputs. The control unit also provides connectivity to user interfaces like keypad for
setting the washing time, selecting the type of material to be washed like light, medium, heavy
duty, etc. User feedback is reflected through the display unit and LEDs connected to the control
board.
The functional block diagram o washing machine is shown in the following Figure.
Washing machine comes in two models, namely, top loading and front loading machines.
• In top loading models the agitator of the machine twists back and forth and pulls the cloth down
to the bottom of the tub. On reaching the bottom of the tub the clothes work their way back up to
the top of the tub where the agitator grabs them again and repeats the mechanism.
• In the front loading machines, the clothes are tumbled and plunged into the water over and over
again. This is the first phase of washing.
• In the second phase of washing, water is pumped out from the tub and the inner tub uses
centrifugal force to wring out more water from the clothes by spinning at several hundred
Rotations Per Minute (RPM). This is called a 'Spin Phase'.
• If you look into the keyboard panel of your washing machine you can see three buttons: Wash,
Spin and Rinse. You can use these buttons to configure the washing stages.
• As you can see from the picture, the inner tub of the machine contains a number of holes and
during the spin cycle the inner tub spins, and forces the water out through these holes to the
stationary outer tub from which it is drained off through the outlet pipe.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
11
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
It is to be noted that the design of washing machines may vary from manufacturer to manufacturer, but
the general principle underlying in the working of the washing machine remains the same.
• The basic controls consist of a timer, cycle selector mechanism, water temperature selector, load
size selector and start button.
• The mechanism includes the motor, transmission, clutch, pump, agitator, inner tub, outer tub and
water inlet valve. Water inlet valve connects to the water supply line using at home and regulates
the flow of water into the tub.
• The integrated control panel consists of a microprocessor/ controller based board with I/O
interfaces and a control algorithm running in it. Input interface includes the keyboard which
consists of wash type selector: Wash, Spin and Rinse; clothe selector: Light, Medium, Heavy
duty and washing time setting, etc.
• The output interface consists of LED/ LCD displays, status indication LEDs, etc. connected to the
I/O bus of the controller.
• The other types of l/O interfaces which are invisible to the end user are different kinds of sensor
interfaces: water temperature sensor, water level sensor, etc., and actuator interface including
motor control for agitator and tub movement control, inlet water flow control, etc.
12
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Inner Working of Automotive Embedded Systems:
• Automotive embedded systems are the one where electronics take control over the mechanical
systems. The presence of automotive embedded system in a vehicle varies from simple mirror
and wiper controls to complex air bag controller and antilock brake systems (ABS).
• Automotive embedded systems are normally built around microcontrollers or DSPs or a hybrid of
the two and are generally known as Electronic Control Units (ECUs). The number of embedded
controllers in an ordinary vehicle varies from 20 to 40 whereas a luxury veh1cle like Mercedes S
and BMW 7 may contain over 100 embedded controllers.
• The first embedded system used in automotive application was the microprocessor based fuel
injection system introduced by Volkswagen 1600 in 1968.
The various types of electronic control units (ECUs) used in the automotive embedded industry can be
broadly classified into two-High-speed embedded control units and Low-speed embedded control units.
High-speed Electronic Control Units (HECUs): are deployed in critical control units requiring fast
response. They include fuel injection systems, antilock brake systems, engine control, electronic throttle,
steering controls, transmission control unit and central control unit.
Low-speed Electronic Control Units (LECUs): are deployed in applications where response time is not
so critical. They generally are built around low cost microprocessors/ microcontrollers and digital signal
processors. Audio controllers, passenger and driver door locks, door glass controls (power windows),
wiper control, mirror control, seat control systems, head lamp and tail lamp controls, sun roof control unit
etc., are examples of LECUs.
13
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
2. Local Interconnect Network (LIN): LIN bus is a single master multiple slave (up to 16
independent slave nodes) communication interface.
o LIN is a low speed, single wire communication interface with support for data rates up to 20
Kbps and is used or sensor/ actuator interfacing.
o LIN bus follows the master communication triggering technique to eliminate the possible bus
arbitration problem that can occur by the simultaneous talking of different slave nodes
connected to a single interface bus.
o LIN bus is employed in applications like mirror controls, fan controls, seat positioning
controls, window controls, and position controls where response time is not a critical issue.
3. Media Oriented System Transport (MOST) Bus: MOST is targeted for automotive audio/ video
equipment interfacing, used primarily in European cars.
o A MOST bus is a multimedia fibre-optic point-to-point network implemented in a star, ring
or daisy- chained topology over optical fibre cables.
o The MOST bus specifications define the physical (electrical and optical parameters) layer as
well as the application layer, network layer, and media access control.
o MOST bus is an optical fibre cable connected between the Electrical Optical Converter
(EOC) and Optical Electrical Converter (OEC), which would translate into the optical cable
MOST bus.
14
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
control, collision avoidance, rear1seat entertainment, adaptive cruise control, voice
recognition, etc.
c) Atmel (www.atmel.com): Supplier of cost-effective high-density Flash controllers and
memories. Atmel provides a series of high performance microcontrollers, namely,
ARM®1 and 80C51. A wide range of Application Specific Standard Products (ASSPs) for
chassis, body electronics, security, safety and car infotainment and automotive
networking products for CAN, LIN and FlexRay are also supplied by Atmel.
d) Maxim/Dallas (www.maxim-ic.com): Supplier of world class analog, digital and mixed
signal products (Microcontrollers, ADC/ DAC, amplifiers, comparators, regulators, etc),
RF components, etc. for all kinds of automotive solutions.
e) NXP semiconductor (www.nxp.com): Supplier of 8/ 16/ 32 Flash microcontrollers.
f) Renesas (www.renesas .com): Provider of high speed microcontrollers, battery control
systems, power train solutions, chassis and safety solutions, body control solutions,
instrument cluster solutions, etc.
g) Texas Instruments (www.ti.com): Supplier of microcontrollers, digital signal
processors and automotive communication control chips for Local Inter Connect (LIN
bus products.
h) Fujitsu (www.fmal.fujitsu.com): Fujitsu is global leader in graphics display controllers
(GDCs), including instrument clusters, in-dash navigation, heads-up displays and rear-
seat entertainment. It also offers automotive controller for HD video in vehicle networks.
i) Infineon (www.infineon.com): Supplier of high performance microcontrollers and
customized application specific chips.
j) Freescale Semiconductor (www.freescale.com): Solution provider for Advanced Driver
Assistance Systems (ADAS), Body Electronics, Chassis and Safety, Instrument cluster,
Power train and Hybrid systems.
k) Microchip (www.microchip.com): Supplier of robust automotive grade microcontroller,
analog and memory products, CAN/ LIN transceivers, etc.
2. Tool and Platform Providers: are manufacturers and suppliers of various kinds of development
tools and Real Time Embedded Operating Systems for developing and debugging different
control unit related applications.
o Tools fall into two categories, namely embedded software application development tools and
embedded hardware development tools.
o Some of the leading suppliers of tools and platforms in automotive embedded applications are
listed below:
15
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
a) ENEA (www.enea.com): Enea Embedded Technology is the developer of the OSE Real-
Time operating system. The OSE RTOS supports both CPU and DSP and has also been
specially developed to support multi-core and fault-tolerant system development. .
b) The Math Works (www.mathworks.com): It is the world's leading developer and
supplier of technical software. It offers a wide range of tools, consultancy and training for
numeric computation, visualization, modeling and simulation across many different
industries. MathWork's breakthrough product is MATLAB – a high-level programming
language and environment for technical computation and numerical analysis. Together
MATLAB, SIMULINK, Stateflow and Real-Time Workshop provide top quality tools
for data analysis, test & measurement, application development and deployment, image
processing and development of dynamic and reactive systems for DSP and control
applications.
c) Keil Software (www.keil.com): The Integrated Development Environment Keil
Microvision from Keil software is a powerful embedded software design tool for 8051 &
C166 family of microcontrollers.
d) Lauterbach (http://www.lauterbach.com/): It is the world's number one supplier of
debug tools, providing support for processors from multiple silicon vendors in the
automotive market.
e) Atego Modeling Tools (http://www.atego.com): It is the leading supplier of collaborative
modeling tools for requirement analysis, specification, design and development of
complex applications.
f) Microsoft (www.microsoft.com): It is a platform provider for automotive embedded
applications. Microsoft's Windows Embedded Automotive is an extensible technology
platform for automakers and suppliers to deliver in-car experiences that keep drivers
connected and informed.
3. Solution Providers: Solution providers supply Original Equipment Manufacturer (OEM) and
complete solution for automotive applications making use of the chips, platforms and different
development tools.
o The major players of this domain are listed below:
a) Bosch Automotive (www.boschindia.com): Bosch is providing complete automotive
solution ranging from body electronics, diesel engine control, gasoline engine control,
power train systems, safety systems, in-car navigation systems and infotainment systems.
b) DENSO Automotive (www.globaldensoproducts.com): Denso is an OEM and solution
provider for engine management, climate control, body electronics, driving control &
safety, hybrid vehicles, embedded infotainment and communications.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
16
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
c) Infosys Technologies (www.infosys.com): Infosys is a solution provider for automotive
embedded hardware and software. Infosys provides the competitive edge in integrating
technology change through cost effective solutions.
d) Delphi (www.delphi.com): Delphi is the complete solution provider for engine control,
safety, infotainment, etc., and OEM for spark plugs, bearings, etc.
Selecting the Model: In hardware software co-design, models are used for capturing and describing the
system characteristics.
• A model is a formal system consisting of objects and composition rules. It is hard to make a
decision on which model should be followed in a particular system design. Most often designers
switch between varieties of models from the requirements specification to the implementation
aspect of the system design. The reason being, the objective varies with each phase.
o For example, at the specification stage, only the functionality of the system is in focus
and not the implementation information. When the design moves to the implementation
aspect, the information about the system component is is revealed and the designer has to
switch to a model capable of capturing the system's structure.
Selecting the Architecture: A model only captures the system characteristics and does not provide
information on 'how the system can be manufactured?’
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
17
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The architecture specifies how a system is going to implement in terms of the number and types
of different components and the interconnection among them.
• Controller architecture, Datapath Architecture, Complex Instruction Set Computing (CISC),
Reduced Instruction Set Computing (RISC), Very Long Instruction Word Computing (VLIW),
Single Instruction Multiple Data (SIMD), Multiple Instruction Multiple Data (MIMD), etc., are
the commonly used architectures in system design.
• Some of them fall into Application Specific Architecture Class (like Controller Architecture),
while others fall into either General Purpose Architecture Class (CISC, RISC, etc.) or Parallel
Processing Class (like VLIW, SIMD, MIMD, etc.).
o The Controller Architecture implements the finite state machine model (FSM) using a
state register and two combinational circuits. The state register holds the present state and
the combinational circuits implement the logic for next state and output.
o The Datapath Architecture is best suited for implementing the data flow graph model
where the output is generated as a result of a set of predefined computations on the input
data. A datapath represents a channel between the input and output; and in datapath
architecture the datapath may contain registers, counters, register files, memories and
ports along with high speed arithmetic units. Ports connect the datapath to multiple buses.
o The Finite State Machine Datapath (FSMD) architecture combines the controller
architecture with datapath architecture. It implements a controller with datapath. The
controller generates the control input, whereas the datapath processes the data. The
datapath contains two types of I/O ports, out of which one acts as the control port for
receiving/ sending the control signals from/ to the controller unit and the second I/O port
interfaces the datapath with external world for data input and data output.
o The Complex Instruction Set Computing (CISC) architecture uses an instruction set
representing complex operations. It is possible for a CISC instruction set to perform a
large complex operation with a single instruction. The use of a single complex instruction
in place of multiple simple instructions greatly reduces the program memory access and
program memory size requirement. However it requires additional silicon for
implementing microcode decoder for decoding the CISC instruction. The datapath for the
CISC processor is complex.
o The Reduced Instruction Set Computing (RISC) architecture reuses instruction set
representing simple operations and it requires the execution of multiple RISC instructions
to perform a complex operation. The data path of RISC architecture contains a large
register file for storing the operands and output. RISC instruction set is designed to
operate on registers. RISC architecture supports extensive pipelining.
18
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o The Very Long Instruction Word (VLIW) architecture implements multiple functional
units (ALUs, multipliers, etc.) in the datapath. The VLIW instruction packages one
standard instruction per functional unit of the datapath.
o Parallel Processing architecture implements multiple concurrent Processing Elements
(PEs) and each processing element may associate a datapath containing register and local
memory.
o Single Instruction Multiple Data (SIMD) and Multiple Instruction Multiple Data
(MIMD) architectures are examples for parallel processing architecture.
▪ In SIMD architecture, a single instruction is executed in parallel with the help of
the Processing Element. The scheduling-of the instruction execution and
controlling of each PE is performed through a single controller. The SIMD
architecture forms the basis of reconfigurable processor.
▪ On the other hand, the processing elements of the MIMD architecture execute
different instructions at a given point of time. The MIMD architecture forms the
basis of multiprocessor systems. The PEs in a multiprocessor system
communicates through mechanisms like shared memory and message passing.
Selecting the Language: A programming language captures a 'Computational Model' and maps it into
architecture. There is no hard and fast rule to specify which language should be used for capturing this
model. A model can be captured using multiple programming languages like C, C++, C#, Java, etc. for
software implementations and languages like VHDL, System C, Verilog, etc. for hardware
implementations. On the other hand, a single language can be used for capturing a variety of models.
Certain languages are good in capturing certain computational model. For example, C++ is a good
candidate for capturing an object oriented model. The only pre-requisite in selecting a programming
language for capturing a model is that the language should capture the model easily.
Partitioning System Requirements into Hardware and Software: It may be possible to implement the
system requirements in either hardware or software (firmware). It is a tough decision making task to
figure out which one to opt. Various hardware software trade-offs are used for making a decision on the
hardware-software partitioning.
19
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Data Flow Graph/ Diagram (DFG) Model: The DFG model translates the data processing requirements
into a data flow graph.
• The Data Flow Graph model is a data driven model in which the program execution is
determined by data. This model emphasizes on the data and operations on the data transform the
input data to output data.
• Indeed Data Flow Graph is a visual model in which the operation on the data (process) is
represented using a block (circle) and data flow is represented using arrows. An inward arrow to
the process (circle) represents input data and an outward arrow from the process (circle)
represents output data in DFG notation.
• Embedded applications which are computational intensive and data driven are modeled using the
DFG model.
• Suppose one of the functions in an application contains the computational requirement x = a + b;
and y = x – c. The following Figure illustrates the implementation of a DFG model for
implementing these requirements.
• In a DFG model, a data path is the data flow path from input to output.
• A DFG model is said to be acyclic DFG (ADFG), if it doesn't contain multiple values for the
input variable and multiple output values for a given set of input(s).
• Feedback inputs (Output is fed back to Input), events, etc. are examples for non-acyclic inputs.
• A DFG model translates the program as a single sequential process execution.
Control Data Flow Graph/ Diagram (CDFG) Model: In a DFG model, the execution is controlled by
data and it doesn't involve any control operations (conditionals).
• The Control DFG (CDFG) model is used for modeling applications involving conditional
program execution. CDFG models contains both data operations and control operations.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
20
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The CDFG uses Data Flow Graph (DFG) as element and conditional (constructs) as decision
makers. CDFG contains both data flow nodes and decision nodes, whereas DFG contains only
data flow nodes. Let us have a look at the implementation of the CDFG for the following
requirement.
• If flag = 1, x = a + b; else y = a – b; this requirement contains a decision making process. The
CDFG model for the same is given in the above Figure.
• The control node is represented by a 'Diamond' block which is the decision making element in a
normal flow chart based design. CDFG translates the requirement, which is modeled to a
concurrent process model. The decision on which process is to be executed is determined by the
control node.
o A real world example for modeling the embedded application using CDFG is the
capturing and saving of the image to a format set by the user in a digital still camera
where everything is data driven starting from the Analog Front End which converts the
CCD sensor generated analog signal to Digital Signal and the task which stores the data
from ADC to a frame buffer for the use of a media processor which performs various
operations like, auto correction, white balance adjusting, etc. The decision on, in which
format the image is stored (formats like JPEG, TIFF, BMP, etc.) is controlled by the
camera settings, configured by the user.
State Machine Model: The State Machine model is used for modeling reactive or event-driven
embedded systems whose processing behavior is dependent on state transitions. Embedded systems used
in the control and industrial applications are typical examples for event driven systems.
• The State Machine model describes the system behavior with 'States', 'Events', 'Actions' and
'Transitions'.
o State is a representation of a current situation.
o An event is an input to the state. The event acts as stimuli for state transition.
o Transition is the movement from one state to another.
o Action is an activity to be performed by the state machine.
• A Finite State Machine (FSM) model is one in which the number of states are finite. In other
words the system is described using a finite number of possible states.
o As an example let us consider the design of an embedded system for driver/ passenger
'Seat Belt Warning' in an automotive using the FSM model. The system requirements are
captured as.
o When the vehicle ignition is turned on and the seat belt is not fastened within 10 seconds
of ignition ON, the system generates an alarm signal for 5 seconds.
21
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o The Alarm is turned off when the alarm time (5 seconds) expires or if the driver/
passenger fasten the belt or if the ignition switch is turned off, whichever happens first.
o Here the states are 'Alarm Off', 'Waiting' and 'Alarm On' and the events are 'Ignition Key
ON', 'Ignition Key OFF', 'Timer Expire', 'Alarm Time Expire' and 'Seat Belt ON'.
o Using the FSM, the system requirements can be modeled as given in following Figure.
o The 'Ignition Key ON' event triggers the 10 second timer and transitions the state to
'Waiting'.
o If a 'Seat Belt ON' or 'Ignition Key OFF' event occurs during the wait state, the state
transitions into 'Alarm Off'.
o When the wait timer expires in the waiting state, the event 'Timer Expire' is generated and
it transitions the state to 'Alarm On' from the 'Waiting' state.
o The 'Alarm On' state continues until a 'Seat Belt ON' or 'Ignition Key OFF' event or
'Alarm Time Expire' event, whichever occurs first. The occurrence of any of these events
transitions the state to 'Alarm Off'.
o The wait state is implemented using a timer. The timer also has certain set of states and
events for state transitions. Using the FSM model, the timer can be modeled as shown in
the following Figure.
22
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
o As seen from the FSM, the timer state can be either 'IDLE' or 'READY' or 'RUNNING'.
o During the normal condition when the timer is not running, it is said to be in the 'IDLE'
state.
o The timer is said to be in the 'READY' state when the timer is loaded with the count
corresponding to the required time delay. The timer remains in the 'READY' state until a
'Start Timer' event occurs.
o The timer changes its state to 'RUNNING' from the 'READY' state on receiving a 'Start
Timer' event and remains in the 'RUNNING' state until the timer count expires or a 'Stop
Timer' even occurs. The timer state changes to 'IDLE' from 'RUNNING' on receiving a
'Stop Timer' or 'Timer Expire' event.
Example 1: Design an automatic tea/ coffee vending machine based on FSM model for the following
requirement.
✓ The tea/ coffee vending is initiated by user inserting a 5 rupee coin. After inserting the coin, the
user can either select 'Coffee' or 'Tea' or press 'Cancel' to cancel the order and take back the coin.
The FSM representation for the above requirement is given in the following Figure.
• The FSM representation contains four states namely; 'Wait for coin' 'Wait for User Input',
'Dispense Tea' and 'Dispense Coffee'.
• The event 'Insert Coin' (5 rupee coin insertion), transitions the state to 'Wait for User Input'. The
system stays in this state until a user input is received from the buttons 'Cancel', 'Tea' or 'Coffee'.
• If the event triggered in 'Wait State' is 'Cancel' button press, the coin is pushed out and the state
transitions to 'Wait for Coin'. If the event received in the 'Wait State' is either 'Tea' button press, or
'Coffee' button press, the state changes to 'Dispense Tea' or 'Dispense Coffee' respectively.
• Once the coffee/ tea vending is over, the respective states transitions back to the 'Wait for Coin'
state.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
23
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Example 2: Design a coin operated public telephone unit based on FSM model for the following
requirements.
1. The calling process is initiated by lifting the receiver (off-hook) of the telephone unit
2. After lifting the phone the user needs to insert a 1 rupee coin to make the call
3. If the line is busy, the coin is returned on placing the receiver back on the hook (on-hook)
4. If the line is through, the user is allowed to talk till 60 seconds and at the end of 45th second,
prompt for inserting another 1 rupee coin for continuing the call is initiated
5. If the user doesn't insert another 1 rupee coin, the call is terminated on completing the 60 seconds
time slot
6. The system is ready to accept new call request when the receiver is placed back on the hook (on-
hook)
7. The system goes to the 'Out of Order' state when there is a line fault.
The FSM model shown in the following Figure is a simple representation.
• Most of the time state machine model translates the requirements into sequence driven program
and it is difficult to implement concurrent processing with FSM. This limitation is addressed by
the Hierarchical/ Concurrent Finite State Machine model (HCFSM).
• The HCFSM is an extension of the FSM for supporting concurrency and hierarchy.
• HCFSM extends the conventional state diagrams by the AND, OR decomposition of States
together with inter level transitions and a broadcast mechanism for communicating between
concurrent processes.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
24
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• HCFSM uses statecharts for capturing the states, transitions, events and actions.
• The Harel Statechart, UML State diagram, etc. are examples for popular statecharts used for the
HCFSM modeling of embedded systems.
Sequential Program Model: In the sequential programming Model, the functions or processing
requirements are executed in sequence. It is same as the conventional procedural programming.
• Here the program instructions are iterated and executed conditionally and the data gets
transformed through a series of operations.
• FSMs are good choice for sequential program modeling.
• Another important tool used for modeling sequential program is Flow Charts.
• The FSM approach represents the states, events, transitions and actions, whereas the Flow Chart
models the execution flow.
• The execution of functions in a sequential program model for the 'Seat Belt Warning' system is
illustrated below.
#define ON 1
#define OFF 0
#define YES 1
#define NO 0
void seat_belt_warn ()
{ wait_10sec ():
if (check_ignition_key () == ON)
{
if (check_seat_belt () == OFF)
{
set_timer (5);
start_alarm ():
while ((check_seat_belt ()
== OFF) &&
(check_ignition_key ()
== OFF) &&
(timer_expire () == ON));
stop_alarm ():
}
}
}
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
25
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Concurrent/ Communicating Process Model: The concurrent or communicating process model models
concurrently executing tasks/ processes.
• It is easier to implement certain requirements in concurrent processing model than the
conventional sequential execution.
• Sequential execution leads to a single sequential execution of task and thereby leads to poor
processor utilization, when the task involves I/O waiting, sleeping for specified duration etc.
• If the task is split into multiple subtasks, it is possible to tackle the CPU usage effectively, when
the subtask under execution goes to a wait or sleep mode, by switching the task execution.
• However, concurrent processing model requires additional overheads in task scheduling, task
synchronization and communication.
• As an example for the concurrent processing model let us examine how we can implement the
'Seat Belt Warning' system in concurrent processing model. We can split the tasks into:
1. Timer task for waiting 10 seconds (wait timer task)
2. Task for checking the ignition key status (ignition key status monitoring task)
3. Task for checking the seat belt status (seat belt status monitoring task)
4. Task for starting and stopping the alarm (alarm control task)
5. Alarm timer task for waiting 5 seconds (alarm timer task)
• We have five tasks here and we cannot execute them randomly or sequentially. We need to
synchronize their execution through some mechanism.
• We need to start the alarm only after the expiration of the 10 seconds wait timer and that too only
if the seat belt is OFF and the ignition key is ON. Hence the alarm: control task is executed only
when the wait timer is expired and if the ignition key is in the ON state and seat belt is in the OFF
state.
• One way of implementing a concurrent model for the 'Seat Belt Warning' system is illustrated in
the following Figure.
26
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Object-Oriented Model: The object-oriented model is an object based model for modeling system
requirements. It disseminates a complex software requirement into simple well defined pieces called
objects.
• Object-oriented model brings re-usability, maintainability and productivity in system design.
• In the object-oriented modelling, object is an entity used for representing or modeling a particular
piece of the system. Each object is characterized by a set of unique behavior and state. A class is
an abstract description of a set of objects and it can be considered as a 'blueprint' of an object.
• A class represents the state of an object through member variables and object behavior through
member functions. The member variables and member functions of a class can be private, public
or protected.
o Private member variables and functions are accessible only within the class, whereas
public variables and functions are accessible within the class as well as outside the class.
o The protected variables and functions are protected from external access.
27
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• However classes derived from a parent class can also access the protected member functions and
variables.
• The concept of object and class brings abstraction, hiding and protection.
28
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
2. Start the first task and execute it
3. Execute the second task
4. Execute the next task
5. :
6. :
7. Execute the last defined task
8. Jump back to the first task and follow the same flow.
• From the firmware execution sequence, it is obvious that the order in which the tasks to be
executed are fixed and they are hard coded in the code itself. Also the operation is an infinite loop
based approach.
• We can visualize the operational sequence listed above in terms of a ‘C’ program code as –
void main ()
{
configurations ();
initializations ();
while (1)
{
Task 1 ();
Task 2 ():
:
:
Task n ();
}
}
• From the above 'C' code you can see that the tasks 1 to n are performed one after another and
when the last task (nth task) is executed, the firmware execution is again re-directed to Task 1 and
it is repeated forever in the loop. This repetition is achieved by using an infinite loop. This
approach is also referred as 'Super loop based Approach'.
• Since the tasks are running inside an infinite loop, the only way to come out of the loop is either a
hardware reset or an interrupt assertion.
o A hardware reset brings the program execution back to the main loop.
o An interrupt request suspends the task execution temporarily and performs the corresponding
interrupt routine and on completion of the interrupt routine it restarts the task execution from
the point where it got interrupted.
29
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The 'Super loop based design' doesn't require an operating system, since there is no need for
scheduling which task is to be executed and assigning priority to each task. In a super loop based
design, the priorities are fixed and the order in which the tasks to be executed are also fixed.
Hence the code for performing these tasks will be residing in the code memory without an
operating system image.
• Super loop based design is deployed in low cost embedded products and products where response
time is not time critical. Some embedded products demand this type of approach.
o For example, reading/writing data to and from a card using a card reader requires a
sequence of operations like checking the presence of card, authenticating the operation,
reading/writing, etc.
o A typical example of a 'Super loop based' product is an electronic video game toy
containing keypad and display unit. The program running inside the product may be
designed in such a way that it reads the keys to detect whether the user has given any
input and if any key press is detected the graphic display is updated. Even if the
application misses a key press, it won't create any critical issues; rather it will be treated
as a bug in the firmware.
• The 'Super loop based design' is simple and straight forward without any OS related overheads.
• The major drawback of this approach is that any failure in any part of a task will affect the total
system. If the program hangs up at some point while executing a task, it may remain there forever
and ultimately the product stops functioning.
• Another major drawback of 'Super loop based design' approach is the lack of real timeliness. If
the number of tasks to be executed within an application increases, the time at which each task is
repeated also increases. This brings the probability of missing out some events.
o For example in a system with Keypads, according to the 'Super loop design', there will be
a task for monitoring the keypad connected I/O lines and this need not be the task running
while you press the keys. In order to identify the key press, you may have to press the
keys for a sufficiently long time, till the keypad status monitoring task is executed
internally by the firmware. This will really lead to the lack of real timeliness.
• There are corrective measures for this also. The best advised option in use interrupts for external
events requiring real time attention.
30
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The General Purpose OS (GPOS) based design is very similar to a conventional PC based
application development, where the device contains an operating system (Windows/ Unix/ Linux,
etc. for Desktop PCs) and you will be creating and running user applications on top of it.
o Example of a GPOS used in embedded product development is Microsoft® Windows XP
Embedded 8.1, whch offers customization to use industry devices like Personal Digital
Assistants (PDAs), Hand held devices/ Portable devices, Point of Sale (PoS) Terminals,
Patient Monitoring Systems, etc.
• OS based applications also require 'Driver software' for different hardware present on the board to
communicate with them.
• The Real Time Operating System (RTOS) based design is employed in embedded products
demanding Real-time response.
• RTOS respond in a timely and predictable manner to events. Real Time operating system
contains a Real Time kernel responsible for performing pre-emptive multitasking, scheduler for
scheduling tasks, multiple threads, etc. A Real Time Operating System (RTOS) allows flexible
scheduling of system resources like the CPU and memory and offers some way to communicate
between tasks.
o 'Windows Embedded Compact', 'pSOS', 'VxWorks', 'ThreadX', 'MicroC/OS-III',
'Embedded Linux', 'Symbian', etc., are examples of RTOS employed in embedded product
development.
31
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• Assembly language programming is the task of writing processor specific machine code in
mnemonic form, converting the mnemonics into actual processor instructions (machine language)
and associated data using an assembler.
• The general format of an assembly language instruction is an Opcode followed by Operands.
• The Opcode tells the processor/ controller what to do and the Operands provide the data and
information required to perform the action specified by the opcode.
o Example: MOV A, #30 – This instruction mnemonic moves decimal value 30 to the 8051
Accumulator register. Here MOV A is the Opcode and 30 is the operand. The same
instruction when written in machine language: 01110100 00011110 – where the first 8-bit
binary value 01110100, represents the opcode MOV A and the second 8-bit binary value
00011110 represents the operand 30.
o The mnemonic INC A is an example for instruction holding operand implicitly in the
Opcode. The machine language representation of the same is 00000100.
• Assembly language instructions are written one per line.
• A machine code program thus consists of a sequence of assembly language instructions, where
each statement contains a mnemonic (Opcode + Operands). Each line of an assembly language
program is split into four fields as given below:
32
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The sample code given below using 8051 Assembly language illustrates the structured assembly
language programming. Each Assembly instruction should be written in a separate line.
DELAY: MOV R0, #255 ; Load Register R0 with 255.
DJNE R1, DELAY ; Decrement R1 and loop till R1 = 0.
RET ; Return to calling program.
• The Assembly program contains a main routine and it may or may not contain subroutines. The
example given above is a subroutine, which can be invoked by a main program by the Assembly
instruction: LCALL DELAY
o Executing this instruction transfers the program flow to the memory address referenced
by the 'LCALL DELAY'.
• It is a good practice to provide comments to your subroutines by indicating the purpose of that
subroutine/ instruction.
• While assembling the code a ';' informs the assembler that the rest of the part coming in the line
after the ';' symbol is comments and simply ignore it.
• In the above example the label DELAY represents the reference to the start of the subroutine
DELAY. The required address is calculated by the assembler at the time of assembling the
program and it replaces the label.
• Label can also be directly replaced by putting the desired address first and then writing the
Assembly code, as given below:
ORG 0100H
MOV R0, #255 ; Load Register R0 with 255.
DJNE R1, DELAY ; Decrement R1 and loop till R1 = 0.
RET ; Return to calling program.
• The statement ORG 0100H in the above example is not an assembly language instruction; it is an
assembler directive instruction. It tells the assembler that the Instructions from here onward
should be placed at location starting from 0100H. The Assembler directive instructions are known
as 'pseudo- ops'. They are used for –
1. Determining the start address of the program (e.g. ORG 0000H)
2. Determining the entry address of the program (e.g. ORG 0100H)
3. Reserving memory for data variables, arrays and structures (e.g. NUM1 EQU 70H)
4. Initializing variable values (e.g. VALUE DATA 12H)
o The EQU directive is used for allocating memory to a variable and DATA directive is
used for initializing a variable with data. No machine codes are generated for the 'pseudo-
ops'.
33
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The Assembly language program written in assembly code is saved as .asm (Assembly file) file
or .src (source) file. Any text editor like 'notepad' or 'WordPad' from Microsoft® or the text editor
provide by an Integrated Development (IDE) tool can be used for writing the assembly
instructions.
• When a program is too complex or too big; the entire code can be divided into sub-modules and
each module can be re-usable (called as Modular Programming). Modular programs are usually
easy to code, debug and alter.
Source File to Object File Translation: Translation of assembly code to machine code is performed by
assembler. The assemblers for different target machines are different. Assemblers from multiple vendors
are available in market. A51 Macro assembler from Keil software is a popular assembler for the 8051
family microcontroller.
• The various steps involved in the conversion of a program written in assembly language to
corresponding binary file/ machine language is illustrated in the following Figure.
• Each source module is written in Assembly and is stored as .src file or .asm file. Each file can be
assembled separately to examine the syntax errors and incorrect assembly instructions. On
successful assembling of each .src/ .asm file a corresponding object file is created with extension
'.obj'.
• The object file does not contain the absolute address of where the generated code needs to be
placed on the program memory and hence it is called re-locatable segment. It can be placed at
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
34
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
any code memory location and it is the responsibility of the linker/ locater to assign absolute
address for this module.
• Absolute address allocation is done at the absolute object file creation stage. Each module can
share variables and subroutines (functions) among them.
• Exporting a variable/ function from a module (making a variable/ function from a module
available to all other modules) is done by declaring that variable function as PUBLIC in the
source module.
• Importing a variable or function from a module (taking a variable or function from any one of
other modules) is done by declaring that variable or function as EXTREN) in the module where it
is going to be accessed.
Library File Creation and Usage: Libraries are specially formatted, ordered program collections of
object modules that may be used by the linker at a later time. When the linker processes a library, only
those object modules in the library that are necessary to create the program are used. Library files are
generated with extension '.lib'.
• Library is some kind of source code hiding technique. If you don't want to reveal the source code
behind the various functions you have written in your program and at the same time you want
them to be distributed to application developers for making use of them in their applications, you
can supply them as library files and give them the details of the public functions available from
the library (function name, function input/output, etc). For using a library file in a project, add the
library to the project.
o 'LIB51' from K eil Software is an example for a library creator and it is used for creating
library files for A51 Assembler/ C51 Compiler for 8051 specific controller.
Linker and Locater: Linker and Locater is another software utility responsible for "linking the various
object modules in a multi-module project and assigning absolute address to each module".
• Linker is a program which combines the target program with the code of other programs
(modules) and library routines.
• During the process of linking, the absolute object module is created. The object module contains
the target code and information about other programs and library routines that are required to call
during the program execution.
• An absolute object file or module does not contain any re-locatable code or data. All code and
data reside at fixed memory locations. The absolute object file is used for creating hex files for
dumping into the code memory of the processor/ controller.
35
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• 'BL51' from Keil Software is an example for a Linker & Locater for A51 Assembler/ C51
Compiler for 8051 specific controller.
Object to Hex File Converter: This is the final stage in the conversion of Assembly language
(mnemonics) to machine understandable language (machine code).
• Hex File is the representation of the machine code and the hex file is dumped into the code
memory of the processor/ controller.
• The hex file representation varies depending on the target processor/ controller make.
o For Intel processors/ controllers the target hex file format will be 'Intel HEX' and for
Motorola, the hex file should be in 'Motorola HEX' format.
• HEX files are ASCII files that contain a hexadecimal representation of target application. Hex file
is created from the final 'Absolute Object File' using the Object to Hex File Converter utility.
• 'QH51' from Keil software is an example for Object to Hex File Converter utility for A51
Assembler/ C51 Compiler for 8051 specific controller.
Advantages of Assembly Language Based Development: Assembly Language based development was
(is) the most common technique adopted from the beginning of embedded technology development.
Thorough understanding of the processor architecture memory organization, register sets and mnemonics
is very essential for Assembly Language based development. The major advantages of Assembly
Language based development listed below.
• Efficient Code Memory and Data Memory Usage (Memory Optimization): Since the developer
is well versed with the target processor architecture and memory organization, optimized code
can be written for performing operations. This lead less utilization of code memory and efficient
utilization of data memory.
• High Performance: Optimized code not only improves the code memory usage, but also
improves the total system performance. Through effective assembly coding, optimum
performance can be achieved for a target application.
• Low Level Hardware Access: Most of the code for low level programming like accessing
external device specific registers from the operating system kernel, device drivers, and low level
interrupt routines, etc., are making use of direct assembly coding; since low level device specific
operation support is not commonly available with most of the high-level language cross
compilers.
• Code Reverse Engineering: Reverse engineering is the process of understanding the technology
behind a product by extracting the information from a finished product. Reverse engineering is
performed by 'hackers' to reveal the technology behind 'Proprietary Products'.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
36
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Drawbacks of Assembly Language Based Development: Every technology has its own pros and cons.
From certain technology aspects assembly language development is the most efficient technique. But it is
having the following technical limitations also.
• High Development Time: Assembly language is much harder to program than high level
languages. The developer must pay attention to more details and must have thorough knowledge
of the architecture, memory organization and register details of the target processor in use.
Learning the inner details of the processor and its assembly instructions is highly time consuming
and it creates a delay impact in product development.
• Developer Dependency: There is no common written rule for developing assembly language
based applications, whereas all high level languages instruct certain set of rules for application
development. In assembly language programming, the developers will have the freedom to
choose the different memory location and registers. Also the programming approach varies from
developer to developer depending on his/ her taste.
o For example moving data from a memory location to accumulator can be achieved
through different approaches.
o If the approach done by a developer is not documented properly at the development
stage, he/ she may not be able to recollect why this approach is followed at a later stage
or when a new developer is instructed to analyze this code, he/ she also may not be able
to understand. Hence upgrading an assembly program on a later stage is very difficult.
• Non-Portable: Target applications written in assembly instructions are valid only for that
particular family of processors (e.g. Application written for Inte x86 family of processors) and
cannot be re-used for another target processors/ controllers (Say ARM Cortex M family of
processors). If the target processor/ controller changes, a complete re-writing of the application
using the assembly instructions for the new target processor/ controller is required.
37
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• ‘C’ is the well defined, easy to use high level language with extensive cross platform
development tool support. Nowadays Cross-compilers for C+ + is also emerging out and
embedded developers are making use of C++ for embedded application development.
• The various steps involved in high level language based embedded firmware development is
same as that of assembly language based development, except that the conversion of source file
written in high level language to object file is done by a cross-compiler, whereas in Assembly
language based development, it is carried out by an assembler.
• The various steps involved in the conversion of a program written in high level language to
corresponding binary file/ machine language is illustrated in the following Figure.
• The program written in any of the high level language is saved with the corresponding language
extension (.c for C, .cpp for C++ etc). Any text editor like 'notepad' or 'WordPad ' from
Microsoft® or the text editor provided by an Integrated Development (IDE) tool supporting the
high level language can be used for writing the program.
• Most of the high level languages support modular programming approach and hence you can
have multiple source files called modules written in corresponding high level language.
• Translation of high level source code to executable object code is done by a cross-compiler. The
cross-compilers for different high level languages for the same target processor are different.
• C51 is a popular. Cross-compiler available for 'C' language for the 8051 family of micro
controller. Conversion of each module's source code to correspond- ing object file is performed
by the cross compiler.
ARUNA KUMAR B T, Asst. Prof, Dept. of CSE, GMIT, Davanagere.
38
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• Rest of the steps involved in the conversion of high level language to target processor's machine
code are same as that of the steps involved in assembly language based development.
39
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
• The investment required for high level language based development tools (Integrated
Development Environment incorporating cross-compiler) is high compared to Assembly
Language based firmware development tools.
Mixing Assembly with High Level Language (e.g. Assembly Language with ‘C’): Assembly routines are
mixed with 'C' in situations where the entire program is written in 'C' and the cross-compiler do not have a
built in support for implementing certain features like Interrupt Service Routine functions (ISR) or if the
programmer wants to take advantage of the speed and optimized code offered by machine code generated
by hand written assembly rather than cross compiler generated machine code.
When accessing certain low level hardware, the timing specifications may be very critical and a cross-
compiler generated binary may not be able to offer the required time specifications accurately. Writing
the hardware/ peripheral access routine in processor/ controller specific Assembly language and invoking
it from 'C' is the most advised method to handle such situations.
Mixing 'C' and Assembly is little complicated; in the sense-the programmer must be aware of how
parameters are passed from the 'C' routine to Assembly and values a returned from assembly routine to 'C'
and how 'Assembly routine' is invoked from the 'C' code.
The following steps give an idea how C51 cross-compiler performs the mixing of Assembly code with
'C':
1. Write a simple function in C that passes parameters and returns values the way you want your
assembly routine to.
2. Use the SRC directive ( #PRAGMA SRC at the top of the file) so that the C compiler generates an
.SRC file instead of an .OBJ file.
3. Compile the C file. Since the SRC directive is specified, the .SRC file is generated. The .SRC file
contains the assembly code generated for the C code you wrote.
4. Rename the .SRC file to .A51 file.
5. Edit the .A51 file and insert the assembly code you want to execute in the body of the assembly
function shell included in the .A51 file.
40
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
Mixing High level language with Assembly (e.g. 'C' with Assembly Language): Mixing the code written
in a high level language like 'C' and Assembly language is useful in the following scenarios:
1. The source code is already available in Assembly language and a routine written in a high level
language like 'C' needs to be included to the existing code.
2. The entire source code is planned in Assembly code for various reasons like optimized code,
optimal performance, efficient code memory utilization and proven expertise in handling the
Assembly, etc. But some portions of the code may be very difficult and tedious to code in
Assembly. For example 16-bit multiplication and division in 8051 Assembly Language.
3. To include built in library functions written in 'C' language provided by the cross compiler. For
example: Built in Graphics library functions and String operations supported by 'C'.
Inline Assembly: Inline assembly is another technique for inserting target processor/ controller specific
Assembly instructions at any location of a source code written in high level language ‘C’. This avoids the
delay in calling an assembly routine from a ‘C’ code. Special keywords are used to indicate the start and
end of Assembly instructions. C51 uses the keywords #pragma asm and #pragma endasm to indicate a
block of code written in assembly.
‘C’ versus ‘Embedded C’: 'C' is a well structured, well defined and standardized general purpose
programming language with extensive bit manipulation support. 'C' offers a combination of the features of
high level language and assembly and helps in hardware access programming (system level
programming) as well as business package developments (Application developments like pay roll
systems, banking applications, etc). The conventional 'C' language follows ANSI standard and it
incorporates various library files for different operating systems. A platform (operating system) specific
application, known as, compiler is used for the conversion of programs written in 'C' to the target
processor (on which the OS is running) specific binary files. Hence it is a platform specific development.
Embedded C can be considered as a subset of conventional ‘C’ language. Embedded C supports all 'C'
instructions and incorporates a few target processor specific functions/ instructions. It should be noted
that the standard ANSI 'C' library implementation is always tailored to the target processor/ controller
library files in Embedded C. The implementation of target processor/ controller specific functions/
instructions depends upon the processor/ controller as well as supported cross-compiler for the particular
Embedded C language. A software program called 'Cross-compiler' is used for the conversion of
programs written in Embedded C to target processor/ controller specific instructions (machine language).
41
MICROCONTROLLER AND EMBEDDED SYSTEMS
18CS44
C Embedded C
C is a general purpose programming language,
Embedded C is an extension of C language and used
which can be used to design any type of desktop-
to develop microcontroller-based applications.
based applications.
C language program is hardware independent. Embedded C program is hardware dependent.
Embedded C requires specific compilers that are
C language uses standard compilers to compile
able to generate particular hardware/
and execute the program.
microcontroller-based output.
Readability, modifications, bug fixing, etc., are Readability, modifications, bug fixing, etc., are not
very easy in a C language program. easy in a Embedded C language program.
Compiler versus Cross-Compiler: Compiler is a software tool that converts a source code written in a
high level language on top of a particular operating system running on specific target processor
architecture (e.g. Intel x86/ Pentium). Here the operating system, the complier program and the
application making use of the source code run on the same target processor. The source code is converted
to the target processor specific machine instructions. The development is platform specific (OS as well as
target processor on which the OS is running). Compilers are generally termed as 'Native Compilers'. A
native compiler generates machine code for the same machine (processor) on which it is running.
NOTE: The term 'Compiler' is used interchangeably with 'Cross-compiler' in embedded firmware
applications. Whenever you see the term 'Compiler' related to any embedded firmware application, please
understand that it is referring the cross-compiler.
*********
*********
42