|For novel ideas about building embedded systems (both hardware and firmware), join the 25,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype, no vendor PR. It takes just a few seconds (just enter your email, which is shared with absolutely no one) to subscribe.|
Books for Embedded System Developers
Here's links to various reviews of books useful to embedded system developers. They cover subjects from firmware development to hardware. First, one shameless plug - I've written a half dozen embedded books myself. More here.
|Suggestion: Subscribe to my free newsletter which often has reviews of books about embedded systems.|
Agile: The Good, the Hype and the Ugly, Bertrand Meyer - This won't make many agile enthusiats happy.
Agile Estimating and Planning, Mike Cohn - Valuable for anyone building software.
ARM Assembly Language, William Hohl and Christopher Hinds - A pretty decent intro to this subject.
Balancing Agility and Discipline, Barry Boehm and Richard Turner - Agile or more disciplined?
Bebop to the Boolean Boogie, Clive Maxfield - A fun and interesting digital design book.
Better Embedded System Software, Phil Koopman - An essential introduction to all areas of building embedded systems.
Building Parallel, Embedded, and Real-Time Applications with Ada, John McCormick, Frank SInghoff and Jerome Hugues - One of the best books on using Ada effectively in building embedded systems.
C For Everyone, Richard Man and CJ Willrich - an excellent intro to embedded C, the language and its use.
Computer Approximations - The best book on approximations ever. Hart's classic book is a "must have"... if you can find it.
Debugging, David Agans- A well written, quick read packed with war stories. Every new grad should read this.
Design Recipes for FPGAs, Peter Wilson - A good selection of VHDL and Verilog design patterns.
Digital Apollo, David Mindell - An exploration of the relationship between human and computers.
Embedded Ethernet and Internet Complete, Jan Axelson - A good "how to" description of building internet-aware applications.
Embedded Linux Primer, Christopher Hallinan - A Practical Real World Approach- A book about putting the OS into firmware.
Embedded Systems Building Blocks, Jean LaBrosse - If you believe in reuse, well, here's stuff to reuse! Also has his firmware standard.
Embedded Systems Design, Arnold Berger - A great intro to the embedded world, with a focus on tools. Also has good hints on selecting processors.
Embedded Systems Security, David and Mike Kleidermacher - Practical methods for safe and secure software systems development.
An Embedded Software Primer, David Simon - One of the best introductory books to embedded development around.
Embedded Systems Design using the Rabbit 3000 Microprocessor, Kamal Hyder and Bob Perrin. - Required reading for users of the R3000, and a pretty darn good introduction to the entire realm of embedded systems development as well.
Extreme Programming Explained, Kent Beck - XP is garnering waves of adherents. A very good intro to the ideas and practices.
Extreme Programming Refactored, Matt Stephens and Doug Rosenberg - An infuriating but enlightening expose of eXtreme Programming.
Feature-Driven Development, A Practical Guide to, Stephen Palmer and John Felsing - A development methodology that is much more suited to most embedded efforts. Highly recommended.
The GE Transistor Manual. Everything about transistors, in the 1960s at least. A fascinating and fun book for EE history buffs.
Guidelines for the Use of the C Language in Vehicle Based Software, by MISRA - This is a list of dos and don't dos for writing reliable C code. Not a book per se, but a hundred page list of rules.
Ham Radio for Dummies, by Ward Silver - A great introduction for the newbies to the fascinating world of ham radio.
Hands-on XBEE Lab Manual, Jonathan Titus - Experiments that teach you XBEE wireless communications.
High Integrity Software, John Barnes - A fascinating description of the SPARK programming language.
High Speed Digital Design, Howard Johnson and Martin Graham - The best book around about high-speed issues.
How Computers Do Math, Clive "Max" Maxfield and Alvin Brown - All about the essential workings of computers.
If I Only Changed the Software, Why is the Phone on Fire, Lisa Simone - A fast paced book, interweaving software and hardware.
Introduction to the Personal Software Process, Watts Humphrey - All about the Personal Software Process.
MATH Toolkit for Real-Time Programming, Jack Crenshaw - If you're building approximations, or trying to learn about fixed-point math, this is your bible.
MicroC/OS-II, The Real Time Kernel, Jean Labrosse - The best book on real time operating systems.
MSP430 Microcontroller Basics, John Davies - A great book for novices, as well as experienced developers.
uC/OS-III, The Real-Time Kernel, Jean Labrosse - An entirely rewritten version of a classic.
Peer Reviews in Software, Karl Wiegers - The most readable book on code inspections.
Peopleware, DeMarco and Lister - Perhaps one of the most important books written about being more productive in a software environment.
Principles of Software Engineering Management, Tom Gilb - An interesting book that's essential to anyone planning to manage a software project.
Programming Embedded Systems in C and C++, Michael Barr - A very good intro book, with a focus on the 186 processor.
Real-Time Embedded Multithreading Using ThreadX and MIPS, Edward Lamie - A very organized book with lots of well written code that lends to an excellent presentation of the subject.
Real-Time Embedded Systems, Xiaocong Fan - A very complete and heavy read with lots of worthwhile info..
Real-Time UML Workshop for Embedded Systems, Bruce Powel Douglass - A precise and engaging, humorous at times book, yet clearly focused on getting complex ideas across.
Serial Port Complete, Jan Axelson - A very complete reference to serial communications.
Software Inspection, Tom Gilb and Dorothy Graham - THE book on code inspections.
Software Inspection - An Industry Best Practice, IEEE Collection - A good series of papers on software inspections.
Statistics in a Nutshell, Paul A Watters and Sarah Boslaugh - an ideal self study book, one of the best.
TCP/IP Lean, Jeremy Bentham - An intro to TCP/IP.
Test Driven Development, by Kent Beck - Kent Beck's view of building the system by producing tests first - Flawed but interesting.
Test Driven Development for Embedded C, James Grenning - hands down, the best book written on the subject.
The Art of Designing Embedded Systems, Jack Ganssle - How to go about building an embedded system, from process issues to tech ideas.
The Art of Programming Embedded Systems, Jack Ganssle - This book is now all but out of print.
The Art of Readable Code, Dustin Boswell and Trevor Foucher - A gem with solid advice in this quick read.
The Definitive Guide to the ARM Cortex-M3, Joseph Yiu. A good intro to the very popular Cortex-M3.
The Definitive Guide to the ARM Cortex-M0 and Cortex-M0+, Joseph Yiu. An excellent book about the Cortex-M0 and M0+.
The Digital I/O Handbook, Jon Titus and Tom O'Hanlan. A great introduction to a tough subject.
The Elements of Style, William Strunk and E. B. White - If your comments are lousy, so's your code. Here's a short classic about writing decent comments and prose.
The Embedded Systems Dictionary, by Jack Ganssle and Michael Barr - The only single-source of definitions of words used in our industry.
The Essential Guide to Digital Signal Processing, Richard Lyons and D. Lee Fugal - A book for the vaguely-techie who needs just a bit more that a little familiarity with the subject.
The Existential Pleasures of Engineering, Samuel Florman - If you enjoy the philosophy of engineering, you will like this book.
Understanding and UsingC Pointers, Richard Reese - A surprisingly worthwhile new book on using C pointers
USB Mass Storage, by Jan Axelson. The definitive guide to building memory systems using USB.
When Computers Were Human, David Alan Grier - Computers used to be flesh and blood.
Writing in Software Development, by Al Stavely. How to create great docs with your code.