or
Sign in to turn on 1-Click ordering.
or
Amazon Prime Free Trial required. Sign up when you check out. Learn More
Sell Back Your Copy
For a $12.60 Gift Card
Trade in
More Buying Choices
Have one to sell? Sell yours here
Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems
 
 
Tell the Publisher!
I'd like to read this book on Kindle

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems [Paperback]

Miro Samek (Author)
5.0 out of 5 stars  See all reviews (11 customer reviews)

List Price: $51.95
Price: $38.39 & this item ships for FREE with Super Saver Shipping. Details
You Save: $13.56 (26%)
  Special Offers Available
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.
Want it delivered Wednesday, February 1? Choose One-Day Shipping at checkout. Details
Textbook Student FREE Two-Day Shipping for Students. Learn more

Sell Back Your Copy for $12.60
Whether you buy it used on Amazon for $25.00 or somewhere else, you can sell it back through our Book Trade-In Program at the current price of $12.60.
Used Price$25.00
Trade-in Price$12.60
Price after
Trade-in
$12.40

Book Description

0750687061 978-0750687065 October 1, 2008 2
Practical UML Statecharts in C/C++ Second Edition bridges the gap between high-level abstract concepts of the Unified Modeling Language (UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts). The book describes a lightweight, open source, event-driven infrastructure, called QP that enables direct manual coding UML statecharts and concurrent event-driven applications in C or C++ without big tools.
This book is presented in two parts. In Part I, you get a practical description of the relevant state machine concepts starting from traditional finite state automata to modern UML state machines followed by state machine coding techniques and state-machine design patterns, all illustrated with executable examples. In Part II, you find a detailed design study of a generic real-time framework indispensable for combining concurrent, event-driven state machines into robust applications. Part II begins with a clear explanation of the key event-driven programming concepts such as inversion of control ("Hollywood Principle"), blocking versus non-blocking code, run-to-completion (RTC) execution semantics, the importance of event queues, dealing with time, and the role of state machines to maintain the context from one event to the next. This background is designed to help software developers in making the transition from the traditional sequential to the modern event-driven programming, which can be one of the trickiest paradigm shifts.
The lightweight QP event-driven infrastructure goes several steps beyond the traditional real-time operating system (RTOS). In the simplest configuration, QP runs on bare-metal microprocessor, microcontroller, or DSP completely replacing the RTOS. QP can also work with almost any OS/RTOS to take advantage of the existing device drivers, communication stacks, and other middleware. The accompanying website to this book contains complete open source code for QP, ports to popular processors and operating systems, including 80x86, ARM Cortex-M3, MSP430, and Linux, as well as all examples described in the book.

*Focuses on core concepts rather than tools which are always changing allowing the reader to continue to use this information with various projects
*Provides a complete, ready-to-use, open source software architecture for small and large embedded systems
*Includes an extensive example using the ARM Cortex-M3 throughout the book highlighting issues programmers and architects encounter in everyday life

Special Offers and Product Promotions

  • Buy $50 in qualifying physical textbooks, get $5 in Amazon MP3 Credit. Here's how (restrictions apply)

Frequently Bought Together

Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems + Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit + Test Driven Development for Embedded C (Pragmatic Programmers)
Price For All Three: $101.75

Some of these items ship sooner than the others. Show details

Buy the selected items together
  • In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit $42.29

    Usually ships within 11 to 14 days.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • Test Driven Development for Embedded C (Pragmatic Programmers) $21.07

    In Stock.
    Ships from and sold by Amazon.com.
    Eligible for FREE Super Saver Shipping on orders over $25. Details



Editorial Reviews

About the Author

Dr. Miro Samek is the founder and president of Quantum Leaps, an open source company providing lightweight, state machine-based, event-driven application frameworks for embedded systems. He is the author of Practical Statecharts in C/C++ (CMP Books, 2002), has written numerous articles for magazines, including a column for C/C++ Users Journal, is a regular speaker at the Embedded Systems Conferences, and serves on the editorial review board of the Embedded Systems Design magazine. For a number of years, he worked in various Silicon Valley companies as an embedded software architect and before that he worked as an embedded software engineer at GE Medical Systems (now GE Healthcare). Dr. Samek earned his Ph.D. in nuclear physics at GSI (Darmstadt, Germany).


