I got an email from Jason, a listener, this week:
Hi guys! Been listening to your show since May and it's always great. You're very good about explaining concepts that are new to some people. I'm starting my first post college job as a software engineer (doing embedded work!). Are there any books for embedded that are "must haves"? For instance, object oriented programmers always have a copy of Design Patterns by GOF. Are there equally important books for embedded software design? Your podcast is great.
sadkjfa;lj04’ (That was my head hitting the keyboard.) I am such a terrible marketer. Or I am being punked. I’m not sure which. Thanks, Jason. But let me answer:
I wrote O’Reilly’s Making Embedded Systems: Design Patterns for Great Software. It is a book for software engineers, to introduce them to how to do low-level programming, building on the design patterns they already know. It is also a book for hardware engineers to describe how to write better software.
Every chapter has a list of related books (and other materials) in case you want to dig deeper. Every chapter ends with an interview question and what an interviewer might look for when posing that question.**
The book goes through creating a system architecture, working with hardware, GPIOs (including PWMs and timers), state machines and schedulers, a brief introduction to the most common peripheral communication methods (displays, I2C, SPI, etc), bootloaders/updating firmware, dealing with resource constraints, doing math with small processors aka living without floating point libraries, and reducing power consumption.
I am incredibly proud of my book.
It was published in 2011 but I think it has held up well as it doesn’t focus on a particular chip, going more for concepts and generalities. It also doesn’t talk about RTOSes, only bare metal programming.
I’m happy to give coupons for anyone wanting to buy it from OReilly.com (40% off paper, 50% off ebook) but Amazon is usually still cheaper (hit the contact link if you want the coupon anyway). And yes, I know you can get the PDF in shady places on the internet but I’ll remind you that I worked hard on the book (and so did O’Reilly and my editor Andy Oram) so get your company to buy it for you.
Also, have I told you that I do a podcast? Yes, once a week, we talk about something embedded: hardware, software, some other engineering. Or science-y. Or maybe career advice. And there was that one time we had a 20 minute conversation with our cat about embedded systems. Good times.
Oh! One more thing, Chris White and I have an embedded software consulting company (Logical Elegance, Inc.) where we do work for money. I know, I know, you just considered buying my book and now I want you to hire me? This has gone too far. But, seriously, my current gig will be up in mid-September and I’ll be fishing for something new. I’m hoping for something science-y or math-y as well as low powerish or sensor-iffic.
** I find it incredibly hilarious when people try to ask me these interview questions after reading my book, not realizing I wrote the book.