Table of Contents

Cover image

Title page

Copyright

Contributors

Acknowledgments

1: Software Engineering for Embedded and Real-Time Systems

Abstract

1 Software Engineering

2 Embedded Systems

3 Real-Time Systems

4 Example of a Hard Real-Time System

5 Real-Time Event Characteristics

6 Challenges in Real-Time System Design

7 The Embedded System’s Software Build Process

8 Distributed and Multiprocessor Architectures

9 Software for Embedded Systems

10 Hardware Abstraction Layers for Embedded Systems

2: Software Development Process

Abstract

1 Getting Started

2 Requirements

3 Architecture

4 Design

5 Implementation

6 Testing

7 Rolling It Together: Agile Development

8 Advanced Topics

9 Conclusion

Exercises

3: Embedded and Multicore System Architecture—Design and Optimization

Abstract

1 Introduction

2 The Right Way and the Wrong Way

3 Understanding Requirements

4 Mapping the Application

5 Helping the Compiler and Build Tools

6 Power Optimization

4: Basic Programming Techniques

Abstract

1 Introduction

2 Reference Platform Overview

3 SDK Installation

4 Target System Configuration and Initialization

5 Programming Examples

6 Summary

Questions and Answers

5: Programming and Implementation Guidelines

Abstract

1 Introduction

2 Starting the Embedded Software Project

3 Variable Structure

Content Learning Exercises

6: Operating Systems

Abstract

1 Foreground/Background Systems

2 Real-Time Kernels

3 RTOS (Real-Time Operating System)

4 Assigning Task Priorities

5 Determining the Size of a Stack

6 Preemptive Scheduling

7 Scheduling Points

8 Round-Robin Scheduling

9 Context Switching

10 Interrupt Management

11 The Clock Tick (or System Tick)

12 Resource Management

13 Synchronization

14 Bilateral Rendez-vous

15 Message Passing

16 Flow Control

17 Clients and Servers

18 Summary

7: Open-Source Software

Abstract

1 Linux

2 U-Boot

3 FreeRTOS

Questions

8: Software and Compiler Optimization for Microcontrollers, Embedded Processors, and DSPs

Abstract

1 Introduction

2 Development Tools Overview

3 Understanding the Embedded Target Architecture

4 Basic Optimization Goals and Practices

5 General Loop Transformations

6 Code Size Optimization

7 Data Structures

9: Embedded Software Quality, Integration, and Testing Techniques

Abstract

1 What Is Software Test?

2 Why Should We Test Software?

3 How Much Testing Is Enough?

4 When Should Testing Take Place?

5 Who Makes the Decisions?

6 Available Techniques

7 Setting the Standard

8 Dealing With the Unusual

9 Implementing a Test Solution Environment

10 Summary and Conclusions

Questions and Answers

10: Embedded Multicore Software Development

Abstract

1 Symmetric and Asymmetric Multiprocessing

2 Parallelism Saves Power

3 Look for Parallelism Opportunities

4 Multicore Application Locality

5 Multicore Programming Models

6 Performance and Optimization of Multicore Systems

7 Language Extensions Example—OpenMP

8 Pulling It All Together

11: Safety-Critical Development

Abstract

1 Introduction

2 Project-Planning Strategies

3 Faults, Failures, Hazards, and Risk Analysis

4 Safety-Critical Architectures

5 Software Implementation Strategies

Exercises

12: Networking Software

Abstract

1 Introduction

2 Embedded Linux Networking

3 Moving From the Linux Kernel to User Space

4 Life of a Packet in a Native Linux Network Stack

5 Networking Performance Optimization Techniques

6 Case Studies: Covering Microcontrollers to Network Processors

Exercises

13: Internet of Things

Abstract

1 Introduction

2 History and Device Progression

3 Applications

4 Enabling Technologies

5 Internet of Things Architecture

6 Communications Used in Internet of Things

7 Data Analytics

8 Internet of Things Development Challenges

Exercises

14: Security and Cryptography

Abstract

1 What Is Security?

2 Cryptology

3 Life Cycle of a Secure Embedded System

4 Threat Analysis

5 Components of Secure Embedded Systems

Questions

15: Machine Learning at the Edge

Abstract

1 Introduction

2 What Is Artificial Intelligence

3 What Is Machine Learning?

4 Feeding Your Brain—Data

5 Support Vector Machine

6 k-NN (Nearest Neighbor) Algorithm

7 Decision Trees

8 Neural Nets

9 What Is Necessary to Bring ML to the Edge?

10 Edge Learning/Training

Appendix: Performance Analysis Using NXP’s i.MX RT1050 Crossover Processor and the Zephyr™ Real-Time Operating System

A.1 Introduction

A.2 Configuration Information

A.3 Scope of Analysis

A.4 Analysis Results

A.5 Summary and Conclusions

Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.168.211