Product Details

  • Paperback: 728 pages
  • Publisher: Newnes; 2 edition (October 1, 2008)
  • Language: English
  • ISBN-10: 0750687061
  • ISBN-13: 978-0750687065
  • Product Dimensions: 9.1 x 7.4 x 1.5 inches
  • Shipping Weight: 2.8 pounds (View shipping rates and policies)
  • Average Customer Review: 5.0 out of 5 stars  See all reviews (11 customer reviews)
  • Amazon Best Sellers Rank: #318,289 in Books (See Top 100 in Books)

More About the Author

Dr. Miro Samek is the creator of the open source QP state machine frameworks. His practical books about UML state machines, frameworks, and event-driven programming for embedded systems are among the most popular on the market. Miro has also published dozens of technical articles, including a column for C/C++ Users Journal. Miro speaks regularly at the Embedded Systems Conferences, and serves on the technical review board of the Embedded Systems Design magazine. His extensive industry experience ranges from safety-critical software development at GE Medical Systems through hard real-time embedded software design at two Silicon Valley companies specializing in GPS technologies. Software he wrote continues to power millions of products. Miro earned his Ph.D. in nuclear physics at GSI (Darmstadt, Germany).

 

Customer Reviews

11 Reviews
5 star:
 (11)
4 star:    (0)
3 star:    (0)
2 star:    (0)
1 star:    (0)
 
 
 
 
 
