Students and engineers new to embedded work looking for a general introduction to embedded system design will benefit
This is a very good generic introduction to embedded system design. It is not a cookbook of designs and source code, but discusses all the various aspects of embedded system design with many pearls of wisdom thrown in, covering the common embedded targets often contrasting the differences in the processor families. There is no source code or circuit diagrams apart from the 8031 circuit in the appendix, although there are plenty of useful diagrams. The style is easy to read and flows well. This is the second edition of this book and it is 50% larger than the first edition.
The first chapters are system, hardware and software design in that order with the software chapter being relatively short. This is because interrupts, a major aspect of embedded systems, have a chapter to themselves. However as stated in the chapter this book only skims software design as many other books deal with this as a main subject. Software design methodologies are not mentioned. What is covered are the considerations that must be made in software for real-time and embedded systems with fixed times and (usually) small resources. These things are mainly the sorts of things that are missed in books on software methods. How many software books look at EMC or power saving?
The system chapter is gong to be an eye opener to many as the split between hardware and software is not as simple as in desktop systems. There are many helpful suggestions to guide the reader to sensible answers.
The book then goes on to look at debugging. This is very different to 'normal' system design because embedded systems tend not to have general-purpose screens and keyboards. The only area I can see where this book is a bit lacking is in its treatment of in circuit emulators (ICE). I think that the author has not used modern ICE to any extent. This view is strengthened by his discussion of logic analysers. Modern ICE have far more functionality (and are a lot more reliable) than suggested by the book and certainly for 8 bit systems are a lot less expensive than the average logic analyser is.
Some of the more unusual topics covered are multi-processor systems and RTOS. Multi processors often make sense these days where several 8-bit systems can either work independently (via comms) or share memory on a single board. Using three 8051 processors can be a lot cheaper than one 486. RTOS may be of use on small systems that need a multi-tasking program without an OS. It will also help decision making for larger systems where an OS must be chosen.
The discussions cover a wide range of topics, buzzwords and techniques used in embedded work, some hardware and some software. These sections, whilst not always covered in great depth hold the key points and will be useful when using the other tools and data books required for a real system design and implementation.
Students and engineers new to embedded work looking for a general introduction to embedded system design will benefit from this book. It is suitable for engineers coming from the software or the hardware side.