Essential Books for Learning Embedded Software

My friends have asked me how to further grow after learning some basic things and which books to study next?

If you haven’t taken the foundational computer science courses, then studying computer fundamentals is essential.

1. Complete courses in Data Structures, Discrete Mathematics, Operating Systems, and Compiler Principles. Pay special attention to Data Structures and Operating Systems as they are foundational theories. Particularly for Data Structures, I recommend studying Yan Weimin and Wu Weimin’s “Data Structures (C Language Edition)”. Find another foreign book, making it two in total, and study for a year. Rewrite all the examples in C. Some important codes need to be memorized. Focus on analyzing the space and time of algorithms.

2. For C language books, I do not recommend a specific one. Just buy a comprehensive one. If learning C++, I do not recommend “C++ Primer” as the basic study material. This book delves deeply into generics and is a higher-level textbook. Generics are rarely used in microcontrollers, and even C++ is used less. Generally, authors of such books are quite skilled, so if you choose a book and thoroughly understand it, your level will not be low. Once chosen, be determined to read that book 10 times. I once chose a not-so-good C++ book and read it dozens of times; the book fell apart, and I identified its strengths, errors, and omissions, marking various things.

3. “Self-Improvement for Programmers”, no need to elaborate.

4. What constitutes good code? How to evaluate good code? I haven’t seen many books on this subject. So I generally recommend my colleagues read books like “MISRA C/C++ Programming Guidelines” or Lin Rui’s “High-Quality C/C++ Programming”. These two books should correspond with basic C/C++ books. However, I recommend reading the help files of LDRA and C++test. These two are very well-known static testing software that provide very detailed and thorough static evaluations of code. Their evaluation metrics are highly meaningful. Learning aids and understanding these evaluation metrics have great engineering significance for improving coding quality.

5. Once you can write good code, the next step relates to your career development. If you primarily focus on embedded systems in Linux, there are too many good books to recommend. If focusing on RTOS-type embedded systems or frontend/backend, I suggest looking at books on OO methods or UML modeling, as well as operating system principles. Along with code study, books like uC/OS-II can be optional. After reading, you may find it better to focus on OO methods, operating system principles, and reading code.

The theoretical difficulty of embedded RTOS is generally not high; the main challenge is engineering difficulty. Therefore, focus more on code study, as understanding operating system principles will enhance reading speed and depth of understanding.

6. If interested, read books on project management to understand how software engineering works. Theoretical books like PMBOK, CMMI, Agile, etc., will provide a clear understanding of leadership and self-management, positively influencing those around you.

Leave a Comment