Embedded: I'm not targeting anyone, I mean all the Javaers here are younger brothers, especially the programmers

Embedded: I'm not targeting anyone, I mean all the Javaers here are younger brothers, especially the programmers


Sorry for waiting


This article made the friends wait for a long time.

For more than a year, there have been no more than 100 questions about the learning route, planning, and books of embedded development, but dozens of times. But helplessly, I have limited knowledge of this aspect, so I can't explain it every time, so I'm really embarrassed.

But there is always a way. As discussed in the previous article "Recently, I have contacted many old classmates with a cheeky". Although I am not engaged in these directions myself, after thinking about it, some of my classmates and friends are still engaged in I have worked in related directions and have worked in the first line (or have worked in the first line), so I asked them to help sort out the learning routes in these areas that I am not familiar with. This time embedded development is one of them.

The reason why this article has been delayed for so long is that communication is really time-consuming. After all, the big guys are very busy. Moreover, sorting out and summarizing this matter itself is more cumbersome, so it is not published until now.


Is embedded development difficult?


After this exchange with classmates, I also learned a lot. Because I don't understand many things about embedded, I can be considered learning.

From my personal point of view, combined with previous learning experience. I think embedded development is still more difficult than soft opening on the Internet (such as Java back-end). For example, we are engaged in Java development. After all, it is basically user-oriented things, but many embedded things go deep into the kernel. So the difficulty is definitely there. It can be manifested in several aspects:

  • First of all, it is embedded at the bottom level, and both software and hardware must be understood, and the requirements for capabilities are much higher;
  • Secondly, the learning threshold of embedded development is also higher, and like the development process under the Linux platform, many people are not used to it and can't figure it out;
  • In addition, the positive feedback of embedded learning may be slow, especially in the early learning stage, which leads to a lack of sense of accomplishment and can't stick to it, so it is often abandoned.
    But having said that, doing IT is like this. The more you go to the bottom, the higher the training of human ability, so for ability, it is upgrading, so on the contrary, if embedded is done well, I think it will be the Internet problem It's not too big, it will be a dimensionality reduction blow.

Overall learning ideas


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

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

The second is the embedded application programming stage, or the system platform programming stage. Because I usually rely on a specific embedded platform and a specific embedded operating system, I am familiar with the programming methods and processes on this system platform. Take the common ARM+Linux platform as an example, you need to master several major aspects from memory management to multi-task programming, file I/O, network programming, and even graphical interface programming.

The last step is to go deep into the underlying embedded development stage. The most common ones are kernel development and driver development. These all belong to the category of kernel development. Therefore, you need to learn and understand the internal mechanism of the operating system. On this basis, you need to master the migration from system to The details of kernel development and driver development are the road to godhood.

The general idea is this, let’s take a look at the detailed learning route and knowledge points.


Learning route + knowledge combing


It took a long time to organize this detailed brain map of the knowledge route. Of course, due to limited time and abilities, after all, the entire embedded system is too large. Including my embedded classmates, it is impossible to understand everything. Some things may not be covered, and the shortcomings are still small. Partners communicate and supplement together, improve and progress together.

Embedded: I'm not targeting anyone, I mean all the Javaers here are younger brothers, especially the programmers
Note: The image may be compressed after uploading. If you need a lossless version of the high-definition large image or PDF version of the document, you can directly reply to the three words "embedded" in the background of this official account.


Recommended books


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

Embedded: I'm not targeting anyone, I mean all the Javaers here are younger brothers, especially the programmers
Share it here this time, see you in the next article.

Make small but daily progress

Slower can be faster

Guess you like

Origin blog.51cto.com/15061948/2592688