The embedded era has come, how much do you know about embedded learning methods?

Recently, people often call me and ask me if there are any embedded Linux developers. They said that their unit urgently needs software developers who understand the embedded Linux environment. I replied that they now graduate every year. With so many college students, can you still not recruit suitable software developers? He told me that although there are many graduates, most of them are not capable enough to meet their job requirements.

A word from the company's HR tells us the current situation of university teaching and employment of college students: on the one hand, so many college students can not find suitable jobs every year, and on the other hand, many employers and enterprises cannot find suitable talents. The most basic reason for this phenomenon is the serious disconnect between school education and social needs. I don’t know about other majors and industries, but for the embedded majors and embedded software industry, through communicating with teachers from many universities and senior undergraduates and postgraduates, I still have some understanding. I have carefully analyzed the teaching status of integrated majors in the previous article. After graduation, many embedded majors still find it difficult to meet the requirements of employers. The main reason is that colleges and universities emphasize theory and lightness in embedded teaching. In practice, many embedded teachers have no actual work experience, so the students trained in this way may make him speak up and down, but let him actually write and debug an application program is dumbfounded, I don’t know where to start, because they In school, there may never have been teachers who have actually debugged embedded programs with them, and there has been no chance for you to debug embedded applications. Those embedded experiment boxes that look very good are mostly lying in the laboratory sleeping I had a big sleep, only when I was in the lab class, I moved out and let everyone look at it and touch it twice. I still haven't figured out what's going on. I have to receive the laboratory to sleep again. How can such a teaching model train a qualified embedded engineer? It is not surprising that when companies cannot find suitable people, college graduates cannot find suitable jobs.

Embedded major is a very practical subject. Only with more hands-on, more practice, more programming, more debugging, more reading and more thinking can we truly master the embedded development technology.

Now many students are also aware of the disconnection between school training model and social needs. Some students have also taken action first, beginning to focus on cultivating their own practical skills, cultivating their own practical analysis of problems, solving problems, and training themselves in embedded majors. The ability to program and debug programs. However, the embedded major is different from other disciplines. The embedded major is a very comprehensive subject involving a very wide range of knowledge. For beginners, facing so many tutorials, textbooks, and so many knowledge points, they often don’t know Where to start, I don’t know which ones are the key points, which ones are not, what are the connections between these knowledge points, I am confused, and then I hit the hammer and the west rod. After tossing for a few months or even more than half a year, I still look for it. Do not learn the direction of embedded, but also hover outside the door of embedded development.

The embedded era has come, how much do you know about embedded learning methods?

So, how to learn embedded development technology from scratch and enter the door of embedded development? Based on my embedded learning experience and years of embedded Linux teaching experience, I will talk about some of my thoughts and opinions on embedded learning. I hope It is helpful to everyone.

1. Practice basic skills

The embedded system major is a comprehensive discipline that integrates computer hardware technology, computer software technology and electronic circuit technology. It involves a wide range of connotations and knowledge, including: digital circuits, analog circuits, computer composition principles, single-chip basics, and C language Knowledge of basics, operating systems, data structures, compilation principles, computer control, and computer networks.

Before really learning embedded development, we must first lay the foundation. The most important of these are three courses: C language foundation, digital circuit, and computer composition principle. For C language, at least can write and debug a program of 3 to 500 lines separately, be able to understand the basic grammatical rules of C language, the use of basic statements, understand the concept of pointers and be able to use various pointers flexibly.

The principle of computer organization should be able to understand the major components that make up a computer system, the structure of the computer system, the understanding of the system bus, the understanding of the relationship between the processor and computer peripherals, and how the processor and computer peripherals coordinate their work to complete a certain function , How do computer software and hardware work together to accomplish a certain task, and understand that software controls hardware through registers.

Digital circuits and analog circuits must understand their basic principles and concepts, and be able to understand simple analog and digital circuit schematics. Understand the concepts of registers and timing in digital circuits, and be able to understand chip manuals and timing diagrams. For other basic courses, it is important to understand some of the basic concepts, how to use them, and so on.

For students majoring in electronics, automation, communications, and computer science, most of the above courses are basically included in the professional foundation or professional courses offered in the second and third year. Because of the lack of practice, I may not learn very deeply, but some basic concepts and basic knowledge should still be understood. For some weak links, I should strengthen my study a little, and basically have the foundation for learning embedded development. In the embedded basic skills learning stage, the most important thing is the C language and the basis of single-chip microcomputer. It is best to use C language to develop a small single-chip microcomputer program, such as using C language to realize the serial communication between single-chip microcomputer and PC, and using C language to control LED display , Use C language to control digital tube display and other small programs. The learning tool needed during this period is the microcontroller 51 learning development board.

2. Embedded Linux application development

After learning the basic knowledge of embedded development, you have a certain foundation of embedded development at this time, and you can design an embedded system based on single-chip microcomputer. MCU programming itself is also embedded programming, but here we only regard MCU development as the basis of embedded system development, and do not regard MCU development as real embedded system development. Here, our embedded system development refers to Application and driver development on embedded platforms with operating systems, especially development on embedded linux platforms.

