After posting the negative review on the other book here I realized that it is not much help unless you provide an alternative!
A couple of years ago I stumbled upon this book by Elicia White. Ever since I have recommended it as a must read to every new member of my team, even if they had years of experience they always reported back that they learned something valuable from reading it.
I stumbled upon this book looking for something on Design Patterns in Embedded Systems, and in terms of that this was not what I was looking for, there is barely a mention of design patterns in the book, but I was pleasantly surprised by what I did find.
I like where the book starts of, explaining the value of Design and Architecture and why this is where you should start with your project. She moves on to basic I/O and Timers which I think goes together pretty well, but importantly she covers the important use cases and patterns quite nicely and points out all of the most common pitfalls people fall into.
The next chapter, “Making the Flow of Activity” covers the main paradigms for Embedded Systems like superloop and event driven approaches and even covers table driven state machines and even interrupts, I particularly liked the section called “How NOT to use interrupts”.
Next chapter “Doing more with less” was a pretty good introduction to the methods you have to learn to tell how much RAM and FLASH you are using, and she covers important concepts like not using malloc.
The chapter on Math is sure to teach even experienced engineers a couple of new tricks and the last chapter on power consumption is practical and well done.
Overall I felt like this was a great book for beginners and a pretty good recap even for experienced engineers who will no doubt also learn a couple of new tricks after going through this book.
So while I am in a book reviewing mood. This book by Steve McConnell (of Code Complete Fame) I now keep on my desk. It is a reference on all the important topics in software project management. The book is expertly laid out so you can read it in the order which you need for your situation. If you are on a project and you need help there are instructions in the introduction on which order to read, if you are a top-down kind of person there is an order and if you are a bottom up kind of person yet another order.
I was giving a class on the topic and made a list of all the important topics to cover, when I got this book I found that it covered them all and then some. This is hands down the best project management book I have read.
I really liked the discussion on the difference between a Target Date and a Deadline and also the Cone of Uncertainty in general. Whether you are using Agile methods or more traditional sequential methods to run your projects, this book will help you either way.
Perhaps my favorite part of the book is an excercise on estimation where he asks readers to estimate things like the temperature of the surface of the sun, you can make a range as wide as you need to - but you have to make the range wide enough to have 90% confidence that the correct answer is within your range - most people fail miserably at doing this!
Check it out here : https://amzn.to/2SszcbR