Software Engineering for Embedded Systems, 2nd Edition

Book description

Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications, Second Edition provides the techniques and technologies in software engineering to optimally design and implement an embedded system. Written by experts with a solution focus, this encyclopedic reference gives an indispensable aid on how to tackle the day-to-day problems encountered when using software engineering methods to develop embedded systems. New sections cover peripheral programming, Internet of things, security and cryptography, networking and packet processing, and hands on labs. Users will learn about the principles of good architecture for an embedded system, design practices, details on principles, and much more.

  • Provides a roadmap of key problems/issues and references to their solution in the text
  • Reviews core methods and how to apply them
  • Contains examples that demonstrate timeless implementation details
  • Users case studies to show how key ideas can be implemented, the rationale for choices made, and design guidelines and trade-offs

Table of contents

  1. Cover image
  2. Title page
  3. Table of Contents
  4. Copyright
  5. Contributors
  6. Acknowledgments
  7. 1: Software Engineering for Embedded and Real-Time Systems
    1. Abstract
    2. 1 Software Engineering
    3. 2 Embedded Systems
    4. 3 Real-Time Systems
    5. 4 Example of a Hard Real-Time System
    6. 5 Real-Time Event Characteristics
    7. 6 Challenges in Real-Time System Design
    8. 7 The Embedded System’s Software Build Process
    9. 8 Distributed and Multiprocessor Architectures
    10. 9 Software for Embedded Systems
    11. 10 Hardware Abstraction Layers for Embedded Systems
  8. 2: Software Development Process
    1. Abstract
    2. 1 Getting Started
    3. 2 Requirements
    4. 3 Architecture
    5. 4 Design
    6. 5 Implementation
    7. 6 Testing
    8. 7 Rolling It Together: Agile Development
    9. 8 Advanced Topics
    10. 9 Conclusion
    11. Exercises
  9. 3: Embedded and Multicore System Architecture—Design and Optimization
    1. Abstract
    2. 1 Introduction
    3. 2 The Right Way and the Wrong Way
    4. 3 Understanding Requirements
    5. 4 Mapping the Application
    6. 5 Helping the Compiler and Build Tools
    7. 6 Power Optimization
  10. 4: Basic Programming Techniques
    1. Abstract
    2. 1 Introduction
    3. 2 Reference Platform Overview
    4. 3 SDK Installation
    5. 4 Target System Configuration and Initialization
    6. 5 Programming Examples
    7. 6 Summary
    8. Questions and Answers
  11. 5: Programming and Implementation Guidelines
    1. Abstract
    2. 1 Introduction
    3. 2 Starting the Embedded Software Project
    4. 3 Variable Structure
    5. Content Learning Exercises
  12. 6: Operating Systems
    1. Abstract
    2. 1 Foreground/Background Systems
    3. 2 Real-Time Kernels
    4. 3 RTOS (Real-Time Operating System)
    5. 4 Assigning Task Priorities
    6. 5 Determining the Size of a Stack
    7. 6 Preemptive Scheduling
    8. 7 Scheduling Points
    9. 8 Round-Robin Scheduling
    10. 9 Context Switching
    11. 10 Interrupt Management
    12. 11 The Clock Tick (or System Tick)
    13. 12 Resource Management
    14. 13 Synchronization
    15. 14 Bilateral Rendez-vous
    16. 15 Message Passing
    17. 16 Flow Control
    18. 17 Clients and Servers
    19. 18 Summary
  13. 7: Open-Source Software
    1. Abstract
    2. 1 Linux
    3. 2 U-Boot
    4. 3 FreeRTOS
    5. Questions
  14. 8: Software and Compiler Optimization for Microcontrollers, Embedded Processors, and DSPs
    1. Abstract
    2. 1 Introduction
    3. 2 Development Tools Overview
    4. 3 Understanding the Embedded Target Architecture
    5. 4 Basic Optimization Goals and Practices
    6. 5 General Loop Transformations
    7. 6 Code Size Optimization
    8. 7 Data Structures
  15. 9: Embedded Software Quality, Integration, and Testing Techniques
    1. Abstract
    2. 1 What Is Software Test?
    3. 2 Why Should We Test Software?
    4. 3 How Much Testing Is Enough?
    5. 4 When Should Testing Take Place?
    6. 5 Who Makes the Decisions?
    7. 6 Available Techniques
    8. 7 Setting the Standard
    9. 8 Dealing With the Unusual
    10. 9 Implementing a Test Solution Environment
    11. 10 Summary and Conclusions
    12. Questions and Answers
  16. 10: Embedded Multicore Software Development
    1. Abstract
    2. 1 Symmetric and Asymmetric Multiprocessing
    3. 2 Parallelism Saves Power
    4. 3 Look for Parallelism Opportunities
    5. 4 Multicore Application Locality
    6. 5 Multicore Programming Models
    7. 6 Performance and Optimization of Multicore Systems
    8. 7 Language Extensions Example—OpenMP
    9. 8 Pulling It All Together
  17. 11: Safety-Critical Development
    1. Abstract
    2. 1 Introduction
    3. 2 Project-Planning Strategies
    4. 3 Faults, Failures, Hazards, and Risk Analysis
    5. 4 Safety-Critical Architectures
    6. 5 Software Implementation Strategies
    7. Exercises
  18. 12: Networking Software
    1. Abstract
    2. 1 Introduction
    3. 2 Embedded Linux Networking
    4. 3 Moving From the Linux Kernel to User Space
    5. 4 Life of a Packet in a Native Linux Network Stack
    6. 5 Networking Performance Optimization Techniques
    7. 6 Case Studies: Covering Microcontrollers to Network Processors
    8. Exercises
  19. 13: Internet of Things
    1. Abstract
    2. 1 Introduction
    3. 2 History and Device Progression
    4. 3 Applications
    5. 4 Enabling Technologies
    6. 5 Internet of Things Architecture
    7. 6 Communications Used in Internet of Things
    8. 7 Data Analytics
    9. 8 Internet of Things Development Challenges
    10. Exercises
  20. 14: Security and Cryptography
    1. Abstract
    2. 1 What Is Security?
    3. 2 Cryptology
    4. 3 Life Cycle of a Secure Embedded System
    5. 4 Threat Analysis
    6. 5 Components of Secure Embedded Systems
    7. Questions
  21. 15: Machine Learning at the Edge
    1. Abstract
    2. 1 Introduction
    3. 2 What Is Artificial Intelligence
    4. 3 What Is Machine Learning?
    5. 4 Feeding Your Brain—Data
    6. 5 Support Vector Machine
    7. 6 k-NN (Nearest Neighbor) Algorithm
    8. 7 Decision Trees
    9. 8 Neural Nets
    10. 9 What Is Necessary to Bring ML to the Edge?
    11. 10 Edge Learning/Training
  22. Appendix: Performance Analysis Using NXP’s i.MX RT1050 Crossover Processor and the Zephyr™ Real-Time Operating System
    1. A.1 Introduction
    2. A.2 Configuration Information
    3. A.3 Scope of Analysis
    4. A.4 Analysis Results
    5. A.5 Summary and Conclusions
  23. Index

Product information

  • Title: Software Engineering for Embedded Systems, 2nd Edition
  • Author(s): Robert Oshana, Mark Kraeling
  • Release date: June 2019
  • Publisher(s): Newnes
  • ISBN: 9780128094334