The development of single-chip microcomputers was very popular a long time ago. Now, single-chip microcomputers are also widely used in some relatively simple systems. As the cost of hardware continues to decrease, embedded linux operating systems are generally used in some more complex embedded devices. , Develop on the embedded linux platform, which can greatly improve the efficiency of embedded development, improve the stability and reliability of the system, and reduce development costs. Since Linux is an open source operating system, you can understand the implementation mechanism of the kernel by reading the linux kernel. If necessary, you can even improve the performance of the system by modifying the kernel source code. At the same time, the global team involved in linux development is very large. There are a lot of embedded linux development materials and source code on the Internet. You can basically find the relevant source code for many functions you need to implement on the Internet. Refer to the source code written by others, which can greatly improve your work efficiency and technical ability. In the past few years, with more and more people participating in Linux development, the stability and real-time performance of the Linux system have been greatly improved. The Linux system has become more and more widely used on both the server and the embedded device platform. Now Major communications giants including Huawei, ZTE, and Lucent have all begun to migrate the underlying platform of their equipment from the vxworks operating system to the linux system. It can be said that embedded linux is a direction of embedded technology development and a banner of embedded technology. Based on the above reasons, my suggestion is to learn embedded development and learn embedded linux development. Compared with other embedded platforms such as wince, you can really learn more things and the essence of embedded technology. In line with the development direction of the embedded industry, it is not easy to be eliminated by the rapid technological development.

With the foundation of embedded development and knowing why we should learn embedded linux development, then we have to start learning by hand. Then how to start learning embedded linux development and where do we start?

Many students started to buy linux books at this time and borrowed a lot of books about linux from the library: what "basic linux use tutorial", "linux source code deep analysis", "linux scenario analysis, etc.", "linux advanced usage guide" "and many more. As a result, after reading these books for 10 days and a half month, I still don’t know what I knew. The passion for learning at the beginning slowly faded, and finally it didn’t stop. After all, I didn’t enter the door of embedded development. The reason is that there is no suitable method to learn embedded development. There are methods to do anything. Finding the right learning method can often get twice the result with half the effort; otherwise, it may be twice the result with half the effort, or even no effort. Next, I first analyze several common embedded linux learning misunderstandings of the students, and then propose a more appropriate embedded linux learning method.

Misunderstanding 1: Fully invest in learning desktop or server version linux system

Many students who want to learn embedded linux often ask me how I don’t know how to learn embedded linux development, so they spend a lot of energy and time to study and learn the use of desktop version linux system, what redhat, federo, I have used linux, ubuntu, etc., how to configure linux, the various commands used in linux are very familiar, the configuration of various linux servers, and the various operations of restore and backup are very familiar. I thought that I learned embedded linux development. In fact, this is a misunderstanding of learning embedded Linux development.

The Linux desktop environment is just a development tool for embedded linux, a development environment. Our goal is not to learn the configuration and use of linux servers. The advanced configuration and use of linux servers is another area that does not belong to the scope of embedded linux discussion. We are developing embedded linux, we just take the linux desktop environment as a tool, and run embedded linux development tools in the linux desktop environment, such as gcc compiler and make tools to develop our embedded linux applications. For development engineers, there is no need to spend so much energy and time to study the application of Linux desktop version and server, as long as they can understand the most basic operations. The graphical interface of the current desktop linux system is also quite good, and has the same ease of use performance as the window. For example, many operations on ubuntu can be completed under the graphical interface, so there is no need to memorize every linux command. Familiar with the use of Linux desktop system and basic operating commands, you can master it after arranging 1~2 days to study.

Misunderstanding 2: Read Linux kernel source code directly

Many people want to learn linux, read the linux kernel source code even when they don’t even know what linux is, and spend a lot of time reading books such as "In-depth Analysis of Linux Source Code", "Linux Scenario Analysis, etc.". The result of this may be dizziness and incomprehension, and finally gave up. This is also a misunderstanding of students learning embedded linux. After having a certain embedded linux development foundation, read the linux source code with a certain purpose, which can greatly improve your technical ability, but you do not have any foundation , Reading the Linux kernel source code without knowing anything about Linux is tantamount to hitting a rock with a pebble, and in the end it can only be broken.

The above analysis has analyzed two misunderstandings of students learning embedded linux development, so how to correctly develop embedded linux?

There is a step-by-step process to do everything, and the same is true for learning embedded linux. After having a certain foundation of embedded development, the more suitable entry point for learning embedded linux development is to start with embedded linux application development, that is, for the time being, don’t care about the embedded hardware platform or the underlying drivers of linux. First concentrate on the design and development of embedded linux applications on the existing embedded linux platform. Learning embedded linux development is by no means a book to learn well, it requires more practice, programming and debugging; because embedded development is different from ordinary PC or server-based application development, embedded development applications must be programmed to It runs on an embedded board or a development board, so first you have to buy yourself a development board. Nowadays, the popular embedded development boards are based on Samsung’s ARM9 CPU S3C2440, which is very cost-effective. I recommend using Feiling The company's FL-2440 cost-effective ARM9 learning development board is rich in resources, stable, and equipped with a large number of experimental source codes, video tutorials and experimental instructions.

