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 is just the right book for that purpose. It deals with embedded Linux and eCos and provides useful examples. You may also read part of it online
Once you start developing embedded systems you are likely to write device drivers at some points. Linux Device Drivers, 3rd Edition is a must have and is up-date for Linux 2.6. In case you need to write drivers for Linux 2.4 you may want to read the second edition. Linux Device Drivers edition is also available free of charge in PDF format.
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 cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Thanks for the list of books suggested by your site. Which helps me a lot to progress through how to develop a successful product. I need one more help. Could you please suggest me any good book or video link to learn about the compilers/linker/loaders/ and debuggers.
with regards,
Hari
@harichand
This part of development may be specific to a particular vendor. Some will use GNU dev tools: gcc, make, autoconf, gdb, insight, perf,… whereas others will use IAR, some solutions based on Eclipse, valgrind, or develop their own tools.