Current location - Education and Training Encyclopedia - Education and training - How should beginners learn embedded systems? What should they start with? At present, they have a little C language, digital, analog and electrical foundation. What should they learn? If you want to o
How should beginners learn embedded systems? What should they start with? At present, they have a little C language, digital, analog and electrical foundation. What should they learn? If you want to o
How should beginners learn embedded systems? What should they start with? At present, they have a little C language, digital, analog and electrical foundation. What should they learn? If you want to operate? C language is the most important basic knowledge of embedded system. You mainly learn C language well, but mastering it doesn't mean that your foundation is good. The basic knowledge related to embedded learning is mainly these:

First, the foundation of programming, such as the basic programming language foundation, at least the data type, program structure, process control and other basic contents should be quite clear, so it is suggested to catch up with C language, and Tan Haoqiang's C Language Programming should be read well, hehe! In addition, many students asked about the foundation of data structure. I always think that learning data structures and algorithms is a good training method to help form programming logic thinking, which is of course beneficial to the improvement of programmers' long-term professional quality, so I suggest that even after engaging in embedded industry, I should add more relevant knowledge. Many students who have never studied data structure in school often find this part very boring and difficult to learn. In fact, if you can understand the significance of learning computer storage and data organization, you can fully appreciate the value and charm of data structure. Once you have interest, everything will be solved, hehe!

The second is the working principle of the operating system, which is often inaccessible to non-computer majors in school. Because the multi-task environment, synchronization and communication cooperation between modules, driver design and so on related to embedded software design often need to have an understanding and mastery of the working mechanism of the operating system as the basis, it is recommended that students who have not studied systematically find a book on the working principle of the operating system and read it carefully (there is no super-thick, super-professional and super-kernel, so focus on popularizing knowledge first, hehe! )。

Third, the basic hardware foundation. Because the development of embedded Linux is often the route of ARM+Linux, in order to master the structure and principle of mainstream embedded microprocessors (such as ARM9) in the subsequent study, it is necessary to have a preliminary understanding and mastery of the working principle of hardware. It is recommended to read related professional books such as computer composition principle and architecture.

To further study, you can try the following routes:

(1) C language is the strongest of all programming languages, and the programming of single chip microcomputer, DSP and various chips similar to ARM can be completed in C language), so you must master it very skillfully.

Recommended books: C Programming Language, classic textbooks, written by foreigners, also translated into Chinese.

(2) The principle of operating system is necessary. It doesn't matter if you graduated from computer science. If you are not a computer major, you must find a relatively simple book on computer principles and explain the basic issues such as "process", "thread" and "system scheduling" clearly.

(3)Linux operating system is written in C language, so you should also learn Linux programming first. Only when you can apply it can you have a deeper understanding of the essence of its kernel.

Recommended books: advanced programming in UNIX environment (second edition)

(4) Understand the architecture, principle and assembly instructions of arm. In embedded development, we seldom write assembly, but the minimum requirement is to be able to understand ARM assembly.

(5) When porting the system, you need to start with the lowest bootloader, and then port the kernel and file system. However, this part of the migration relies heavily on hardware, and the configuration steps are complicated, so there is not much detailed information.

(6) Promote development

Linux driver design is not only a challenging field, but also a profound content.

The essence of linux driver design belongs to the category of linux kernel programming, so there are requirements for linux kernel and kernel programming. Before studying, you should know the composition of the linux kernel, because each part can be expanded into a thick book if it is studied in detail.

The above is just a general framework, and many things will be involved in the actual development, such as cross-compilation, makefile, shell scripts and so on. Therefore, it takes a long period to learn embedded systems, and the threshold is high. Self-study requires strong learning ability and professional skills. As long as you can persist, you will succeed!

Huaqing Yuan Jing's embedded teaching materials are professional and famous. They are sold in the university library and the bookstore outside. You can search online and buy one. Huaqing Yuan Jing's website and technical forum also have many embedded learning materials and videos that can be downloaded and updated quickly. LZ has nothing to do. You can go around. I believe it will help you!