Average Customer Review
5.0 out of 5 stars (11 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

17 of 17 people found the following review helpful:
5.0 out of 5 stars Required reading for "old school" embedded systems programmers!, December 29, 2008
By 
Amazon Verified Purchase(What's this?)
This review is from: Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems (Paperback)
If you are an accomplished or aspiring embedded systems programmer and resort to the "superloop" as your foremost implementation method, you absolutely MUST read this book.

While not new concepts to the industry, the concepts presented in Miro's book are certainly not commonplace in many of the embedded systems code I've seen over many years in the industry.

While UML makes for a clean, now defacto standard for presenting concepts, the real beauty in Miro's book is the use of a readily-available frameworks for immediately adopting the many lessons-learned and provided in the book. These complete, well written and excellently coded frameworks are available under the GPL and an alternate, low-cost license for those who wish to keep their code private.

For strong C programmers, the implementation of the frameworks is a delight as one reads through the code and is treated to an incredibly simple, lightweight and extremely powerful system that will forever put an end to your future plans to "superloop" again--albeit for any system where C (or C++) is adequately supported by the hardware. For anyone admitting that "we've always done superloop and it has always worked in the past," get ready for a real-time, highly responsive system that actually IS event driven and thrives in as little as a few bytes of RAM and perhaps a K of ROM.

For those who must hold on to the "superloop is king" mindset, consider the consequences of adding to your superloop an entirely new set of features and how that may affect the timing through your loop. I started with the "dining philosophers" example code discussed in the book and ported it to my own board (using a Renesas H8S-2166 microcontroller) and augmented the code to be responsive to external events (mechanical switches). This required software debouncing. While my "example" was somewhat "trivial" in terms of what the functionality actually did, it is, in my opinion, extremely typical of changing requirements of both new and legacy code in the day-to-day evolution of embedded systems programming.

My changes to the example code were to implement a "bike light" feature set. That is, whenever a switched was pressed, the bike light--if off--would illuminate. An LED on the board was used for this purpose. Pressed again, the light would blink. Pressed and held for 1 second while on or blinking, the light would turn off.

The typical implementation in superloop would often require a considerate approach to ensure that the new functionality was "injected" into the "right" part of the loop, so as to be of minimal impact to other areas of critical timing code. If any kind of action within the new code delayed the loop processing, then the whole of the superloop could come under further scrutiny and therefore cause more pain as one trials and tests system responsiveness on a number of potential new fronts.

Atop of this new functionality, the frameworks-provided QSpy code instrumentation system, which allows one to have a stream of information about the system states and transitions, was ported to use a UART on the H8S. Imagine adding all of this new functionality in a traditional superloop body of code. Now, imagine adding it in a matter of perhaps two hours using the frameworks AND not adversely impacting the "legacy" application code at all!

One of the most beautiful aspects of these frameworks is the ability to focus strictly on the code necessary for the task at hand instead of the entire system as a whole. The frameworks substantially frees the programmer from having to manually manage system responsiveness typical of the superloop.

Using UML to design and document an embedded system is relatively new to many embedded systems programmers. Miro also provides a free download stencil set for MS Visio for easily implementing statecharts, which should help those interested in pursuing the many benefits of the technology included in this book.

I first met Miro at a developer's conference in San Diego, CA. One thing that comes out in his book and his discussions of this exciting technology is his passion for it. I was very interested in it, as he was displaying his software running on a very resource constrained microcontroller--all in about 40 bytes of RAM or a bit less.

Drawn to his topic by his enthusiasm, I admired the frameworks even more as I began looking at the implementation and design of the code. The entire C bundle, with royalty-free 'private commerical use' license, one of either cooperative or preemptive schedulers (both are provided), event processor, code instrumentation support and more is all for under $2K. Of course, one may explore the entire frameworks for the cost of only a free download before ever making a licensing decision for a given product.

Combined with the low-cost solution of using such powerful frameworks in conjunction with learning the valuable content of this book, teams everywhere can exploit the years of experience and very robust, capable code in a matter of hours instead of weeks, months and even years of doing things the "old school" way using superloops and other facilities instead of truly event-driven designs.

This book and the free QF download are your entry into the 21st century of embedded systems programming. Because the code is provided in C, porting is rather easy and running on embedded systems and desktop systems is practical and easy. I was able to build and run the code as provided without modifications on my Linux, Mac and Windows systems and on the H8S and a Microchip PIC 24 with only a minimalist porting effort of about a half a day in each case. Imagine being able to run an entire real-time system that features excellent extensibility while freeing you from the rigors of managing superloop timing on your own hardware all within a few hours. Then, spend a couple of hours extending the system without impacting the rest of it? Lather, rinse, repeat...it is truly that simple and robust.

Best of all, this book will open your eyes to modern methods and concepts for programming event-driven embedded systems. That is, systems that respond to internal and external events that naturally occur in all embedded systems designs. It is my firm belief that after reading this book and exploring the code on your own, you'll discover why I so heartily endorse it and now share the passion Miro has for this wonderful, very lightweight but robust, complete solution for modern embedded systems programming.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


9 of 9 people found the following review helpful:
5.0 out of 5 stars An Indispensable Embedded Systems Classic!, December 18, 2008
This review is from: Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems (Paperback)
This book took me from being a C programming novice, to writing 1000s of lines of embedded control systems code, that has been running reliably for several years, with just one bug - my own! This book has been an indispensable resource to me in my work.

Embedded systems programming can be such a perilous task, riddled with potential pitfalls an mistakes that can lead to potentially catastrophic bugs that are virtually impossible to track down. Throughout the text, important practical lessons and good design practices are shared, based on years of real-world experience, which can save novices from countless hours of painful debugging.

The book is amazingly thorough, not only showing you "how", but also teaching you "why". All of the details of the framework and its implementation are clearly described, and the source code is available in the book and online, ready for immediate use on real applications.

Samek does a truly masterful job of constructing an extremely lean yet very powerful framework for safe embedded systems programming. The approach is based on both on proven practical and solid academic foundations, such as: actor oriented programming, UML statecharts, publish-subscribe, design patterns, realtime operating systems, design by contract, etc.

This second edition contains a lot of new material, including: new support for software tracing in event driven systems, along with interfaces to Matlab; a new chapter on QP-nano, an ultra-lightweight event driven infrastructure, that can run on low-end 8- and 16-bit MCUs; the first chapter, which introduces the main ideas and techniques in the book via real-time fly&shoot game was so much fun to read; and numerous new explanations. In addition, the emphasis has shifted from C++ to C, with C++ codes available online. The first edition hit the markets around 2002, and became and instant classic; this second edition will no doubt continue that trend.

- H.H., (Xerox) PARC.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


8 of 8 people found the following review helpful:
5.0 out of 5 stars This is a really good book, May 13, 2009
By 
This review is from: Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems (Paperback)
Many years ago Finite State Machine concept saved my life in an embedded software project. Thanks to this practical experience I realized how powerful the state machine concept used in software construction is. At that time the famous "C User Journal" was for me the only source of knowledge about state machines programming.

That is why I was excited when I spotted and read the first edition of the book a few years ago.
The current edition is much thicker - 700 pages in total.
State machines stuff occupy the first 250 pages and in my opinion, this is the mandatory reading for any embedded software engineer. The author starts from "A Crash Course in UML State Machines" which teaches a reader the skills needed to describe Finite State Machines and Hierarchical State Machines in UML.
The next chapter describes a few approaches to FSM implementation. Chapter 4 introduces Hierarchical State Machine implementation using QEP processor . Chapter 5 ends the "State Machine" part of the book with the detailed description of 5 state design patterns.
Going through these 5 chapters gives the reader the deep understanding of how to design state machines using UML and how they can be coded. This knowledge is universal and can be used with any CASE tool as well as for manual coding only.

The second part (nearly 450 pages) is devoted to the description of an inner construction and possible implementations of some kind of RTOS called QP. QP itself consists of Q Event Processor, Q event-driven Framework and Q preemptive Kernel. Part two is opened by the chapter called `Real-Time Framework Concepts'. It is especially useful for somebody who has so far used only home grown embedded systems with main loop and ISR. The chapter makes it clear to the reader what the benefits of using such infrastructure over homemade solution are.
The rest of the book is the detailed description of QP in action. The good information is that the reader learns a lot even if he is not going to use QP. The reason for that is a lot of information which describes general concepts e.g. `Synchronous and Asynchronous Preemptions' which are not specific for QP only.

The strong point of the book are many figures which clearly illustrate the author's ideas. The UML diagrams are used for state machines and class relationships descriptions. For data structures relations non UML notation is used just to show the concept in a convenient way. The C/C++ code itself is clean, nicely structured and intertwined with the explanations.

Because of these features I use the book as an educational aid for the graduates who join my team and need some introduction to real commercial programming.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews









Only search this product's reviews



Inside This Book (learn more)
Key Phrases - Statistically Improbable Phrases (SIPs): (learn more)
single inheritance, programmable interrupt controller, dining philosopher problem, restoring interrupt status, target state configuration, unlocking interrupts, cooperative kernel, object event queues, nested initial transition, unconditional interrupt, source state configuration, philosopher active objects, defuse code, active object pointer, object computing model, hierarchical state nesting, dedicated active object, dispatches one event, active object state machine, switch statement technique, asynchronous event exchange, interrupt locking, preemptive kernel, active object structures, unconditional locking
Key Phrases - Capitalized Phrases (CAPs): (learn more)
Real-Time Framework Implementation, Reference Manual, Preemptive Run-to-Completion Kernel, Hierarchical Event Processor Implementation, Getting Started, Real-Time Framework Concepts, State Patterns, Crash Course, Standard State Machine Implementations, Ultimate Hook, Orthogonal Component, Visual Basic, Don't Walk, Quantum Spy, Caps Lock, Luminary Micro, Microsoft Windows, Game Over, Header File Listing, Source Code Organization Listing, Frame Sequence Number, Fun Dic, Each Mine, Structure Figure, Hollywood Principle
Browse Sample Pages:
Front Cover | Table of Contents | First Pages | Index | Surprise Me!
Search Inside This Book:

What Other Items Do Customers Buy After Viewing This Item?


Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
 
(3)
(2)

Your tags: Add your first tag
 

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

Customer Discussions

This product's forum
Discussion Replies Latest Post
Free graphical modeling tool 0 May 10, 2011
Companion websites 0 Jan 26, 2009
See all 2 discussions...  
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Active discussions in related forums
Search Customer Discussions
   
Related forums





Look for Similar Items by Category


Look for Similar Items by Subject