Embedded system learning knowledge system, a must-see for beginners

1 Knowledge system of embedded system

The application range of embedded systems can be roughly divided into two categories: (1) the intelligence of electronic systems (industrial control, modern agriculture, household appliances, automotive electronics, measurement and control systems, data acquisition, etc.); (2) computer applications Extensions (MP3, mobile phones, communications, networks, computer peripherals, etc.). It can be seen from these applications that to complete the design of an embedded system application product with MCU as the core, knowledge of hardware, software and industry fields is required. The hardware mainly includes MCU hardware minimum system, input/output peripheral circuit, and man-machine interface design. The software design includes the design of the firmware, and may also include the design of the PC software. Industry knowledge needs to be obtained through collaboration, communication and summarization.

Embedded system learning knowledge system, a must-see for beginners

In a nutshell, learning an embedded system with MCU as the core requires the following basic knowledge of software and hardware and practical training:

1: Hardware minimum system (including power supply, crystal oscillator, reset, write debugging interface);

2: General I/O (switch input/output, involving detection and control of various binary quantities);

3: Analog-to-digital conversion A/D (collection and processing of various sensor signals, such as infrared, temperature, photosensitive, ultrasonic, direction, etc.);

4: Digital-to-analog conversion D/A (use digital control for analog devices);

5: Communication (serial communication interface SCI, serial peripheral interface SPI, integrated circuit interconnection bus I2C, CAN, USB, embedded Ethernet, ZigBee technology, etc.);

6: Display (LED, LCD, etc.);

7: Control (control various equipment, including PWM and other control technologies);

8: Data processing (graphic, image, voice, video, etc. processing or recognition);

9: Various specific applications.

In fact, everything is inseparable from its origins, and any application can be classified into these categories. The hardware design, software design, and testing in the application must follow the methods, principles and basic principles of embedded software engineering. Therefore, embedded software engineering is also an organic part of the embedded system knowledge system, but it is integrated into the development process of specific projects.

The above practical training involves hardware foundation, software foundation and related field knowledge. Computer language, operating system, development environment, etc. are all tools to accomplish these purposes. For some beginners, it is easy to confuse the use of tools with the real purpose they are trying to achieve. For example, some learners have learned the transplantation of embedded operating systems for a long time, instead of developing the actual embedded system products. In the end, they can't do a small embedded system product well, deviate from the learning goal, or even give up In the field of embedded systems. This is the situation that has entered the misunderstanding of embedded system learning. Let's do some analysis on this.

2 Learning Misunderstandings of Embedded System

Regarding the learning methods of embedded systems, due to differences in learning experience, learning environment, learning objectives, existing knowledge base, etc., there may be differences in learning sequence, content selection, and practice methods. However, it should be clear which is the necessary basic knowledge, which should be learned first, which should be learned later, which must be obtained through practice, which is general knowledge that has nothing to do with the specific chip, and which is related to the specific chip or development environment Knowledge.

Due to the wide variety of microprocessors and microcontrollers, it is also possible that different companies and organizations may give some misleading propaganda out of their own interests, especially the backwardness of my country's embedded microcontroller manufacturing technology and other related conditions, which make people There are differences in understanding and understanding of the development of microcontrollers. As a result, some beginners have entered the learning misunderstanding of embedded systems and wasted valuable learning time. Let's analyze several misunderstandings that beginners may have.

If it is said that learning embedded systems is not to develop its application products, then there is no specific goal, and many problems such as learning methods need not be discussed. In fact, this is the key problem that many people want to learn, but don't know where to start, and don't know the specific goal of their learning. As a result, I read some training advertisements, read a wide variety of embedded system books on the shelves in the bookstore, or searched the Internet using "embedded system" as a keyword, and then participated in training or read books to start "learning". For people with computer experience, they often choose an embedded operating system and start learning. The unpleasant metaphor is a bit like "the blind man touches the elephant", only one aspect is understood. How can we have a comprehensive understanding of the development process of embedded products? For many beginners, I think it is inappropriate for many beginners to choose the "xxx embedded operating system + xxx processor" embedded system introductory learning mode. My suggestion is: First lay the foundation of embedded system software and hardware, and then choose a real-time operating system (RTOS) for learning and practice based on actual needs. Remember: RTOS is an auxiliary tool for the development of certain types of embedded products. It is a means, not an end. Many types of embedded products do not require RTOS. Therefore, learning RTOS from the beginning does not conform to the learning law of "from the shallower to the deeper, step by step".

