You are on page 1of 12

Unit-iii

Embedded firmware is the flash memory chip that stores


specialized software running in a chip in an embedded device to control its
functions.
Firmware in embedded systems fills the same purpose as a ROM but can be
updated more easily for better adaptability to conditions or interconnecting
with additional equipment.
Hardware makers use embedded firmware to control the functions of various
hardware devices and systems much like a computer’s operating system
controls the function of software applications. Embedded firmware exists in
everything from appliances so simple you might not imagine they had
computer control, like toasters, to complex tracking systems in missiles. The
toaster would likely never need updating but the tracking system sometimes
does. As the complexity of a device increases, it often makes sense to use
firmware in case of design errors that an update might correct.
Embedded firmware is used to control the limited, set functions of hardware
devices and systems of greater complexity but still gives more appliance-like
usage instead of a series of terminal commands. Embedded firmware
functions are activated by external controls or external actions of the
hardware. Embedded firmware and ROM-based embedded software often
have communication links to other devices for functionality or to address the
need for the device to be adjusted, calibrated or diagnosed or to output log
files. It is also through these connections that someone might
attempt embedded device hacking.

Embedded software varies in complexity as much the devices it is used to


control. Although embedded software and embedded firmware are sometimes
used synonymously, they are not exactly the same thing. For example,
embedded software may run on ROM chips. Also, embedded software is often
the only computer code running on a piece of hardware while firmware can
also refer to the chip that houses a computer’s EFI or BIOS, which hands over
control to an OS that in turn launches and controls programs.
EMBEDDED PRODUCT DEVELOPMENT LIFE
CYCLE (EDLC)
EDLC is Embedded Product Development Life Cycle
It is an Analysis – Design – Implementation based problem solving approach for
embedded systems development.
There are three phases to Product development:

Analysis involves understanding what product needs to be developed

Design involves what approach to be used to build the product

Implementation is developing the product by realizing the design.

2.1 Need for EDLC

EDLC is essential for understanding the scope andcomplexity of the work


involved in embedded systems development
It can be used in any developing any embedded product
EDLC defines the interaction and activities among variousgroups of a product
development phase.
Example:-project management, system design
2.2 Objectives of EDLC
The ultimate aim of any embedded product in a commercial production setup is to
produce Marginal benefit
Marginal is usually expressed in terms of Return On Investment
The investment for product development includes initial investment, manpower,
infrastructure investment etc.
EDLC has three primary objectives are:
Ensure that high quality products are delivered to user
Quality in any product development is Return On Investment
achieved by the product
The expenses incurred for developing the product the product
are:-
Initial investment
Developer recruiting
Training
Infrastructure requirement related
Risk minimization defect prevention in product development through project
management
In which required for product development ‘loose’ or ‘tight’ project
management
‘project management is essential for ’ predictability co-ordination and
risk minimization
Resource allocation is critical and it is having a direct impact on
investment
Example:- Microsoft @ Project Tool
Maximize the productivity
Productivity is a measure of efficiency as well as Return On Investment
This productivity measurement is based on total manpower efficiency
Productivity in which when product is increased then investment is fall
down
Saving manpower
3 DIFFERENT PHASES OF EDLC
The following figure depicts the different phases in EDLC:
Need
The need may come from an individual or from the public or from a company.
‘Need’ should be articulated to initiate the Development Life Cycle; a ‘Concept
Proposal’ is prepared which is reviewed by the senior management for approval.
Need can be visualized in any one of the following three needs:
New or Custom Product Development.
Product Re-engineering.
Product Maintenance.
Conceptualization
Defines the scope of concept, performs cost benefit analysis and feasibility study
and prepare project management and risk management plans.
The following activities performed during this phase:
Feasibility Study : Examine the need and suggest possible solutions.
Cost Benefit Analysis (CBA): Revealing and assessing the total development cost
and profit expected from the product.
Product Scope: Deals with the activities involved in the product to be made.
Planning Activities: Requires various plans to be developed first before
development like Resource Planning & Risk management Plans.
Analysis
The product is defined in detail with respect to the inputs, processes, outputs, and
interfaces at a functional level.
The various activities performed during this phase..
• Analysis and Documentations: This activity consolidates the business needs of
the product under development.
DataFlow Graphs
A data flow graph is a model of a program with noconditionals. In a high-level
programming language, a code segment withno conditionals—more precisely,
with only one entry and exit point—isknown as a basic block. Figure 5-
3below shows a simple basic block. As the C code is executed, wewould enter this
basic block at the beginning and execute all thestatements.
w = a + b;
x = a – c;
y = x+ d;
x = a + c;
z= y + e;
Figure 5-3. A basicblock in C
Before we are able to draw the data flow graph forthis code we need to modify it
slightly. There are two assignments tothe variable x – it appears twice on the left
side of an assignment. Weneed to rewrite the code in single-assignmentform,in
which a variable appears only once on the left side.
Since our specification is C code, we assume that thestatements are executed
sequentially, so that any use of a variablerefers to its latest assigned value. In this
case, x is not reused inthis block (presumably it is used elsewhere), so we just
have toeliminate the multiple assignment to x . The result is shown in Figure 5-4
below , where we have usedthe names x1 and x2 to distinguish the separate uses
of x.

