0% found this document useful (0 votes)
14 views62 pages

ES Unit 1 Part 2024

The document discusses various aspects of embedded system design, including platform selection, processor choice, and hardware-software integration. It outlines the Embedded Product Design Life Cycle (EDLC), detailing phases from need identification to retirement, and emphasizes the importance of co-design and computational models. Additionally, it covers tools and environments for embedded software development, highlighting the roles of host and target machines, compilers, and integrated development environments.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views62 pages

ES Unit 1 Part 2024

The document discusses various aspects of embedded system design, including platform selection, processor choice, and hardware-software integration. It outlines the Embedded Product Design Life Cycle (EDLC), detailing phases from need identification to retirement, and emphasizes the importance of co-design and computational models. Additionally, it covers tools and environments for embedded software development, highlighting the roles of host and target machines, compilers, and integrated development environments.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Issues in embedded system design

• Choosing Right platform


• Embedded system processor choice
• Factors and needed features taken into
consideration
• Hardware software tradeoff
System Integration
• The task of creating a properly functioning system from
its constituent components
– Hardware
– Firmware
– Software
• System Hardware Integration
– Are the components wired together correctly?
• System Software Integration
– Typically assumes hardware integration is largely complete
– The final step before acceptance testing and deployment
Traditional Design Flow
Co-design of Processors
• General-Purpose Processors
– Architectural support for operating systems.
– Cache design and tuning (e.g., selection of cache size
and control schemes).
– Pipeline control design (control mechanisms, compiler
design).
• ASIPs
– Customization of instruction sets and specific
resources (e.g., accelerator and coprocessor).
– Design of register files, buses and interconnections.
– Development of specific compiler.
Issues in Hardware Software co-design
• Selecting the model
• Models are used for capturing and describing the system
characteristics.
• Selecting the architecture
• The achitecture specifies the how a system is going to implement in
terms of number and types of different components and
interconnect among them.
• Selecting the language
• A programming language captures a computational model and
maps it into architecture.
• A model can be captured using mulpiple programming languages
like C,C++, java etc for software implementations and languages like
VHDL, Verilog, System C, etc. for hardware implementations.
• Partitioning system requirements into Hardware and Software
Computational models in embedded
Design
• Data flow graph/diagram (DFG) model
• Control data flow graph/diagram (CDFG)
• State machine model
What is Embedded product Design Life Cycle (EDLC)?
➢ EDLC is an Analysis-Design-Implementation
based problem solving approach for the
product development.

▪ Analysis – What product need to be