Due to the wide variety of RTOS, the actual RTOS used generally needs to be determined by the work unit. The basic stage is mainly to learn the basic principles of RTOS and software development methods on top of RTOS, rather than learning how to design RTOS. Learners who aim to develop actual embedded products should not spend too much energy on designing or porting RTOS. Just as many people use the Windows operating system, there is only Microsoft designed for the Windows operating system. Many people "study" Linux, but don't use it. Time is wasted. People's energy is limited, and they must have choices in learning.

2.2 Learning Misunderstandings of Embedded System 2-Hardware and Software Confusion

The knowledge system of embedded technology with MCU as the core must be embodied, practiced and trained through specific MCU. However, choosing any type of MCU, its chip-related knowledge only accounts for 20% of the knowledge system, and 80% is general knowledge. But 80% of general knowledge can only be carried out through specific practice, so learning embedded technology must choose a series of MCUs. But no matter what, the system contains two parts: hardware and software. What is the relationship between them?

Some scholars only understand embedded systems from an electronic perspective. Think "embedded system = MCU hardware system + applet". Most of these scholars have a good basic knowledge of electronic technology. The actual situation is that the internal RAM of the early MCU was small, the program memory was externally connected, and various I/Os were required to be expanded. There was no more complicated interface such as USB, embedded Ethernet and so on. Therefore, the program accounted for less than 50% of the total design. People think that the embedded system (microcontroller) is an "electronic system", with hardware as the mainstay and program as the supplement. However, with the development of MCU manufacturing technology, not only has the internal RAM of the MCU become larger and larger, but the introduction of Flash into the MCU has changed the traditional embedded system development and debugging method. The firmware program can be debugged and upgraded online more conveniently. The convenience of developing PC programs is almost the same, except that the development environment and the operating environment are not the same carrier. These circumstances have caused fundamental changes in the software and hardware design methods of embedded systems.

Some scholars only understand embedded systems from the perspective of software development, and some even only understand embedded systems from embedded operating systems. Most of these scholars have good basic knowledge of computer software development and think that the hardware is the business of the manufacturer, but they do not realize that the software and hardware of the embedded system products need to be designed by developers. I often receive inquiries about the stability of embedded products, and find that most of them are caused by software developers not understanding the basic principles of the underlying hardware. In particular, some functional software developers rely too much on the perfect design of the driver software of the underlying hardware, and they have little knowledge of the underlying driver principles. In fact, some functional software developers do embedded software in name. In fact, they only use embedded editing and compiling environments. The essence is no different from the development of general PC software. In the development of low-level hardware driver software, if the possible calls of high-level functional software to the low-level hardware are not fully considered, the package or parameter design will be unreasonable or incomplete, resulting in difficulty in calling high-level functional software. It can be seen from this description that if the development of an embedded system is divided into hardware design, low-level hardware driver software design, and high-level functional software design in isolation, once a problem occurs, it may be difficult to locate. In fact, embedded system design is a software and hardware collaborative design project. It cannot be viewed as a general-purpose computer in which software and hardware are completely separated. They must work together in a large framework. Faced with learning whether embedded systems are software-based or hardware-based, or how to choose an entry point, how to achieve some balance between software and hardware. The suggestion for this confusion is: if you want to become a real embedded system designer, you must pay attention to lay the hardware and software foundation of the embedded system at the beginning stage. The following is a summary of this issue in the book "Designing Embedded Hardware" by John Catsoulis, an American scholar who has been engaged in embedded system design for more than 20 years: Embedded system and hardware are closely related, and it is a complex of software and hardware. It is impossible to write embedded software with an understanding of hardware, and it is also impossible to design embedded hardware without an understanding of software.

There are many types of embedded system products with different application fields. In section 2.1, we roughly divide the application scope of embedded systems into two categories: the intelligentization of electronic systems and the extension of computer applications. From the perspective of beginners, there may be problems with one-sided understanding of embedded systems from these two perspectives. . Therefore, some learners who understand embedded systems from the perspective of electronic system intelligence may ignore the accumulation of knowledge of programming structure, programming specifications, software engineering requirements, and operating systems. Other learners who understand embedded systems from the extended perspective of computer applications may apply the concepts and methods in the learning process of general-purpose computers to the practice of embedded systems, ignoring the differences between embedded systems and general-purpose computers.

