CHAPTER 4 DESIGN ISSUES
1
DESIGN ISSUES: CHALLENGES
The design process in embedded systems is about finding the right combination of microchips,
including input/output devices, memory, interfaces, processors, and more, according to your
specific system purpose and platform.
If you approach embedded system design without a plan, it can be overwhelming. A systematic
approach, on the other hand, helps to divide the design cycle into manageable stages, allowing for
proper planning, implementation, and collaboration.
2
DESIGN ISSUES: FAULT TOLERANCE
No system will be perfect, there are various defects, or faults, within the design and
components.
A fault is any software or hardware defect that may cause an error, and again if that error is not
detected and corrected, the error may lead to a failure.
To describe tolerance and fault tolerance in real-time systems, we will begin with these
definitions:
Failure is when the response of a system deviates from a specification as a result of an
3
error,
DESIGN ISSUES: FAULT TOLERANCE
A system that is designed to accept and deal with faults is described as being fault tolerant; that is,
the system is able to continue operation despite the existence of perturbations and faults within
the system.
If a fault causes an error which then causes the system to no longer meet the a requirement of the
system, that fault is said to have caused a failure.
A failure in a hardware requirement may be catastrophic to the system, while a failure in a firm
requirement may result in the degradation of the quality of the service provided.
4
DESIGN ISSUES: FAULT TOLERANCE
The response of a system to faults include:
full fault tolerance where specifications are still met for a given period of time,
graceful degradation where there is an increasing degradation in quality of service (failure
to meet one requirement does not prevent the system from meeting other requirements)
failsafe where the system temporarily halts in a safe state (If steps can be taken to
subsequently minimize or eliminate harm resulting from an error).
5
DESIGN ISSUES: FAULT TOLERANCE
Sources of error can be:
Environmental effects,
Specification or design faults,
Implementation faults,
Component effects
6
DESIGN ISSUES: FAULT TOLERANCE
A fault within the system may be described as:
Transient faults begin at a point in time, remain for indeterminate period of time, and then
disappear
Intermittent faults are transient faults that reoccur; for example, a component may
overheat, cease functioning, cool down and then continue functioning.
Permanent faults remain within the system until external intervention to repair it
7
DESIGN ISSUES: FAULT TOLERANCE
There are two main approaches to dealing with faults:
Fault prevention, where steps are taken to prevent faults from occurring (providing sufficient
cooling, duplicating sources of power, etc.).
Fault tolerance, where faults are detected and steps are taken within the system to continue
operation within specifications.
8
DESIGN ISSUES: FAULT TOLERANCE
The process of fault prevention is where external steps are taken by developers to prevent faults
from occurring within a system. There are two aspects to fault prevention:
Prior to the deployment of a system, fault avoidance are those steps taken to minimize the
likelihood of faults occurring in the system.
Once deployment has occurred, fault removal involves those steps taken detect and correct
faults when failures occur.
9
DESIGN ISSUES: FAULT TOLERANCE
The approach to dealing with faults is to design the system to compensate for faults once they
occur. There are two means of achieving fault tolerance in software, including
recovery blocks
exceptions.
10
DESIGN ISSUES:MEMORY MANAGEMENT
Memory management is a critical aspect of embedded systems design, especially in advanced
applications where memory resources are limited, and performance demands are high. In such
scenarios, efficient memory utilization becomes paramount to ensure optimal system
functionality and responsiveness.
Memory optimization: Efficient memory usage not only enhances system performance but
also contributes to reduced power consumption.
Several techniques are employed to optimize memory usage in advanced embedded systems:
Code Optimization: Efficient coding practices contribute to reducing memory, such as
11
DESIGN ISSUES:MEMORY MANAGEMENT
Data Compression: is a process of reducing the size or storage requirements of data in order to
optimize storage space. Embedded systems deal with large datasets. Data compression
techniques like Huffman coding, and delta encoding can significantly reduce memory
requirements.
Memory Pooling: pre-allocating a fixed-size block of memory and then managing the allocation and
deallocation of these blocks. It reduces memory fragmentation and overhead associated with
dynamic memory allocation.
Memory Alignment: Aligning memory accesses to specific byte boundaries can improve memory
access speed and efficiency. This is particularly important for systems with memory-mapped I/O.12
DESIGN ISSUES:MEMORY MANAGEMENT
Memory segmentation is a memory management technique that divides the memory into
distinct segments, each with its own attributes and access permissions. This approach is common
in advanced embedded systems to enhance security, manage memory access, and isolate
different parts of the software. Segmentation allows better control over memory allocation and
protection.
Code and Data Separation: code and data are often stored in separate segments. This separation
improves security by preventing unauthorized access to critical code sections.
Stack and Heap Segmentation: Separating the stack and heap memory regions prevents stack
overflow from affecting heap memory and vice versa. This enhances system stability and reduces
the risk of crashes. 13
DESIGN ISSUES:MEMORY MANAGEMENT
Memory-mapped I/O is a technique where hardware devices are mapped to specific memory
addresses. This allows the CPU to communicate with devices using standard memory read and
write operations, simplifying device interaction and reducing the need for specialized I/O
instructions.
I/O Registers: enabling software to configure and communicate with peripherals using memory
operations.
Direct Memory Access (DMA): transfer data directly between memory and peripherals, reducing
CPU involvement and enhancing data transfer efficiency.
Peripheral Communication: communication with external devices, such as sensors and actuators,
14
by treating them as memory locations.
DESIGN ISSUES:MEMORY MANAGEMENT
Dynamic memory allocation is a memory management approach where memory is allocated
and deallocated as needed during program execution. While commonly used in more resource-rich
environments, dynamic memory allocation can also be employed in advanced embedded systems
with careful consideration:
Memory Pools: Creating dynamic memory pools, where memory is allocated from predefined
blocks. It is a pre allocated and managed block of memory objects or blocks as needed by the
application. So it helps manage memory fragmentation and reduces the risk of memory leaks.
Garbage Collection: For systems with more advanced memory management capabilities, garbage
collection techniques can be employed to automatically reclaim memory occupied by objects that
are no longer in use. 15
DESIGN ISSUES: Hardware Development
Component Integration: Integrating different hardware components while ensuring compatibility
and efficiency is a major challenge in hardware development for embedded systems.
Power Consumption: Managing power consumption to extend battery life or optimize energy
usage is a critical consideration in hardware development.
Real-time Constraints: Designing hardware that meets stringent real-time processing
requirements poses unique challenges and considerations.
16
DESIGN ISSUES: Software Development
Best Practices in Software Development
1 Modularity 2 Efficient Algorithms
Breaking down software into Implementing efficient
modular components allows for algorithms is crucial for
easier maintenance, testing, optimizing performance while
and scalability. working within resource
constraints.
3 Security Measures
Integrating robust security measures to protect against vulnerabilities and
unauthorized access is a best practice in software development.
Security Considerations in Embedded
Systems Design
Data Encryption Security Monitoring Biometric
Authentication
Integrating robust Implementing continuous
encryption techniques to monitoring systems to Integrating biometric-
safeguard sensitive data detect and respond to based authentication
from unauthorized access potential security breaches methods to enhance
and interception. and anomalies in real-time. access control and
authentication in
embedded systems.
DESIGN ISSUES: CHALLENGES
Stability is paramount. No unexpected behaviors or graceful degradation is admissible for
embedded systems. Everything is expected to be perfectly designed and debugged right from the
beginning, assuring flawless performance under all possible conditions. There is little to no room
for bugs at later project stages.
It’s hard to update. Once a piece of embedded software is designed, developed, tested, and
prepared for release, it gets replicated in batches. If any omissions or loopholes are later
identified, it’s nearly impossible to fix deficient embedded software in a way that allows other
software to be updated. Sometimes, firmware like RTOS can be replaced only by replacing
memory blocks containing it.
Higher project costs: the average cost per embedded system project is higher than that of a
conventional software project. Embedded system specialists and programmers are rarer than
other types of developers. Additionally, more time and money are required for embedded system
architecture, testing, and debugging, as system failures are inadmissible in embedded
19
development/programming.
DESIGN ISSUES: CHALLENGES
When developing critical real-time applications, the following issues should be considered in
detail, in addition to the classical design issues:
Structuring the application in a number of concurrent tasks, related to the activities to be
performed
Assigning the proper timing constraints to tasks
Using a predictable operating environment able to guarantee that those timing constraints
can be satisfied.
20
Quiz2
1. What is the difference between fault prevention and fault tolerance?
2. List at least three types of resource access control mechanism.
3. What are the design challenges in an embedded system?
21