developed
▪ Design – Good approach for building it
▪ Implementation – To develop it
Why EDLC?
• Essential in understanding the scope and
complexities involved in any Embedded product
development.
• Defines interaction and activities among
Various groups of product development sector.
• Project management
• System design and development
• System testing
• Release management and quality assurance
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.
– Requirements that need to be addressed..
• Functional Capabilities like performance
• Operational and non-operational quality attribute
• Product external interface requirements
• Data requirements User manuals
• Operational requirements
• Maintenance requirements
• General assumptions
– Defining Test Plan and Procedures: The various type of testing
performed in a product development are:
• Unit testing – Testing Individual modules
• Integration testing – Testing a group of modules for required functionality
• System testing- Testing functional aspects or functional requirements of the
product after integration
• User acceptance testing- Testing the product to meet the end user
requirements.
• Design
– The design phase identifies application environment
and creates an overall architecture for the product.
– It starts with the Preliminary Design. It establishes the
top level architecture for the product. On completion
it resembles a ‘black box’ that defines only the inputs
and outputs. The final product is called Preliminary
Design Document (PDD).
– Once the PDD is accepted by the End User the next
task is to create the ‘Detailed Design’.
• Development and Testing
– Development phase transforms the design into a
realizable product.
– The detailed specification generated during the design
phase is translated into hardware and firmware.
– The Testing phase can be divided into independent
testing of firmware and hardware that is:
– Unit testing
– Integration testing
– System testing
– User acceptance testing
• Deployment
– Deployment is the process of launching the first fully functional model of
the product in the market.
– It is also known as First Customer Shipping (FCS).
• Tasks performed during this phase are:
– Notification of Product Deployment: Tasks performed here include:
• Deployment schedule
• Brief description about the product
• Targeted end user
• Extra features supported
• Product support information
– Execution of training plan Proper training should be given to the end
user top get them acquainted with the new product.
– Product installation
• Install the product as per the installation document to ensure that it is fully
functional.
– Product post Implementation Review
• After the product launch, a post implementation review is done to test the
success of the product.
• Support
– The support phase deals with the operational and
maintenance of the product in the production
environment.
– Bugs in the product may be observed and reported.
– The support phase ensures that the product meets the
user needs and it continues functioning in the production
environment.
– Activities involved under support are
– Setting up of a dedicated support wing: Involves providing
24 x 7 supports for the product after it is launched.
– Identify Bugs and Areas of Improvement: Identify bugs
and take measures to eliminate them.
• Upgrades
– Deals with the development of upgrades (new versions) for the
product which is already present in the market.
– Product upgrade results as an output of major bug fixes.
– During the upgrade phase the system is subject to design
modification to fix the major bugs reported.
• Retirement/Disposal
– The retirement/disposal of the product is a gradual process.
– This phase is the final phase in a product development life cycle
where the product is declared as discontinued from the market.
– The disposal of a product is essential due to the following
reasons
– Rapid technology advancement
– Increased user needs
Life Cycle Models
• The product life cycle of an embedded application
is purely a descriptive representation.
• It breaks the development process into a series of
interrelated activities.
• Each activity plays a role of transforming its input
(specification) into an output (a selected solution).
• The organization of the steps is done according to
a design process model – the life cycle model.
• Formality in design provides the structure for a
development that lets one creatively explore the
design while using the tools to manage some of
the more mechanical issues.
• The fundamentals of design are:
– Find out what the customers want.
– Think of a way to give them what they want.
– Prove what you have done by building and testing it.
– Build a lot of the product to prove that it wasn‘t an
accident.
– Use the product to solve the customer‘s problem.
• The common life cycle models are:
– Waterfall
– V Cycle
– Spiral
– Rapid Prototype
Embedded software development Tools
• "Embedded software" is the software that is embedded
in an electronic product to control its operation.
• Embedded software developers need embedded
software development tools to develop embedded
software.
• An embedded software development environment is an
integrated collection of software development tools that
manage the entire embedded software development
process: analyzing, designing, documenting, writing,
compiling, debugging, testing, optimizing, and verifying
software.
Host and Target Machines
• Introduction:
– Many embedded systems employ microprocessors or
microcontrollers intimately bound into dedicated
equipment. Such systems require a special approach to
software development.
– The target system is not often capable of supporting
the editors, compilers, linkers, debugging and code
control tools essential for the development task. So, a
larger computer is used for the actual code production.
• This is the host platform and is commonly a desktop PC
running Windows or a version of Unix.
• In this way all the hardware and software facilities of a larger
computer system can be utilized during the development
process.
Host and Target Machines
• If the selected target system has a different CPU to that in
the host computer, The executable code built on the host
machine can’t be run on the target machine.
• Most of the time host and target machines differ so that
programs built on the host machine can’t be run on the
target machine. These differences may take many forms.
• Some common differences between host and target
machines are:
– different operating system
– different system boards
– different processor.
• Additional problems occur with the need for cross-
compilers and associated target libraries.
• The host file system has to be carefully organized so as to
keep the native and cross-compilers and libraries well apart.
Host Machine
• A typical, general purpose computer or
workstation used for:
– Programming
– compiling
– (testing/emulation)
• Vast computing resources
– support sophisticated IDEs
– compilers and debugging environments.
• Where the embedded software is developed,
compiled, tested, debugged, optimized, and prior
to its translation into target device.
Target machine
• The Target machine is the embedded Hardware platform
• Target hardware consists of
– processor, memory, I/O
– Runtime environment (Operating System/Kernel)
– Target hardware platform contains only what is needed for
final deployment
– Target hardware platform does not contain development
tools (editor, compiler, debugger)
– Special purpose
• selected and supports:
– Testing
– Integration
– execution
– Deployment
Host and Target Machines
• Host: computer where tools are run „
• Target: processor you are shipping „
• Native tools – run on the host „
– Compilers
– Assemblers
– E.g. Windows NT compiler produces binary Pentium instructions (great
for Pentium, worthless for Motorola 68000) „
• Cross-Compilers „
– Runs on your host, but produces binary instructions for your target from
your C/C++ programs. „
• Cross-Assemblers „
– Runs on your host, but produces binary instructions for your target from
your assembly programs. „
• Tool Chains „
– Named because output of one tool becomes the input for the next tool „
– Tools compatible with a particular target are called a “Tool Chain” and
are available from different vendors.
Software Tools
• Software Development kit (SDK)
• Source-code Engineering Software tool
• Integrated Development Environment
• Editor
• Interpreter
• Testing and debugging tools
• Locator
Software development kit (SDK)
• A software development kit (SDK or devkit) is typically a set of
software development tools that allows
– the creation of applications for a certain software package, software
framework,
– hardware platform,
– computer system,
– video game console,
– operating system, or similar development platform.
• It may be something as simple as the implementation of one or more
application programming interfaces (APIs) in the form of
some libraries to interface to a particular programming language or
to include sophisticated hardware that can communicate with a
particular embedded system.
• Common tools include debugging facilities and other utilities.
Source Code Engineering Tool
• Typical tool Features Typical tool Features
– Comprehension, Navigation and browsing.
– Editing, Debugging,
– Configuring (disabling and enabling specific C++
features) and Compiling.
– Searches and lists the definitions, symbols, hierarchy
of the classes, and class inheritance trees.
– Symbols include the class members.
– Searches and lists the dependencies of symbols and
defined symbols, variables and functions.
Integrated Development Environment (IDE)
• An integrated development environment (IDE) is a
software suite that consolidates the basic tools,
developers need to write and test software.
• In embedded system development context, IDE stands
for an integrated environment for developing and
debugging the target processor specific embedded
firmware.
• Typically, an IDE contains a code editor, a cross-compiler
or interpreter, linker and a debugger that the developer
accesses through a single graphical user interface (GUI).
• Some IDEs may provide interface to Target board
emulators, Target flash memory programmer.
• An IDE may be a standalone application, or it may be
included as part of one or more existing and compatible
applications.
• IDEs are typically designed to integrate with third-party
version control libraries, like GitHub or Apache Subversion.
• IDEs used in embedded firmware development slightly
different from the generic IDEs used for high level language
based development for desktop applications.
• In embedded applications, the IDE is either supplied by
target manufacturer or by third party vendors as open
source.
• Some commonly used IDEs for embedded systems are:
– The GNU compiler (gcc),
– Eclipse (open source IDE)
– Android Studio,
– Keil µ vision (third party IDE )
– Code warriors by Metrowerks for ARM family of controllers.
– MPlab (supplied by Microchip for PIC family controllers)
Editor
• A source code editor is a text editor program
designed specifically for editing source code to
control embedded systems.
• The code editor allows code to be written, changed
and saved as files in folders called project folder.
• It may be a standalone application or it may be
built into an integrated development environment
(e.g. IDE).
• Source code editors may have features specifically
designed to simplify and speed up input of source
code, such as syntax highlighting and auto
complete functionality.
Compiler
• A compiler is a computer program that translates the
source code into computer (Target) language (object
code).
• Commonly the output has a form suitable for
processing by other programs (e.g., a linker), but it may
be a human-readable text file.
• A compiler translates source code from a high level
language to a lower level language (e.g., assembly
language or machine language).
• The most common reason for wanting to translate
source code is to create a program that can be
executed on a computer or on an embedded system.
Cross Compiler
• A cross compiler is a compiler capable of creating object
code (Target language) for a platform other than the one
on which the compiler is running.
• For example, a compiler that runs on a Windows 7 PC
but generates code that runs on Android Smartphone is
a cross compiler.
• For embedded systems the compiler always runs on
another platform, so a cross compiler is needed.
• A cross compiler is a tool that one must use for a
platform where it is inconvenient or impossible to
compile on that platform, like micro controllers that run
with a minimal amount of memory for their own
purpose.
• Since many embedded systems have limited resources,
cross-compiling is very common.
• Assembler
– An assembler is a program that converts assembly
language into machine code.
– It takes the basic commands and operations from
assembly code and converts them into binary code that
can be recognized by a specific type of processor.
• Cross Assembler
– A cross assembler is a program which generates
machine code for a processor other than the one it is
currently run on.
– Cross assemblers are generally used to develop
programs which are supposed to run on game consoles,
appliances and other specialized embedded systems
which are not able to run a development environment.
Interpreter
• An interpreter is a computer program that
translates a program line-by-line (statement-by-
statement) and carries out the specified actions
in sequence.
– In contrast, an assembler or compiler completely
translates a program written in a high-level
language (the source code) into a machine-language
program (the object code) for later execution.
– Whereas a compiled-program executes much faster
than an interpreted-program, an interpreter allows
examination and modification of the program while
it is running (executing).
The embedded
software
development
process

