My Account Log in

1 option

Software engineering for embedded systems : methods, practical techniques, and applications / edited by Robert Oshana, Mark Kraeling.

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Oshana, Robert, author.
Contributor:
Oshana, Robert, editor.
Kraeling, Mark, editor.
Language:
English
Subjects (All):
Software engineering.
Embedded computer systems.
Physical Description:
1 online resource (648 pages) : illustrations
Edition:
Second edition.
Place of Publication:
Oxford : Elsevier, [2019]
System Details:
text file
Summary:
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
Contents:
Front Cover
Software Engineering for Embedded Systems
Copyright
Contents
Contributors
Acknowledgments
1 Software Engineering for Embedded and Real-Time Systems
1 Software Engineering
2 Embedded Systems
2.1 Embedded Systems Are Reactive Systems
3 Real-Time Systems
3.1 Types of Real-Time Systems-Soft and Hard
3.2 Differences Between Real-Time and Time-Shared Systems
4 Example of a Hard Real-Time System
4.1 Based on Signal Sample, Time to Perform Actions Before Next Sample Arrives
4.2 Hard Real-Time Systems
5 Real-Time Event Characteristics
5.1 Real-Time Event Categories
5.2 Efficient Execution and the Execution Environment
5.2.1 Efficiency Overview
5.2.2 Resource Management
6 Challenges in Real-Time System Design
6.1 Response Time
6.2 Recovering From Failures
7 The Embedded System's Software Build Process
8 Distributed and Multiprocessor Architectures
9 Software for Embedded Systems
9.1 Super Loop Architecture
9.2 Power-Saving Super Loop
9.3 Window Lift Embedded Design
10 Hardware Abstraction Layers for Embedded Systems
2 Software Development Process
1 Getting Started
1.1 Project Planning
1.2 Risk Management
1.3 Kicking Off the Project
2 Requirements
2.1 User Requirements
2.2 System Requirements
3 Architecture
3.1 Safety-Critical Elements
3.2 Operating Performance
3.3 Security
3.4 Reliability and Availability
4 Design
4.1 Object-Oriented Programming
4.1.1 System Context
4.1.2 Class Identification
4.1.3 Design Modeling
4.2 Real-Time Design
5 Implementation
6 Testing
6.1 Validation and Verification
6.2 Integration Testing
6.3 Release Testing
6.4 Performance Testing
7 Rolling It Together: Agile Development.
7.1 Scaling for Complexity/Organization
7.2 Roles
7.3 Keep Your Plans!
7.4 Meetings for Planning
7.4.1 Quarterly Release Planning
7.4.2 Sprint Planning
7.5 Plan for Your Unplanned
7.6 Documentation
7.6.1 Requirements vs. Acceptance Criteria
7.7 Go With the Flow
7.7.1 Agile Ceremonies Promote and Increase Flow
7.7.1.1 Feature Writing, Decomposition, and Grooming
7.7.1.2 Detailed Documents and Meetings
7.7.1.2.1 Sprint Backlog Grooming
7.7.1.2.2 Daily Scrum
7.7.1.2.3 Sprint Demo
7.7.1.2.4 Release Demo
7.7.1.2.5 Sprint Retro
7.7.2 Agile Flow Exists Within and Between Sprints
7.7.2.1 Within Sprints
7.7.2.1.1 Work Item Fields and States
7.7.2.1.1.1 User Story Cycle
7.7.2.1.1.2 How Do We Write User Stories and How Granular Should They Be?
7.7.2.1.2 Vertical Slices
7.7.2.2 Between Sprints
7.7.3 Product vs. Project Teams Have Different Flows
7.7.4 Supporting the Team's Flow
7.7.5 ART Flow
8 Advanced Topics
8.1 Metrics and Transparency
8.1.1 Metrics: Some is Better Than None
8.1.2 Getting Comfortable With Data
8.1.3 The Export vs. Live Data Paradigm
8.1.3.1 Inspecting and Adapting With Metrics
8.2 Tooling
8.2.1 Tooling and Metrics
8.3 Agile and Alignments
9 Conclusion
Exercises
References
Further Reading
3 Embedded and Multicore System Architecture-Design and Optimization
1 Introduction
2 The Right Way and the Wrong Way
3 Understanding Requirements
4 Mapping the Application
4.1 Performance Calculations to Map the Application to Hardware
4.1.1 How Many Channels Can the Core Handle?
4.1.2 Are the I/O and Memory Capable of This Many Channels?
4.2 How the Estimation Results Drive Options
5 Helping the Compiler and Build Tools.
5.1 Choosing Algorithmic Components to Work With Compilers and Architectures
6 Power Optimization
4 Basic Programming Techniques
2 Reference Platform Overview
2.1 Understanding Hardware
3 SDK Installation
3.1 Download and Installation
3.2 Building a Project
3.3 Debugging the Project
4 Target System Configuration and Initialization
4.1 System Reset
4.2 Clock Configuration
4.3 I/O Pin Configuration
4.4 I/O Pin Initialization
4.5 SDK I/O Helper Routines
5 Programming Examples
5.1 General Purpose I/O-Blinking LED
5.2 Basic Serial I/O-Polled UART Send/Receive
5.3 Overview of Interrupt Handlers
5.4 Basic Timer Operation-Low-Power Timer (LPTMR)
6 Summary
Questions and Answers
5 Programming and Implementation Guidelines
1.1 Principles of High-Quality Programming
1.1.1 Readability
1.1.2 Maintainability
1.1.3 Testability
1.2 What Sets Embedded Apart From General Programming
2 Starting the Embedded Software Project
2.1 Hardware Platform Input
2.2 Project Files/Organization
2.2.1 Source Files Written Locally
2.2.2 Source Files From Company Libraries
2.2.3 Libraries From Third Parties
2.2.4 Libraries From Compiler/Linker Toolsets
2.3 Team Programming Guidelines
2.4 Syntax Standard
2.4.1 Code WhiteSpace
2.4.2 Tabs in Source Files
2.4.3 Alignment Within Source
2.5 Safety Requirements in Source Code
3 Variable Structure
3.1 Variable Declarations
3.1.1 Global Variables
3.1.2 File-Scope Variables
3.1.3 Local Variables
3.2 Data Types
3.3 Definitions
3.3.1 Conditional Compilation
3.3.2 #Define
Content Learning Exercises
6 Operating Systems
1 Foreground/Background Systems
2 Real-Time Kernels.
3 RTOS (Real-Time Operating System)
3.1 Critical Sections
3.2 Task Management
4 Assigning Task Priorities
5 Determining the Size of a Stack
5.1 The Idle Task
5.2 Priority Levels
5.3 The Ready List
6 Preemptive Scheduling
7 Scheduling Points
8 Round-Robin Scheduling
9 Context Switching
10 Interrupt Management
10.1 Handling CPU Interrupts
10.2 NonKernel-Aware Interrupt Service Routine (ISR)
10.3 Processors with Multiple Interrupt Priorities
10.4 All Interrupts Vector to a Common Location
10.5 Every Interrupt Vectors to a Unique Location
11 The Clock Tick (or System Tick)
11.1 Wait Lists
11.2 Time Management
12 Resource Management
12.1 Resource Management-Disable/Enable Interrupts
12.2 Resource Management-Semaphores
12.3 Resource Management-Notes on Semaphores
12.4 Resource Management-Priority Inversions
12.5 Resource Management-Mutual Exclusion Semaphores (Mutex)
12.6 Resource Management-Deadlocks (or Deadly Embrace)
13 Synchronization
13.1 Synchronization-Semaphores
13.2 Synchronization-Credit Tracking
14 Bilateral Rendez-vous
15 Message Passing
15.1 Messages
15.2 Message Queues
16 Flow Control
17 Clients and Servers
17.1 Memory Management
18 Summary
7 Open-Source Software
1 Linux
1.1 History of Linux
1.1.1 Reason for the Exponential Acceptance of Linux
1.1.2 Linux and Embedded Systems
1.2 How Embedded Linux is Different From Linux?
1.3 Major Features of Linux
1.3.1 Portability
1.3.1.1 Supported CPU Architectures
1.3.1.2 POSIX Compliance
1.3.2 Support of a Wide Variety of Peripheral Devices
1.3.3 Complete Network Stack Solution
1.3.4 Variety of Task Schedulers
1.3.5 Security
1.3.6 User Space Drivers
1.3.7 Endianness
1.3.8 Debuggability.
1.4 Benefits of Using Linux
1.4.1 Free of Cost
1.4.2 Time to Market
1.4.3 No "Vendor Lock-in"
1.4.4 Highly Stable Operating System
1.4.5 Low Maintenance
1.4.5.1 Supporting Software Releases After Shipping the Product
1.4.5.2 Keeping Your Own Drivers up to Date With the Latest Kernel
1.5 Linux Architecture
1.5.1 Linux Kernel Components
1.5.1.1 Device Driver Framework
1.5.1.2 Schedulers
1.5.1.3 Interrupt
1.5.1.4 Memory Management
1.5.1.5 Communication Protocol Stack
1.5.1.6 User Interface (UI)
1.6 Build Environment
1.6.1 Kernel Compilation
1.6.2 Root Filesystem
1.6.2.1 Yocto
1.7 Customizing Linux
1.7.1 Low Memory Footprint
1.7.2 Boot Performance
1.7.3 High Throughput Performance
1.7.3.1 Core Affinity
1.7.3.2 Interrupt Coalescing
1.7.3.3 User Space Mapping of Buffers
1.7.3.4 User Space Drivers
1.7.4 Latencies
1.8 Linux Development and its Open-Source Ecosystem
1.8.1 Linux Versions
1.8.2 Long-Term Support (LTS) Linux Version
1.8.3 Related Open-Source Communities
1.8.3.1 Linux Foundation
1.8.3.2 Linaro
1.8.4 Linux-Based Distributions
1.8.4.1 Android
1.8.4.2 Ubuntu
1.9 Coding Guidelines
1.10 Code Review in the Upstream Community
1.11 License
2 U-Boot
2.1 U-Boot and its Applicability to Several Types of Devices
2.2 Major Features of U-Boot
2.2.1 Multiple Boot Source Support
2.2.2 Shell (User Interface)
2.2.3 Environment Variables
2.2.4 Scripts
2.2.5 Stand-Alone Applications
2.2.6 Operating System Boot Commands
2.2.7 Autoboot
2.2.8 Sandbox U-Boot
2.3 U-Boot Directory Organization
2.4 U-Boot Architecture and Memory Footprint
2.4.1 Single-Stage Boot Loader
2.4.2 Two-Stage Boot Loader
2.5 Fast Boot Approach
2.6 Secure Boot.
2.7 Supported Architectures and Operating Systems.
Notes:
Includes bibliographical references and index.
Description based on online resource; title from PDF title page (ebrary, viewed July 1, 2019).
ISBN:
9780128094334
0128094338
OCLC:
1108874717

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account