Sorry to have kept you waiting

This article has kept you waiting for so long.

For more than a year, I’ve been asked dozens of times, if not a hundred, about the learning route, planning, and what books to read for embedded development. But helpless oneself to this respect understanding is limited, so every time can not explain, do really embarrassed.

However, there are ways to do this. As mentioned in the previous article “Recently I have been shameless in contact with many old classmates”, although I am not engaged in these fields myself, I have reflected on some of my classmates and friends who are engaged in these fields and have worked in (or have worked in) the first line of work. So I asked them to help me sort out the learning routes of several fields that I was not familiar with, and this embedded development was one of them.

The reason why this article has taken so long is that it takes too much time to communicate. After all, the bosses are very busy. Besides, it is quite tedious to sort out and summarize the matter itself, so I waited until now to send it.

This article in the open source project:
https://github.com/hansonwang99/JavaCollectionHas been included in, which contains different directions of self-study programming route, interview questions set/face, and a series of technical articles, resources continue to update…


Is embedded development difficult?

After this exchange with classmates, I also learned a lot. Because I don’t know a lot of things about embedded, so I’ve learned.

From my personal point of view, combined with previous learning experience. I think the embedded development than the Internet soft open (such as Java back end) or some difficult, such as we engage in Java development, how to say, the basic is the user state of things, but embedded a lot of things are deep into the kernel state, so the difficulty is certainly some, performance in several aspects:

  • First of all, embedded it slant the bottom layer, software, hardware to understand, the ability of the requirements would have been much higher;
  • The second, the learning threshold of embedded development is also higher, and likeLinuxThe development process under the platform, many people are not used to, do not know;
  • Moreover, the positive feedback of embedded learning may be slow, especially in the early learning stage, which leads to no sense of achievement and can not stick to it, so they often abandon the pit.

But say, do IT is like this, the more to the bottom of the ability of the exercise is higher, so for the ability is in the rise dimension, so in turn, if embedded do well, I think to do the Internet problem is not big, when the time belongs to the reduction dimension of the blow.


General Learning Idea

In general, embedded learning can still be divided into three major stages:

First of all, basic learning stage, which includes general programming foundation (C language, data structure/algorithm, operating system, network, group, Linux system foundation) and basic hardware foundation. A solid grasp of these two foundations is the power source of subsequent sustainable development and continuous progress.

The second is the embedded application programming stage, or system platform programming stage. Because it is generally based on a specific embedded platform and a specific embedded operating system, familiar with the programming methods and processes on this system platform. Take common ARM+Linux platform as an example, need to master from memory management to multitasking programming, file I/O, network programming, and even graphical interface programming and other big aspects.

Finally is deeply embedded the underlying development stage, the most common is the kernel development and driven development, these all belong to the category of kernel mode development, so need to read and understand what operating system internal mechanisms, on the basis of the need to master from system to kernel development, drive the development of all details, it is the road to become god.

The general idea is like this, and then look at the detailed learning route and knowledge combing.


Learning route + knowledge combing

It took a long time to compile this detailed brain map of the knowledge route. Of course, due to limited time and limited ability, after all, the whole embedded system is really too large, including my classmates who do embedded, it is impossible to understand everything, some things may not be covered, the deficiencies, but also hope that our partners communicate and supplement together, improve and progress together.


Books recommended

Finally, according to the overall learning route, I recommend some corresponding classic books:


Postscript: This article is in the open source project:
https://github.com/hansonwang99/JavaCollectionHas been included in, which contains different directions of self-study programming route, interview questions set/face, and a series of technical articles, resources continue to update…

That’s all for this time. See you in the next post.

Make a little progress every day

Slow is faster