In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-19 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >
Share
Shulou(Shulou.com)06/03 Report--
1 misunderstandings of some concepts in embedded learning
Many embedded beginners believe that to learn embedded is to learn ARM, is to learn the development board. Buy a development board, then "port" the u-boot and Linux kernels on it, and then use busybox to create a root file system, and you're done! I think I can go out and look for a job. This is actually a bit one-sided: first of all, ARM is a CPU architecture, just like the X86 architecture on PC. Have you ever seen anyone who learns X86 programming, MFC programming, network programming, Internet programming under Windows, and says they learn X86? Of course, it is undeniable that the diversity of embedded platforms and the customizability of hardware lead us to build this platform before we develop applications and drivers on embedded platforms, just like we have to install an operating system under Windows, but this is only the first step for us to learn embedded development.
Secondly, with regard to the "transplant" of the system, after playing with the development board, many people will write on their resumes that they have transplanted the Linux kernel of umurbootthol. In fact, this way of writing is also a little flawed. Really porting, porting a u-boot or Linux kernel to a new chip or development board, that's not something one person can do, it's something a team can do. Clock, DDR, and storage may involve various modules. Where problems arise, you need the owner of each module to debug, sometimes even the bug of the chip, or the bug of the hardware development board. This requires us to use software to solve and avoid this hole, which requires us to solve this problem in a very short time, or even in a day or two, and requires the joint efforts of various module experts of a team. So, what we call "migration" is actually like installing the operating system under Windows and following the steps to complete the installation. Of course, through this process, we can deepen our understanding of embedded systems, but the first thing we need to know is that the systems we "transplanted" are all system images made by the team of chip companies. all we do is configure, compile, install, and even upgrade. These environments are only the platform for us to learn embedded development, and the long March has just completed the first step.
2 to learn embedded, what on earth should we learn?
Embedded system is becoming more and more complex, and there are more and more modules integrated on a SOC chip. Take mobile phones as an example, typical embedded products, let's see how many modules are integrated: touch screen, LCD, USB, WiFi, 4G and other wireless communications, audio and video codec IP, DDR, storage controller, 3D/2D acceleration, GPS, fingerprint identification, NFC, DMA, G-sensor sensors. It can be said that the complexity and hardware configuration of a mobile phone has exceeded that of our desktop PC. In addition to the ever-increasing hardware and software, such as the Linux kernel, there are more than 10 million lines of kernel code alone, which are updated faster than you can learn every day. Can you learn all the embedded knowledge and skills?
In the early PC era, we knew that few companies, Intel, AMD and via, could mass-produce X86 CPU. But the embedded era is different. ARM's IP licensing model leads to different chip manufacturers putting together, different SOC platforms and development boards dazzling, SOC platforms tailored to the needs of different industries are springing up: mobile phone chips, tablet chips, video security, Internet of things, automotive electronics, industrial control, and even artificial intelligence AI chips. You can go to the ARCH of the Linux core to see how many CPU architectures there are. Let's go to arch/arm to see how many development platforms there are. These are just platforms that have been added to the kernel mainline. The number of platforms that are not included in the Linux kernel mainline is actually even larger.
With so many chip architectures and different development board platforms, how should we learn?
The concepts of embedded and PC are becoming more and more obscure, and Intel has introduced CPU and embedded products with X86 architecture, such as tablets. ARM is also moving into servers and laptops. No matter what CPU architecture, ARM, X86, MIPS, PowerPC, and the recent hot Internet of things chips, whether to do embedded products, or PC, servers, their underlying nature has not changed, are computer principles and system architecture, are von Neumann's computer architecture, various implementations of Turing prototypes.
The increasingly complex hardware and software systems are a challenge for embedded engineers or learners. This has an updated requirement for our own knowledge and skills. In the early 51 single-chip microcomputer era, we can use the bread board or draw our own PCB, make a development board, and then develop software on it. Do all the software and hardware by yourself. Now the increasingly complex SOC platform, and then want a person to do it all, hard and soft, it is basically impossible, which also leads to the need for division of labor and cooperation to complete. First of all, the division of hardware and software, each perform their own duties, each proficient in their own field, and then software and hardware integration, collaborative development. Thirdly, in terms of software, embedded software is becoming more and more complex. With more than 10 million lines of Linux kernel, android takes up a few gigabytes of space. If you want to do it all, it is equally impossible and requires a division of labor. For example, android needs to be divided into BSP engineer, Linux kernel engineer, driver engineer, android middle-tier development engineer, APP development engineer. For a Linux kernel, it also needs division of labor, and each module also has a division of labor: Linux kernel USB subsystem, audio subsystem, video codec, file system. If you have mastered one of the modules, salary is definitely not a problem.
For embedded learners, what should we learn, or how to learn? In order to improve their competitiveness in the workplace, or for a novice, how to meet the company's employment standards and technical requirements through self-study, and find a job they want?
First of all, you have to learn to do subtraction, starting from reality, to have such a consciousness: I can not be proficient in all embedded technologies, learn to adhere to, and set reasonable and realistic small goals. Many people like the kind of unrealistic advertising bombardment marketing, hit a certain psychological weakness, a G-spot, suddenly get excited. The chicken soup that boils the soul thicker and thicker can not solve the realistic problem of survival when we eat. Many people, including me, like to set up various routes, plans and schedules for themselves when they are studying. When you make a plan, you are so passionate and excited that you can't sleep. The plan is grand and full, as if success is just around the corner. But often impractical, often in the early stage, encountered all kinds of difficulties, all kinds of pits, all kinds of delay led to not adhere to it, and finally died. Then go on to make the next grand plan, continue to die young, life goes on and on, day after day. Looking around us, the people who really make achievements are those who are based on reality and can stick to it all the way, day by day. Sometimes you will find that you don't think they are very smart.
Secondly, keep your interest, to put it bluntly, is to stick to it. See a lot of people want to learn embedded, spend a lot of meters to buy a development board, full of passion, after a period of time is to look at the past, has not bothered. Embedded development is difficult, where is the difficulty? Mainly lies in the construction of the development environment, software debugging, unlike using VC development programs on Windows, the integrated development environment has helped you with all kinds of breakpoints, single steps, view stack, registers, memory windows. While embedded is different, the construction of the hardware environment will encounter a variety of problems, a variety of computer compatibility problems, a variety of inexplicable problems, sometimes really make people crazy, for a long time, the passion to learn slowly is exhausted, also do not want to learn. This is nothing, what is more serious is that many people encounter setbacks in learning embedded systems, which often deal a blow to people's self-confidence, feel that they are incompetent, do not have enough IQ, and are not suitable for this profession, leaving a shadow in their psychology. For individual learners, buy a development board, you do not buy matching multimeters, oscilloscopes and other debugging equipment, hardware problems are also helpless, unable to solve. In fact, we can completely use other platforms to carry out our research and study, such as QEMU, an open source software that can simulate the development board. With this open source software, we can virtualize a popular development board on the computer, and then run u-boot, Linux kernel and mount the root file system on the simulation board, using the same source code as the development board. The running effect is the same as the real development board. Moreover, the advantage of using QEMU is that there will never be a problem with "hardware", which allows us to avoid various pits in hardware and free up more energy to study various architectures, programming skills and kernel drivers of embedded software. These are the core competitiveness of embedded engineers, which need to spend a lot of time to accumulate, to run-in, to improve. It is not cost-effective to spend a lot of time on a hardware bug that should not be part of the learning category or the hardware environment is not compatible, because after you join the company, when you encounter the same problem, find a hardware engineer and help you with it in half a minute. Therefore, it is very important to choose an ideal embedded learning platform, especially for beginners.
Finally, we should keep the depth of study and practice deliberately. Don't let yourself stay in the comfort zone of learning forever, learn to challenge yourself, constantly expand the boundaries of your knowledge, and improve your knowledge system and skills. Many people buy dinner, follow the tutorials, "port" the uMubootline Linux kernel, create a root file system, and then get confused: what are you going to do next? What do you want to learn? Want to learn but feel unable to go deep, east a rake, west a rake, look at this, look at that, time passed unconsciously. In fact, learning embedded, basic embedded knowledge and theoretical learning is still necessary, many people advocate learning while doing, to the project to learn, practice out of true knowledge. Of course, this is also a method, but there is also a drawback, that is, the study is not systematic, many willing people still have to come back to make up lessons and improve their knowledge system and skills. Many people play with development boards, burn and write images, and play sneakily, but do you know the principle in it? Do you know how JTAG downloaded it? What's the difference between Jlink and JTAG? Why should JTAG software be installed on PC but not Jlink? What is the compilation and linking of the program? Why does the kernel image download an address of memory? Can I change my address? Why do we write programs to run in the environment with OS? in the bare metal environment of ARM development board, can you write a running program? Only by thinking deeply about these issues will you have a deeper understanding of embedding, go beyond the platform and know everything.
38% of the embedded knowledge and skills have nothing to do with the hardware platform.
80% of the knowledge and skills required for embedded development have nothing to do with the hardware platform. Such as computer system principles, programming skills, program compilation links, your understanding of the Linux kernel, device model, driver architecture, project management, and so on.
What is really related to the hardware platform, such as driver development, the above framework has nothing to do with the platform, and the adaptation part of each hardware platform may be related to the hardware platform, such as register configuration, development board hardware configuration, and so on. For embedded engineers, especially driver development engineers, after you work, you will find that compared with application development, the real amount of code to be written is very small, often only a few lines of code need to be changed. But often these lines of code require your deep background knowledge: hardware knowledge, communication protocols, mastery of chips, development platform resources, understanding of Linux kernel architecture, device model, driver framework, these are the core competitiveness of embedded engineers.
If you see a lot of advertisements still using development boards or platforms as gimmicks, how much salary you can take as publicity, you should have this awareness in your mind at this time, this is a kind of promotion. Your salary is determined by your own level and the market. Although HR will make some errors in your own evaluation during the interview, believe that time will prove your true worth and that constantly improving your knowledge and skills is the king. Real technology needs to take the time to slowly absorb, accumulate, digest, and internalize into their own knowledge system and skills. External soul chicken soup or high-pot old duck soup can only make you passionate for a moment and create a temporary illusion, but can't really improve your skills.
4 the course planning of "embedded engineer self-cultivation" series
From curriculum system design to course recording. All of them are recorded by the embedded driver engineers of the original factory with many years of work experience, discard the embedded outdated technology, and update it into cutting-edge technology, knowledge and skills. Rearrange the embedded knowledge system and skills, which is more in line with the beginners and shorten the learning curve.
The first course mainly studies embedded basic theory, embedded software architecture and other core technologies, programming skills, compiler links and other underlying computer system knowledge, Linux kernel, application development, device drivers. These skills have nothing to do with the hardware platform. Learning on the QEMU simulation platform, on the one hand, can save learning costs, on the other hand, it is an ideal learning platform to avoid the construction of embedded environment and hardware pits. As long as you have a computer and a network cable, you can learn.
The second phase of the course: conduct system transplantation and driver development on at least 2 development boards such as A9, do what others have not done, and solve problems that others have not solved. Accumulate their own real project experience. Carry out multiple project development on the development board and accumulate embedded project development experience.
The curriculum system will be constantly updated and improved, but the purpose will remain the same, only one: to use the shortest time to reduce the difficulty of learning and learn the core embedded technology.
5 follow the release of the latest tutorials, you can follow:
Official account of Wechat: Otaku tribe (armlinuxfun)
Sina Weibo: House-learning tribe
Embedded Technology Exchange Group: 475504428
Author QQ:3284757626
Use QEMU to build u-boot+Linux+NFS embedded development environment, video tutorials have been released!
For more information, please go to 51CTO College (edu.51cto.com) to search for the teacher's name or course name directly.
The latter directly clicks on the course page: http://edu.51cto.com/course/10445.html
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.