»
Software Engineering for Embedded Systems
 
 

Software Engineering for Embedded Systems, 1st Edition

Methods, Practical Techniques, and Applications

 
Software Engineering for Embedded Systems, 1st Edition,Robert Oshana,ISBN9780124159174
 
 
Up to
25%
off
 

R Oshana   

Newnes

9780124159174

9780124159419

1200

235 X 191

Understand the complete cycle of embedded software development, from concepts to applications to future trends.

Print Book + eBook

USD 119.94
USD 199.90

Buy both together and save 40%

Print Book

Hardcover

In Stock

Estimated Delivery Time
USD 74.96
USD 99.95

eBook
eBook Overview

VST (VitalSource Bookshelf) format

DRM-free included formats : EPUB, Mobi (for Kindle), PDF

USD 74.96
USD 99.95
Add to Cart
 
 

Key Features

  • Road map of key problems/issues and references to their solution in the text
  • Review of core methods in the context of how to apply them
  • Examples demonstrating timeless implementation details
  • Short and to- the- point case studies show how key ideas can be implemented, the rationale for choices made, and design guidelines and trade-offs

Description

This Expert Guide gives you the techniques and technologies in software engineering to optimally design and implement your embedded system. Written by experts with a solutions focus, this encyclopedic reference gives you an indispensable aid to tackling the day-to-day problems when using software engineering methods to develop your embedded systems.


With this book you will learn:

  • The principles of good architecture for an embedded system
  • Design practices to help make your embedded project successful
  • Details on principles that are often a part of embedded systems, including digital signal processing, safety-critical principles, and development processes
  • Techniques for setting up a performance engineering strategy for your embedded system software
  • How to develop user interfaces for embedded systems
  • Strategies for testing and deploying your embedded system, and ensuring quality development processes
  • Practical techniques for optimizing embedded software for performance, memory, and power
  • Advanced guidelines for developing multicore software for embedded systems
  • How to develop embedded software for networking, storage, and automotive segments
  • How to manage the embedded development process

Includes contributions from:

Frank Schirrmeister, Shelly Gretlein, Bruce Douglass, Erich Styger, Gary Stringham, Jean Labrosse, Jim Trudeau, Mike Brogioli, Mark Pitchford, Catalin Dan Udma, Markus Levy, Pete Wilson, Whit Waldo, Inga Harris, Xinxin Yang, Srinivasa Addepalli, Andrew McKay, Mark Kraeling and Robert Oshana.

 

 

Readership

Embedded systems engineers, software engineers, under graduate and graduate computer and electrical and electronic engineers

Robert Oshana

Robert Oshana has over 30 years of experience in the embedded software industry, primarily focused on embedded and real-time systems for the defence industry and semiconductor industries. He has BSEE, MSEE, MSCS, and MBA degrees and is a Senior Member of IEEE. Rob is an international speaker and has over 100 presentations and publications in various technology fields and has written several books on embedded software technology. Rob is an adjunct professor at Southern Methodist University and University of Texas and is a Distinguished Member of Technical Staff and Director of Software Enablement for Digital Networking at Freescale Semiconductor.

Affiliations and Expertise

Freescale, Austin, TX, USA

View additional works by Robert Oshana

Software Engineering for Embedded Systems, 1st Edition

Software Engineering for Embedded Systems: A Roadmap

Foreword to Software Engineering for Embedded Systems

Acknowledgments

About the Editors

About the Authors

Chapter 1. Software Engineering of Embedded and Real-Time Systems

Software engineering

Embedded systems

Real-time systems

Challenges in real-time system design

Distributed and multi-processor architectures

Software for embedded systems

Hardware abstraction layers (HAL) for embedded systems

Summary

Chapter 2. Embedded Systems Hardware/Software Co-Development

Today’s embedded systems – an example

HW/SW prototyping users

HW/SW prototyping options

Prototyping decision criteria

Choosing the right prototype

Industry design chain

The need to change the design flow

Different types of virtual prototypes

A brief history of virtual prototypes

The limits of proprietary offerings

What makes virtual prototypes fast

Standardization: the era of SystemC TLM-2.0

Architecture virtual prototypes

Software virtual prototypes