w = a + b;
x1 = a – c;
y = x1 + d;
x2 = a + c;
z = y + e;
Figure 5-4 . The basic block in single-assignment form .
The single-assignment form is important because itallows us to identify a unique
location in the code where each namedlocation is computed. As an introduction
to the data flow graph, we usetwo types of nodes in the graph— round nodes
denote operators andsquare nodes represent values. The value nodes may be
either inputs tothe basic block, such as a and b , or variables assigned to within
theblock, such as w and x1 . The data flow graph for our single-assignmentcode is
shown in Figure 5-5 below.
The single-assignment form means that thedata flow graph is acyclic—if we
assigned to x multiple times, then thesecond assignment would form a cycle in
the graph including x and theoperators used to compute x .
Keeping the data flow graph acyclic isimportant in many types of analyses we
want to do on the graph. (Ofcourse, it is important to know whether the source
code actuallyassigns to a variable multiple times, because some of those
assignmentsmay be mistakes. We consider the analysis of source code for proper
useof assignments later in this series.)
Figure5-5. An extended data flow graph for our sample block

The data flow graph is generally drawn in the formshown in Figure 5-6 below.
Here, the variables are not explicitlyrepresented by nodes. Instead, the edges are
labeled with the variablesthey represent. As a result, a variable can be
represented by more thanone edge. However, the edges are directed and all the
edges for avariable must come from a single source. We use this form for
itssimplicity and compactness.
<="" strong="" style="box-sizing: inherit; font-weight: normal;">
<="" strong="" style="box-sizing: inherit; font-weight: normal;">
Figure5-6. Standard data flow graph for sample basic block

The data flowgraph for the code makes the order inwhich the operations are
performed in the C code much less obvious.This is one of the advantages of the
data flow graph. We can use it todetermine feasible reorderings of the
operations, which may help us toreduce pipeline or cache conflicts.
We can also useit when the exact order of operationssimply doesn't matter. The
data flow graph defines a partial orderingof the operations in the basic block. We
must ensure that a value iscomputed before it is used, but generally there are
several possibleorderings of evaluating expressions that satisfy this requirement.
Control/DataFlow Graphs
A CDFG uses a data flow graph as an element, adding constructs todescribe
control. In a basic CDFG, we have two types of nodes: decisionnodes and data
flow nodes.
A data flow nodeencapsulates a complete data flowgraph to represent a basic
block. We can use one type of decision nodeto describe all the types of control in
a sequential program. (Thejump/branch is, after all, the way we implement all
those high-levelcontrol constructs.)
Figure 5-7 below shows a bit of C code with controlconstructs and the CDFG
constructed from it. The rectangular nodes inthe graph represent the basic
blocks. The basic blocks in the C codehave been represented by function calls for
simplicity. Thediamond-shaped nodes represent the conditionals. The node's
conditionis given by the label, and the edges are labeled with the
possibleoutcomes of evaluating the condition.
Building a CDFGfor a while loop is straightforward,as shown in Figure 5-8
below .The while loop consists of both a test and aloop body, each of which we
know how to represent in a CDFG. We canrepresent for loops by remembering
that, in C, a for loop is defined interms of a while loop. The following for loop

