Software Engineering for Embedded Systems

Höfundur: Author (Útgáfa: 2)
Software Engineering for Embedded Systems

Kaup valmöguleikar

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.

Nánar um bókina

Útgefandi
Elsevier S & T
ISBN
9780128094334
Print ISBN
9780128094488
Format
ePub
Útgáfa
2
Höfundar
Author
Tungumál
English
Útgefið
2019-06-21
Prent takmörkun á líftíma
10

Kaflar

  • Cover image
  • Title page
  • Table of Contents
  • 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