1. What is embedded? 2. What knowledge do you need for embedded? Knowing these two points, it's easy! I started planning my learning route. The basic theory of computers cannot be lost, so I focused on the composition principle, data structure, operating system, and C++. At the same time, I learned from the forum that the real-time operating system UCOS is a very good embedded operating system, which is very good for beginners. So I bought a book, but the code couldn't be adjusted in the computer, and there were many similar problems on the Internet. I read the book and analyzed the code. If it didn't work once, I would read it twice or three times. Only then did I get started and know what a process is. When I read the operating system book, I didn't know what a process was. I didn't master much during this period, but it had a great impact on me in the future. I remembered a sentence a classmate said to me in college: The most important thing in college is not what you have learned, but how to learn! This is probably what it means. I list the learning of embedded here separately. The article is a bit disordered, but I hope the content is useful. 1. Learning Linux Based on my understanding of the forum, I chose to learn embedded Linux. It happened that our school also attaches importance to embedded Linux. From the laboratory to the course arrangement, it is all about embedded Linux. The time and place are right! Here I will talk about my experience and lessons in learning Linux. It can be said that in the forum, learning Linux is almost the same as learning the Linux kernel. So I installed Linux on my computer and started reading books about the Linux kernel. I remember that before I came to school, I bought a book called Chen Lijun's first edition on the Linux kernel. Now there is a second edition. I started reading that book. Everyone said that the Linux kernel scenario analysis was good, so I bought the upper and lower volumes. Later, I bought "In-depth Understanding of the Linux Kernel". Finally, I bought the book "The Linux Kernel Code" which is relatively low-level and mainly talks about ARM. It was a very painful process to read the kernel. Reading the scenario analysis was like finding a way out in the forest. During this period, I organized some classmates to learn the kernel, and almost few of them could stick to it. I think I stuck to it. I almost didn't understand the scenario analysis when I read it for the first and second time. I think there are three reasons: 1. My foundation is poor, which is the most critical. 2. The kernel itself is difficult. 3. There is no communication and guidance from experts. It was not until the third time that I touched the door and almost knew the general outline of Linux. Many details were also confused. Summary of learning Linux. Here I would like to state that the embedded systems I refer to are mainly software-oriented embedded systems. The key and difficulty of learning embedded systems lies in the operating system. If you do not master the operating system, I think it is difficult to master an embedded system. Even in embedded development, you can develop without knowing the operating system. I think that is superficial. It is difficult to go deep and improve your level. Statement: A one-sided view! Do not delve into it! In the process of learning the Linux kernel, I made an extremely serious route error: I started to learn the kernel without knowing Linux. I personally recommend a learning route: use Linux—〉Linux system programming development—〉driver development and analysis of the Linux kernel. I am almost the opposite. In fact, you can learn the kernel without using Linux, but if you understand these things, learning is more efficient. Regarding the question of whether to learn the kernel, my answer is as follows: not necessarily. If you like to delve into it, then entering the kernel will satisfy your desire. At the same time, it will have a good impact on your future embedded system development. If you want to engage in embedded Linux system development, it is best to have some understanding of the kernel. If you only do application development, it is not necessary. Let me make an analogy: if C, C++, Java and other languages are a martial arts sect in the martial arts world, such as boxing, swordsmanship, etc., then the Linux kernel should be the reflection of a person's inner strength. How to start learning the Linux kernel: It is best to have three treasures: "In-depth understanding of the Linux kernel", "Scenario analysis" and source code. First read "Deep", which mainly talks about principles. It seems that there is a book on the market that talks about principles and is more superficial. "Linux Kernel Design and Implementation" is said to be good. If you have not learned operating systems, like me, it is best to read a book on operating system principles first. After reading it several times, read scenario analysis, preferably with "Deep". Read the two books alternately, "Deep" is the outline, and "Situation" is the subject. Finally, go deep into the code. 2. Learn embedded Linux. I think there are two key points in learning embedded, CPU and operating system. At present, arm is more popular in the market, so I recommend everyone to learn arm. There are many operating systems. Personally, for those who are just starting to learn, especially those who are not computer majors, I recommend learning ucos. It is open source and very small. It is very good to learn. I don't want to talk too much about why I chose Linux. There are too many articles about this on the Internet. However, I found in my work that it is very difficult to develop Linux technology. Problems that are almost non-existent in Windows are almost full of traps in Linux development. Once you fall into it, it takes a long time to get out. Once you solve it, you will grow up again! Relatively speaking, the development cycle is long and the difficulty is high. Now the information is gradually enriched, and the difficulty is also reduced! As for how to learn, this is its special place. You must have a development board. I was the first among my classmates to buy a learning board. Although it costs money, I think it is worth it. It has a great impact on my internship and work. For more embedded, Internet of Things, and smart hardware learning exchanges, please consult Teacher Yu QQ 28~59~78~02~03 Tel 173~61~88~79~73 All courses are guaranteed to be learned! Guaranteed employment! ! Guaranteed satisfaction! ! ! Xinyingda offers the following courses, all of which are free to try: (both weekend and full-time classes are available) 1. Embedded arm+linux (multiple projects, emphasis on practical experience, and guaranteed employment) 2. Microcontroller project practice class (after completing a microcontroller project, you want to do a second one) 3. JAVA (help you get promoted and get a raise, and reach the peak of your life) 4. Electronic design class (basic introductory course for the electronics industry) 5. PCB drawing board class (a must-have circuit board drawing course for hardware engineers) 6. Cortex m4 series courses (the mainstream development chip for mid- and low-end products nowadays) 7. Cortex A9, linux driver (develop high-end products and get high salaries) Synchronous learning in Shenzhen, Shanghai, Beijing, Guangzhou, Nanjing, Nanning, Zhengzhou and Jinan