Summary – the growing importance of virtualization

Chapter 3. Software Modeling for Embedded Systems

When and why should you model your embedded system?

Modeling

What is a modeling language?

Examples of modeling languages

The V diagram promise

So, why would you want to model your embedded system?

When should you model your embedded system?

Operational complexity

Cost of defect versus when detected

Large development teams require modeling

Modeling is often the only choice

So – modeling is great, but aren’t all models wrong?

You have your prototype – now what?

Conclusion

Next steps – try it!

References

Chapter 4. Software Design Architecture and Patterns for Embedded Systems

Overview of architecture and design

Three levels of design

What are design patterns?

Software architecture categories and views

Summary

References

Chapter 5. Real-Time Building Blocks: Events and Triggers

Events and triggers

Room temperature unit

Event system

Event handle

Event methods

Event data structure

Reentrancy

Event processing

Integration

Triggers

Blinking LED

Design idea

Tick timer

Trigger interface

Trigger descriptor

Data allocation

SetTrigger

IncTicks

Making it reentrant

Initialization

Blink!

Beep!

Real-time aspects

Summary and source code

Chapter 6. Hardware’s Interface to Embedded Software

Introduction

Collaborate with the hardware team

Useful hardware design aspects

Supporting multiple versions of hardware

Self-adapting switches

Difficult hardware interactions

Testing and troubleshooting

Temporary hooks

Conclusion

Best practices

Chapter 7. Embedded Software Programming and Implementation Guidelines

Introduction

Starting the embedded software project

Variable structure

Chapter 8. Embedded Operating Systems

Foreground/background systems

Real-time kernels

Priority levels

The ready list

Scheduling points

Context switching

Interrupt management

The clock tick (or system tick)

Wait lists

Time management

Resource management

Synchronization

Message passing

Memory management

Summary

Chapter 9. Software Reuse By Design in Embedded Systems

Why does software reuse matter?

What limits software reuse?

Kinds of software reuse

Implementing reuse by layers

Going to the next level

Introducing the component factory

Factory hardware configuration

Factory software configuration

How the factory aids reusability

RTOS agnosticism

Arbitrary extensibility

Conclusion

References

Chapter 10. Software Performance Engineering for Embedded Systems

Example: latency vs. throughput in an eNodeB application

Performance patterns and anti-patterns

References

Chapter 11. Optimizing Embedded Software for Performance

The code optimization process

Using the development tools

Background – understanding the embedded architecture

Basic C optimization techniques

General loop transformations

Example application of optimization techniques: cross-correlation

Chapter 12. Optimizing Embedded Software for Memory

Introduction

Code size optimizations

Memory layout optimization

Data structures, arrays of data structures, and adding it all up!

Loop optimizations for memory performance

Chapter 13. Optimizing Embedded Software for Power

Introduction

Understanding power consumption

Measuring power consumption

Minimizing power consumption

Optimizing data flow

SRAM and cache data flow optimization for power

Peripheral/communication utilization

Algorithmic

Summary and closing remarks

Chapter 14. Human Factors and User Interface Design for Embedded Systems

Analysis phase of user interface design

Virtual windows

Data models using entity relationship diagrams (ERD)

Analysis of virtual windows using a CREDO matrix

Hueristic evaluation

Gestalts

Designing user interfaces with Model View Controller (MVC) architecture

Safety-critical user interfaces

References

Bibliography

Chapter 15. Embedded Software Quality, Integration and Testing Techniques

What is software test?

Available techniques

Setting the standard

Dealing with the unusual

Implementing a test solution environment

Summary and conclusions

Chapter 16. Software Development Tools for Embedded Systems

Introduction to debugging tools

GDB debugging

Debug agent design

Debugging using JTAG

Debugging tools using Eclipse and GDB

Instrumented code

Analysis tools

Hardware capabilities

Debugging tips and tricks

Chapter 17. Multicore Software Development for Embedded Systems: This Chapter draws on Material from the Multicore Programming Practices Guide (MPP) from the Multicore Association

Part 1: Analysis and high-level design

Analysis

High-level design

Summary of Part 1

Part 2: Implementation and low-level design

Thread-based implementations

Mutexes, locks, nested locks

