Description:This introductory text includes more than the basics. It continues into some intermediate information that should be fundamental knowledge for all embedded systems designers and developers. With advances in development tools and massive increases system complexity, these basics are often overlooked because developers become more cubby-holed into specific, well-defined roles on a project. They can lose sight of the fact that they are designing/coding an embedded system, with all the differences from desktops or larger systems that have more extensive and faster system resources. Understanding these fundamentals will help cast their work in a more appropriate perspective.
Many vital and expected topics are included, such as memory mapping, architecture, coding the hardware, design tools, etc. Berger includes other topics such as the "From the Trenches" vignettes based on his own experiences, that give concrete examples to illustrate several concepts.
A good discussion is the concept of hardware/software partitioning, an early architecture decision that affects the entire development program down the line. This is often overlooked - once the design team has decided to implement a function in hardware, for example, it may often be impossible to upgrade the functionality. Sometimes bugs in hardware may be compensated for in FPGAs and in software, but this is not an ideal contingency plan.
Berger spends significant time on debugging and testing, two critical aspects of the development cycle whose effective approach is usually the difference between an on-time delivery and a lower quality product.
A definite read!
Lisa Simone If I Only Changed the Software, Why is the Phone on Fire?: Embedded Debugging Methods Revealed: Technical Mysteries for Engineers