Tool chain for building embedded software


Linker
• A linker is a program that takes one or more objects generated by
compilers and assemblers and combine them into a single executable
program or a library that can later be linked to in itself.
• All of the object files resulting from compiling must be combined in a
special way before the program can be executed.
• The object files themselves are individually incomplete, most notably is
that some of the internal variable and function references have not yet
been resolved.
• The job of the linker is to combine these object files and, in the
process, to resolve all of the unresolved symbols.
• Linkers can take objects from a collection called a library. Some linkers
do not include the whole library in the output. They only include its
symbols that are referenced from other object files or libraries.
• Libraries for diverse purposes exist, and one or more system libraries
are usually linked in by default.
• The Linker combines object files (from compiler) and
resolves variable and function references
– Source code may be contained in >1 file, which must be
combined
– Resolve variables which may be referenced in one file and
defined in another file
– Resolve calls to library functions, like sqrt
– May include operating system
• Linker creates a “relocatable” version of the program
– Program is complete, except no memory addresses
assigned
Locator
• The tool that performs the conversion from
relocatable program to executable binary image is
called a locator.
• It takes responsibility for the easiest step of the
build process.
– we have to provide information about the memory on
the target board as input to the locator.
• The locator uses information (Target memory as
input) to assign physical memory addresses to
each of the code and data sections.
• It will produce an output file that contains a binary
image that can be loaded into the target ROM.
• Functions performed by locator, normally left for
operating systems:
– address binding
– Determines what goes in ROM and what goes in RAM
– Divide program into appropriate number of segments
and assign to appropriate memory types
– I/O routine inclusion
– Assign startup code to designated address on
controller
– Range of addresses for ROM and RAM
– Desired location for different modules
Intel Hex File Format
Getting Software Into Target
• The locator will build a file as an image for the
target software.
• There are few ways to getting the embedded
software file into target system.
– PROM programmers - actual ROM „
– ROM emulators - hardware thinks it’s a ROM „
– In-circuit emulators - replaces entire processor on
hardware board „
– FLASH - if target stores program separately „
– Monitors - program in target to receive program
- for debugging mainly

You might also like