This is an excellent overview and collection of advice from a veteran, Elicia White, in software development for embedded systems. It is intended for a software developer who is a novice at at the design of resource-constrained embedded systems, and in the integration of hardware components in system design. Ms. White says that it is primarily intended for the development of raw metal micro-controller systems without an operating system, but in my judgement it provides many useful development heuristics that would also serve in the development of more sophisticated software for systems running Linux, an RTOS or Embedded Windows.
Certainly, as indicated in the title(semi-)formal "Design Patterns" are fully described for various characteristics of embedded development, e.g. state machines, and IOCTL-like generic control of input output peripherals; however, I would say that the most valuable contribution this book makes is in explaining the design integration of hardware components and basic EE-technologies to a software developer who has not yet experienced the design of a sophisticated embedded system. Such vital topics to the newbie embedded developer as reading a datasheet, timing diagram, or schematic are presented in an easily understandable fashion (an example datasheet is humorously provided for a dinosaur-based IO subsystem and fully analyzed). The design documentation necessary for a successful embedded project is also fully described.
This is a most necessary guidebook for a software developer involved in any hardware constrained micro-controller project; it would also be extremely useful to the hobbyist who seeks to move beyond simple Arduino-based physical computing projects.
--Ira Laefsky, MSE/MBA IT Consultant & Researcher
formerly on the Senior Consulting Staff of Arthur D. Little, Inc. and Digital Equipment Corporation