Granularity

Implementing task parallelism

Message-passing implementations

Using a hybrid approach

References

Chapter 18. Safety-Critical Software Development

Introduction

Which safety requirements?

Project planning strategies

Faults, failures, hazards, and risk analysis

Safety-critical architectures

Software implementation strategies

Reference

Chapter 19. Intellectual Property

Background

Is that software yours?

Patents

Problems

Chapter 20. Managing Embedded Software Development

Capability maturity model integration

The OSI model

Software development

Organization

Program charter

Stakeholders and the core team

Product life-cycle management

Portfolio management

Project management life-cycle

Project life-cycle

Problem-solving

Communications

Abbreviations, symbols, acronyms

References

Chapter 21. Agile Development for Embedded Systems

Introduction

What’s special about embedded systems?

Agile project planning for embedded software

Project governance for embedded software

Agile development practices for embedded

Scaling factors for agile

Can agile methods help you adhere to standards?

Summary

References

Bibliography

Chapter 22. Embedded Software for Automotive Applications

A bit of history to set the scene

Automotive segments and how they differ

Automotive quality

Development and test

Automotive diagnostics

Automotive standards

Automotive safety

Automotive security

The near future of the automotive market

Conclusion

Chapter 23. Programming for I/O and Storage

I/O device and I/O controller

I/O programming

Storage programming

Performance improvement of storage systems

Summary

Bibliography

Chapter 24. Embedded Software for Networking Applications

Introduction

System architecture of network devices

Multicore SoCs for networking

Network programming models

Structure of packet-processing software

Network application programming techniques

General performance techniques for network application programmers

Linux operating system for embedded network devices

Summary

Chapter 25. Linux for Embedded Systems

Introduction

Getting started with Embedded Linux

Running Linux on a reference board

Appendix 1. ‘C’ Syntax Coding Standard: Source Code Development

Abstract

Scope

Definitions

Rules and Conventions

Complexity

Problematic constructs

Source and include file layouts

Characteristics

Appendix A – Approved standard abbreviations

Appendix B – Suggested module names

Appendix C – Source code template

Appendix D – Standard include file template

Appendix E – portable.h include file template

Appendix F – Function template

Appendix 2. On the C++ Programming Language for Embedded Software, Systems, and Platforms

Introduction

Relatively inexpensive features of C++ for embedded

Modestly expensive features of C++ for embedded

Typically costly features of C++ for embedded

Summary

Case Study 1. Software Performance Engineering

Introduction and project description

Initial performance estimates and information requirements

Developing the initial estimate

Tracking the reporting metrics

Reducing the measurement error

Conclusions and lessons learned

References

Case Study 2. A User Interface: Police Command and Control System

Introduction

Police command and control system

Essential use case

Scenarios

Hierarchical task analysis

Primary interaction styles for the PC&C system

Design approaches to overcome user limitations of cognition, perception and learning

External cognition approaches to overcome user limitations

Error messages and warnings for PC&CS

Data model (entity relationship diagram) and virtual windows for PC&CS

Identifying gestalts in PC&CS user interface design

Data presentation techniques

Usability testing on the first prototype

Second iteration – low-fidelity prototype

High-fidelity prototype

Quick-start guide

Case Study 3. Transitioning to Multicore

Typical Application Software Overview

Software system partition

Parallel processing of data packets

Hybrid approaches (parallel plus pipeline)

Data communication with control-plane partition

Management proxy

Rx/Tx drivers

Case Study 4. Software Engineering for Embedded Systems Quality and Metrics Program

Development methodology

Metrics collection

Summary

Index

Quotes and reviews

"Editors Oshana and Kraeling, with a combined experience of over 50 years in embedded software and an array of authors with backgrounds in various aspects of hardware and software design both in industry and academia rely on a variety of case studies and software code examples to provide exhaustive coverage of the field of software engineering for embedded systems. There is an interleaved two-dimensional conceptual framework to the work that divides the topics into three vertical and five horizontal layers."--Reference & Research Book News, December 2013

 
 
Free Shipping
Shop with Confidence

Free Shipping around the world
▪ Broad range of products
▪ 30 days return policy
FAQ

Contact Us