(Ebook) Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit by Bruce Powel Douglass ISBN 9781856177078, 1856177076 instant download
(Ebook) Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit by Bruce Powel Douglass ISBN 9781856177078, 1856177076 instant download
https://ebooknice.com/product/real-time-uml-workshop-for-embedded-
systems-5411244
https://ebooknice.com/product/making-embedded-systems-design-patterns-for-
great-software-56259492
https://ebooknice.com/product/real-time-design-patterns-robust-scalable-
architecture-for-real-time-systems-11809678
https://ebooknice.com/product/making-embedded-systems-design-patterns-for-
great-software-57674922
(Ebook) Making Embedded Systems: Design Patterns for Great
Software, 2nd Edition by Elecia White ISBN 9781098151546,
1098151542
https://ebooknice.com/product/making-embedded-systems-design-patterns-for-
great-software-2nd-edition-56246860
https://ebooknice.com/product/software-engineering-for-embedded-systems-
methods-practical-techniques-and-applications-55831158
https://ebooknice.com/product/software-engineering-for-embedded-
systems-10959124
https://ebooknice.com/product/embedded-systems-handbook-embedded-systems-
design-and-verification-1270576
Design Patterns for
Embedded Systems in C
This page intentionally left blank
Design Patterns for
Embedded Systems in C
An Embedded Software Engineering Toolkit
Permissions may be sought directly from Elsevier’s Science & Technology Rights
Department in Oxford, UK: phone (+44) (0) 1865 843830; fax (+44) (0) 1865 853333;
email: [email protected]. Alternatively you can submit your request online by visiting
the Elsevier web site at http://www.elsevier.com/locate/permissions, and selecting Obtaining
permission to use Elsevier material.
Notice:
No responsibility is assumed by the publisher for any injury and/or damage to persons
or property as a matter of products liability, negligence or otherwise, or from any use
or operation of any methods, products, instructions or ideas contained in the material herein.
Because of rapid advances in the medical sciences, in particular, independent verification
of diagnoses and drug dosages should be made.
ISBN: 978-1-85617-707-8
vii
Contents
viii
Contents
ix
Contents
x
Contents
xi
Contents
xii
Contents
xiii
Contents
xiv
Preface
The predominate language for the development of embedded systems is clearly C. Other
languages certainly have their allure, but over 80% of all embedded systems are developed
in this classic language. Many of the advances in the industry assume the use of object-oriented
languages, web clients, and technologies that are either unavailable in the bare-metal develop-
ment environment of embedded systems, or are too memory or resource intensive to be
effectively deployed.
Design patterns are one of these profitable areas of advancement. A design pattern is a
generalized solution to a recurring problem. Design patterns allow several advantages. First,
they allow users to reason about solutions in a more abstract way and to codify their important
properties. Since all design patterns are about optimization of some set of design criteria at the
expense of others, different design patterns might address the same operational context but
provide different benefits and costs. By reifying design patterns as a basic concept, we can
reason about the best ways to optimize our systems and the technologies and approaches to
accomplish that.
Secondly, design patterns allow us to reuse solutions that have proven themselves to be
effective in other, similar circumstances. This is certainly a larger scope of reuse than reusing
lines of code or individual functions. Because design patterns can be analyzed for their
performance and optimization properties, we can select the best patterns for our particular
problems.
Additionally, design patterns give us a larger set of reusable building blocks with which to
describe our system. If you say the system uses a “symmetric deployment pattern with RMS
multitasking scheduling and a triple modular redundancy approach” that sums up a significant
portion of the architectural optimization decisions about your system. Design patterns make our
vocabulary larger and more expressive.
Lastly, design patterns provide a unit of reference. If you Google “design patterns” you get
over 3,000,000 hits. If you search the Amazon book department online, you get a list of 793
books. There is a great deal of work that goes on in the area of defining and using design
patterns, so we are exposed to an enormous wealth of reusable and proven solutions from which
we can select, mix, and bring to bear appropriate solutions.
xv
Preface
This book brings the power of design patterns to the embedded C developer. Where
appropriate, we use an object-based implementation policy with code examples to see how
the patterns are implemented and used. The patterns are divided up into different areas of
relevance to the embedded developer, including:
• Hardware access
• Concurrency
• State machine implementation
• Safety and reliability
In each area, different patterns are provided that address common concerns.
Audience
The book is oriented toward the practicing professional software developer and the computer
science major, in the junior or senior year. It focuses on practical experience by solving posed
problems from the context of the examples. The book assumes a reasonable proficiency in the
C programming language. UML is used to graphically represent the structure and behavior of
the patterns, but code examples are given to clearly show the design and implementation
concepts.
Goals
The goal of this book is to provide a toolbox for the embedded C developer and to train him
or her on the appropriate use of those tools. An agile development workflow, called the
Harmony Process™ (developed by the author) is discussed in Chapter 2 to provide a process
framework in which patterns have a definite role. However, the use of patterns transcends any
individual process, no matter how coolly named.
By the time you’ve reached the end of the book, you will hopefully have the expertise to
tackle the real design issues that you face in your life as a professional developer of embedded
systems.
xvi
Acknowledgements
I want to thank my wife Sarah for being supportive even though I work too much, and my great
kids – Scott, Blake, and Tamera – for being awesome even though I work too much.
xvii
About the Author
Bruce Powel Douglass was raised by wolves in the Oregon wilderness. He taught himself to
read at age 3 and learned calculus before age 12. He dropped out of school when he was 14 and
traveled around the U.S. for a few years before entering the University of Oregon as a
mathematics major. He eventually received his M.S. in exercise physiology from the University
of Oregon and his Ph.D. in neurophysiology from the USD Medical School, where he
developed a branch of mathematics called autocorrelative factor analysis for studying informa-
tion processing in multicellular biological neural systems.
Bruce has worked as a software developer in real-time systems for over 30 years and is a
well-known speaker, author, and consultant in the area of real-time embedded systems and
systems engineering. He is on the Advisory Board of the Embedded Systems conference and
has taught courses in software estimation and scheduling, project management, object-
oriented analysis and design, communications protocols, finite state machines, design
patterns, and safety-critical systems design. He develops and teaches courses and consults
in real-time object-oriented analysis and design and project management and has done so for
many years. He has authored articles for a many journals and periodicals, especially in the
real-time domain.
He is the Chief Evangelist1 for IBM Rational, a leading producer of tools for real-time
systems development, including the widely-used Rhapsody modeling tool. Bruce worked with
other UML partners on the specification of the UML. He is a former co-chair of the Object
Management Group’s Real-Time Analysis and Design Working Group. He is the author of
several other books on software, including
• Doing Hard Time: Developing Real-Time Systems with UML, Objects, Frameworks, and
Patterns (Addison-Wesley, 1999)
• Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems (Addison-
Wesley, 2002)
• Real-Time UML Third Edition: Advances in the UML for Real-Time Systems (Addison-
Wesley, 2004)
1
Being a Chief Evangelist is much like being a Chief Scientist, except for the burning bushes and stone tablets.
xviii
About the Author
xix
Random documents with unrelated
content Scribd suggests to you:
of a refund. If you received the work electronically, the person
or entity providing it to you may choose to give you a second
opportunity to receive the work electronically in lieu of a refund.
If the second copy is also defective, you may demand a refund
in writing without further opportunities to fix the problem.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebooknice.com