I’m often asked what useful books software engineers should read when they start to work on embedded systems. So here’s a list of books I would recommend as starters.
First, nowadays many embedded systems are written in C (although lower end systems using 8-bit MCU are still likely to be written in Assembler), so software engineers had better make themselves very familiar with C/C++ and GNU tools (gcc, libtool. automake…) with a focus on embedded systems (e.g. interrupts handling, real-time capabilities, volatile variables, processes and threads’ stack handling, , cross compilers…). Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition
Once you start developing embedded systems you are likely to write device drivers at some points. Linux Device Drivers, 3rd Edition
Finally, if you program for embedded systems (especially without MMU, hence no shared libraries), you’re likely to work with a system architecture using one process with multiple threads instead of a system architecture using multiple processes. So you’ll have to make yourself familiar with threads programming, handling shared memory, using mutexes.. This is already explained to some degrees in Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition but you may want to get more details with Pthreads Programming: A POSIX Standard for Better Multiprocessing (O’Reilly Nutshell)
There are also other useful books and resources available, but if you read those three books and use online resources, you’ll be ready to take on embedded system projects.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
|Support CNX Software - Donate via PayPal, become a Patron on Patreon, or buy review samples|