In fact, at the initial stage of learning and practice of embedded systems, one should fully understand the characteristics of embedded systems, and formulate a learning plan suitable for one's own situation according to one's own existing knowledge structure. The goal should be to lay a good hardware and software foundation for embedded systems, and to establish a basic knowledge structure for being a good embedded system designer through practice. In the learning process, concrete application systems can be used as practical carriers, but they should not be confined to concrete systems. There should be a certain abstraction and induction. For example, some beginners develop an actual control system without using a real-time operating system, but do not think that the real-time operating system does not require learning. For another example, some beginners use a sample with a real-time operating system as a blueprint for learning, but don’t think that any embedded system needs to use a real-time operating system, or even add a very concise actual system to an unnecessary one. Real-time operating system. Therefore, one-sided understanding of embedded systems may lead to learning confusion. You should exercise your ability to analyze actual problems and solve problems according to actual project needs. This is a relatively long-term learning and practice process. It is not expected to complete the establishment of the overall knowledge system through short-term training. We should pay attention to our own practice and fully understand the knowledge system of embedded systems.

Most beginners of embedded systems need to choose a microcontroller (MCU) for entry-level learning. Faced with the microcontroller series produced by many manufacturers, they don't know what to do.

The first is about the number of bits. Currently, there are 8 bits, 16 bits, and 32 bits. In the face of the diversity of embedded system applications, MCUs with different bits have their own application areas. This is very different from general-purpose microcomputers. If you make a remote control, you don't need to use a 32-bit MCU. Perhaps the price of an MCU chip has exceeded the price requirement of the remote control. For learners who are exposed to embedded systems for the first time, they can choose the number of bits of the entry chip according to their knowledge base. It is recommended that most beginners choose an 8-bit MCU as a quick-start chip, understand some assembly and low-level hardware knowledge, and then choose a 16-bit or 32-bit chip for learning and practice.

Another misunderstanding about chip selection is that there are "mainstream chips" and embedded systems can also form chip monopolies. This is a complete misunderstanding, which is to apply the thinking mode of general computer systems while ignoring the diversity of embedded system applications.

There is another misunderstanding about the choice of learning chips, which is the operating frequency of the system. Misunderstanding that choosing a chip with a high working frequency for introductory learning means more advanced. In fact, the high frequency of work may bring a lot of difficulties in the learning process for beginners.

The actual embedded system design does not pursue factors such as chip number, operating frequency, operating system, etc., but pursues indicators such as stability and reliability, maintenance, upgrades, power consumption, and price. For beginners to choose the entry chip, it is a general basis for acquiring the embedded system knowledge system through a certain MCU as a blueprint. The basic principles are: faster entry time, less hardware cost, more knowledge elements, and lower learning difficulty.

3 Learning suggestions for the basic stage

Based on the above discussion, the following are some basic learning suggestions for students who are eager to learn embedded systems:

(1) Embedded system software and hardware are closely related, so we must lay a good foundation for software and hardware. In fact, as long as you find the right method and work hard, any science and engineering student, even non-science and engineering students, can learn embedded systems well.

(2) Choose a chip and hardware evaluation board (the entry chip is preferably simpler, such as 8-bit MCU), choose a good book (preferably with standardized examples), find a good teacher (preferably experienced And enthusiastic). The price of the hardware evaluation board must be less than 1,000 yuan, not too expensive, it is best to have the space to do it yourself. It is not practical to learn embedded systems without spending a penny of hardware money. Because this is a highly practical subject. Good books can make you avoid detours and will not be misled. You must know that some books can make people enter into learning misunderstandings. Good teachers can also be seniors who have done some practical projects (you must find seniors or teachers who have done a few successful projects for guidance, otherwise, lack of experience may be misleading), with teacher guidance, the learning process will be accelerated (artificial intelligence subject There is a term called the non-teacher-guided learning model and the teacher-guided learning model. The non-teacher-guided learning model is much more complicated than the teacher-guided learning model).