for (i = 0; i< N; i++) {


loop_body();
}
is equivalent to
State Machine Model
A state machine model is a mathematical model that groups all
possible system occurrences, called states. Every possible state of a
system is evaluated, showing all possible interactions between
subjects and objects. If every state is proven to be secure, the system
is proven to be secure.
State machines are used to model real-world software when the
identified state must be documented along with how it transitions from
one state to another. For example, in object-oriented programming, a
state machine model may be used to model and test how an object
moves from an inactive state to an active state readily accepting input
and providing output
Concurrent Models
Concurrent models are those models within which the various activities of software
development happen at the same time, for faster development and a better outcome
Most of the successful software out there involves a series of phases of development, such as requirements
gathering and prototyping, that are put together to develop the software. These phases are discrete and often
performed concurrently. Often there is an intertwining between the phases, which makes it inevitable to return
to the earlier phases to make some changes according to the results obtained in the later phases. This type of a
model, in which multiple phases are performed concurrently, can be coined as a concurrent model.
object oriented Model.
In the object-oriented approach, the focus is on capturing the structure and behavior of
information systems into small modules that combines both data and process. The main
aim of Object Oriented Design (OOD) is to improve the quality and productivity of system
analysis and design by making it more usable.
In analysis phase, OO models are used to fill the gap between problem and solution. It
performs well in situation where systems are undergoing continuous design, adaption,
and maintenance. It identifies the objects in problem domain, classifying them in terms
of data and behavior.
The OO model is beneficial in the following ways −
 It facilitates changes in the system at low cost.
 It promotes the reuse of components.
 It simplifies the problem of integrating components to configure large system.
 It simplifies the design of distributed systems.

Elements of Object-Oriented System


Let us go through the characteristics of OO System −
 Objects − An object is something that is exists within problem domain and can be
identified by data (attribute) or behavior. All tangible entities (student, patient) and
some intangible entities (bank account) are modeled as object.
 Attributes − They describe information about the object.
 Behavior − It specifies what the object can do. It defines the operation performed
on objects.
 Class − A class encapsulates the data and its behavior. Objects with similar
meaning and purpose grouped together as class.
 Methods − Methods determine the behavior of a class. They are nothing more
than an action that an object can perform.
 Message − A message is a function or procedure call from one object to another.
They are information sent to objects to trigger methods. Essentially, a message
is a function or procedure call from one object to another.

Features of Object-Oriented System


An object-oriented system comes with several great features which are discussed below.

Encapsulation
Encapsulation is a process of information hiding. It is simply the combination of process
and data into a single entity. Data of an object is hidden from the rest of the system and
available only through the services of the class. It allows improvement or modification of
methods used by objects without affecting other parts of a system.

Abstraction
It is a process of taking or selecting necessary method and attributes to specify the
object. It focuses on essential characteristics of an object relative to perspective of user.

Relationships
All the classes in the system are related with each other. The objects do not exist in
isolation, they exist in relationship with other objects.
There are three types of object relationships −
 Aggregation − It indicates relationship between a whole and its parts.
 Association − In this, two classes are related or connected in some way such as
one class works with another to perform a task or one class acts upon other class.
 Generalization − The child class is based on parent class. It indicates that two
classes are similar but have some differences

You might also like