After having the development board, I started to learn about the construction of embedded linux development environment, embedded linux development model, linux kernel transplantation and file system, embedded linux application transplantation, embedded linux multi-process, multi-threaded application design, embedded Linux network programming, if you are interested in embedded database or graphics software development, you can further study embedded linux database development or QT-based embedded linux graphics application software design. In each chapter, you must pass relevant experiments to verify what you have learned from the book, and at the same time improve your ability to write code and debug programs. Depending on the basis of different students, this process may take 1 to 2 months. After completing these courses, you will have the ability to reproduce application design and development on some embedded linux platforms. Go to some embedded software companies and be able to perform upper-level applications on existing embedded linux platforms. Development work. But currently you cannot develop embedded linux systems and drivers, that is to say, you can only develop applications on an embedded linux platform that has been built, and you have no ability to rebuild according to actual needs. An embedded linux platform. To give yourself the ability to rebuild an embedded linux software and hardware platform according to actual needs, you need to proceed to the next stage of learning, that is, embedded linux system and driver development.

3. Embedded Linux system and driver development

With the foundation of developing applications on the embedded linux platform, you have a certain understanding of the functions of linux, the interfaces and system calls provided by linux to applications, and how to use the functions provided by linux to develop applications. How to use device drivers to design applications. With this knowledge, you can learn more about Linux system principles and development based on Linux drivers, Linux kernel tailoring, file system structure, bootloader and other low-level knowledge Up.

If you want to learn more about embedded Linux system and driver development, you have to learn a lot including computer software, hardware, and operating system knowledge. At this time, you can refer to the following learning ideas, because the development of embedded Linux systems and drivers is very closely related to the underlying hardware, so first we start with learning about embedded hardware, including: ARM architecture, S3C2440 microprocessor interface design , Clock system, LCD screen interface, storage controller and system storage space allocation, NAND FLASH interface and NOR FLASH interface, etc. After you have a certain understanding of embedded system hardware, you can start to learn bootloader, understand the concept, function, and principle of bootloader, and focus on the use and transplantation of U-BOOT. Next, I started to learn the embedded Linux kernel mechanism, analyze the embedded Linux source code composition, kernel module mechanism, kernel process management, memory management mechanism, Linux interrupt system, Linux kernel transplantation, etc. With the foundation of the kernel, you can learn the development of embedded Linux device driver, focusing on the development of character device driver, LCD screen device driver development, touch screen device driver development, USB device driver development, and network card device driver development. After learning these knowledge points and passing relevant experimental verifications, even if you have almost mastered the development of embedded Linux systems and drivers, you can be competent for most of the driver development work based on the Linux platform. After learning these knowledge points, it usually takes three months to six months according to the different situations of the students. Through this stage of learning, you have a certain foundation in the field of embedded Linux development, and you are no longer called a rookie, and have entered the ranks of embedded Linux development masters.

Fourth, take it to the next level

I have a deep understanding of embedded kernel and driver development. At this time, there is no problem with what driver to write, and some basic problems in the development process will not trouble you. This is because you may want to optimize the performance of the system, such as real-time performance, increase the startup speed of the system, or optimize the system's memory management mechanism. To achieve the state of modifying the core mechanism of the kernel, you need to study the Linux kernel source code in depth. Refer to books on linux source code analysis such as "Linux Source Deep Analysis", "Linux Scenario Analysis, etc." to gain an in-depth understanding of the implementation mechanisms and principles of each part of Linux, as well as possible problems. Only on the basis of a thorough understanding of the existing code and implementation mechanism, can you propose a better improvement plan. If you can reach this state, then you are already a master of masters, and you can be proud of the crowd.

The above are some embedded learning methods and steps summarized by the author based on my own embedded learning experience and embedded training experience. These are just some of my views on embedded learning. I hope that those who are interested in learning embedded linux do not know where to go. The students who started learning are helpful. Of course, everyone and each classmate’s foundation and various aspects are different. Everyone has his own suitable learning method. Some learning methods and ideas summarized in this article are for reference only. I hope everyone can find a learning that suits them. The way of embedded development, enter the door of embedded development as soon as possible.

Starting from high-rise buildings on the ground, the heart is not as good as the action. Students who are interested in embedded development should not hesitate anymore. Hurry up and take practical actions, study hard, and work hard to realize their great dreams.

Passive Stylus Pen

Passive Stylus Pen,Custom Stylus Pen,Stylus Pen For Surface,Smart Stylus Pen

Shenzhen Ruidian Technology CO., Ltd , https://www.szwisonen.com