Compared to other leading academic books on embedded systems, this book takes a more structural approach to the discipline. While Jantsch [1] focuses on abstract specification formalisms, and Marwedel [2] tries to cover the complete design flow from top to bottom, this book presents components in detail and then discusses how they can be integrated into a system, mainly through examples. This makes it suitable for students and practitioners without a strong background in computer architecture, as the book gently introduces the basics of the subject in chapters 2 to 4, covering instruction sets, processors, memory hierarchies, and interconnects. Likewise, it assumes that the reader has little familiarity with compilers, operating systems, and scheduling algorithms, and thus provides an introduction to those concepts in chapters 5 and 6.
However, the coverage of those subjects is not a simple summary or revision. For each new component that is introduced, the author highlights how it impacts the key objectives in embedded systems design: performance, timeliness, and energy efficiency. For instance, chapter 3 discusses the performance boost in central processing units (CPUs) made possible by pipelining and caches, but also highlights the features that can be used to reduce the power consumed by CPUs. The trade-off between performance and power consumption is also addressed at the embedded software level, for example, in loop optimizations.
This is the third edition of the book, which includes new material on processor and microcontroller architecture and instruction sets (PICmicro, TI C64x). The chapter structure has also changed, and strangely the two original chapters on multiprocessors and networks have been compacted and merged into one, despite the increasing importance of those technologies in the embedded systems landscape.
With its bottom-up approach, this book is suitable for undergraduate electrical and electronics engineering curricula, following basic courses on digital systems design. For computer science and engineering programs, this book represents a significant overlap with what is usually covered in courses on computer architecture and operating systems; however, the emphasis on performance analysis and energy use is still a valuable asset.
The main shortcoming of the book is its lack of a formal treatment of performance and timeliness, which could provide students with a better understanding of timing and performance guarantees (which are critical to many of the embedded systems mentioned in the book, such as those in the avionics and automotive domains). Books such as Jantsch’s [1] or others on real-time systems [3,4] specifically address such guarantees and should be used in addition to this book in more advanced courses.