(3) Many people are afraid of hardware. In fact, embedded system hardware is much easier to learn than electronic circuits. As long as you have a deep understanding of the MCU's hardware minimum system, you can understand the I/O ports, serial communication, keyboard, LED, LCD, SPI, I2C, PWM, A/D (including some sensors), D/A, etc. one by one experiment, and gradually practice . By building an actual small system by yourself, the underlying hardware foundation will be available. The compilation of the drivers of each hardware module is the essential foundation of the embedded system. In the early stages of learning embedded systems, this process is necessary.

(4) As for the embedded real-time operating system RTOS, you must not learn it from the beginning. This will make many detours and make you feel intimidated by the embedded system. After you lay the foundation of software and hardware, you will feel easy to understand after you study. In fact, many embedded applications do not necessarily need an operating system. You can also learn a specific RTOS according to actual project needs. Don't be misled by the publicity of some embedded real-time operating system training courses, and ignore the learning of the basic knowledge of actual embedded system software and hardware.

(5) Avoid one-sided understanding of embedded systems from the perspective of "electronics" or "computer software". As mentioned earlier, an embedded system is a combination of software and hardware. Therefore, it is necessary to gradually start from the minimum system of the MCU, and understand the hardware principle and the underlying hardware driver programming method bit by bit. It is necessary to understand the ideas of software engineering packaging and reusability through standardized examples. Through standardized programming, accumulate the underlying components (Component), that is, one by one module, but it should be better packaged and reusable.

(6) Pay attention to experiment and practice. The experiment mentioned here mainly refers to repeating or verifying the work of others, the purpose is to learn basic knowledge, this process must be experienced. Practice is self-designed, with specific "product" goals. If you can spend about 500 yuan to make a small product with certain functions, and it can run stably for more than one year, you can say that you are close to getting started.

(7) About the choice of entry chip. Don't choose a too complicated microcontroller as an entry chip, and you can't go beyond the learning process. Don't learn several chips at once, you can start with one chip and have a practical experience, then choose the chip to develop the actual product according to the actual needs. Note that do not confuse the concept of a microprocessor (MPU) with a microcontroller (MCU), the microprocessor is just the core of the microcontroller.

(8) Regarding the choice of operating system. You can wait until you have some practice and choose a simple and easy-to-understand principle to learn. Don't learn several operating systems at the beginning. If you understand the basic principles, it is not too late to learn in practice. People always have to keep learning.

(9) About the choice between assembly and C language. With the optimized support of MCU for C compilation, you can only understand a few necessary statements for assembly and directly use C language to program. But it is necessary to understand the contents of the chip initialization process, interrupt mechanism, program storage situation, etc., which are different from the PC program through the first program. In addition, for the needs of testing, it is best to master a PC programming language.

(10) To be clear about their learning goals, and pay attention to learning methods. Regarding the purpose of learning, it is necessary to clarify whether it is to lay a foundation or a short-term training to adapt to certain tasks; and in terms of learning methods, choose an appropriate learning path according to the learning purpose, pay attention to theoretical learning and practice, general knowledge and chip-related knowledge, hardware The balance of knowledge and software knowledge requires an understanding of basic concepts such as hardware components and software components on the basis of understanding the basic principles of software engineering.

Programming Laptop

There is a rule, custom laptop is called programming laptop cause nearly 90% is used for projects. 15.6 inch laptop for coding and programming is usually equipped with 10th or 11th cpu, 2gb or 4gb graphics optional. 15 inch laptop untuk programming is used on big tender or group for a special jobs. 15.6 inch programming laptop under 30000 is a more competitive one for business or high school students or teachers.

However, here is the recommended laptop for programming, especially for heavy office jobs or university coursework, since double heat-releasing, metal body, bigger battery, FHD screen, high-level cpu, etc. Build the deep and stable foundation to enjoy smooth running experience. Your clients will satisfy it`s excellent performance. Of course, there are other lower specification with tight budget.

As a entry windows laptop for programming, this 14 inch celeron Education Laptop is the most competitive and hottest device for elementary project.

Any other special requirements, just contact us freely.

Programming Laptop,Laptop For Coding And Programming,Programming Laptop Under 30000,Recommended Laptop For Programming,Windows Laptop For Programming

Henan Shuyi Electronics Co., Ltd. , https://www.sycustomelectronics.com

Posted on