1. The concept of embedded system
Focus on understanding the concept of "embedded"
mainly from three aspects.
1. From the hardware perspective, the CPU-based peripheral devices are integrated into the CPU chip. For example, in the early computers based on the X86 architecture, the CPU only has the functions of the arithmetic unit and the accumulator. All chips need to build external bridges to expand and implement. Serial ports are implemented by external 16C550/2 serial port controller chips, and the current serial port controller chips have long been integrated into the CPU. PCs also have graphics cards, and most embedded processors have LCD controllers, but in this sense they are equivalent to graphics cards. The IXP network processor CPU under the high-end ARM-based Intel Xscale architecture has an integrated PCI controller (which can be configured to support 4 PCI slave devices or configured as a CPI slave device itself); it also integrates 3 NPE network processor engines, two of which correspond to two MAC addresses and can be used for gateway switching, and the other NPE network processor engine supports DSL. As long as a PHY chip is added outside, the DSL Internet access function can be realized. The IXP series can reach a maximum frequency of 1.8G, support 2G memory, 1G×10 or 10G×1 Ethernet port or Febre channel optical channel. The IXP series should be the highest processor based on the ARM system structure integrated by Intel into the Xscale core.
2. From the software perspective, it means to select the application in the customized operating system kernel, and download the kernel to the ROM after compilation. The application components selected when customizing the operating system kernel are the "embedding" of the software. For example, when customizing the kernel of WinCE, there will be corresponding options, including wordpad, PDF, MediaPlay, etc. If we choose, we can find these things in the interface after CE starts. If it is the Windows operating system installed on the PC before, most of the things need to be reinstalled.
3. Burning the software kernel or application file system and other things into the ROM of the embedded system hardware platform realizes a real "embedding". The above definition is the one I gave to the embedded system 6 or 7 years ago, which focuses on understanding. There are many definitions in books, but in this field, no one dares to say that their definition is very accurate, including those experts and scholars, because after all, embedded systems are a comprehensive subject under the scope of computers
. 2. Layering and professional classification of embedded systems.
Embedded systems are divided into 4 layers, hardware layer, driver layer, operating system layer and application layer.
1. The hardware layer is the foundation of the entire embedded system. If you are familiar with the microcontroller and interface, and can program in C and assembly language, it is relatively easy to start from the hardware layer of the embedded system. The hardware layer is also the basis of the driver layer. An excellent driver engineer must be able to understand the hardware circuit diagram and complete the logic design of CPLD by himself, and at the same time, he must be quite familiar with the operating system kernel and its scheduling. But the hardware platform is the foundation, and the value-added depends on the software. The hardware layer is more suitable for people majoring in electronics, communications, automation, mechatronics, and information engineering. The professional basic knowledge that needs to be mastered includes the principles and interface technology of microcontrollers
, the principles and interface technology of microcomputers, and C language. 2. Driver layer. This part is more difficult. Driver engineers must not only be able to understand circuit diagrams but also be very proficient in the operating system kernel, so that the driver they write will not monopolize the operating system time slice when the system calls, causing other tasks to be unable to move. They do not understand the operating system kernel architecture and real-time scheduling, and do not have a good driver writing style. According to the way of adding drivers mentioned in most books, many people can do it, but they may not even reach the level of a junior driver engineer. In this way, when the driver is called by the application, it is like when we open a program in Windows and run it, and then open another program, either interrupt the previous program or wait for a while before running the program opened later. If you want to be a good driver without three or four years of foundation and a few chapters of operating system kernel research, it is not easy to succeed, but its salary is the highest among the four layers of embedded systems.
The driver layer is more suitable for people majoring in electronics, communications, automation, mechatronics, information engineering, especially computer architecture majors. In addition to the basic disciplines of the hardware layer, they must also be very proficient in data structures and algorithms, operating system principles, and compilation principles.
3. Operating system layer. Currently, it can only be said that the operating system layer is a simple transplantation. Few people have written operating systems, or have written operating systems with incomplete parts
. Most of this work is done by driver engineers. The operating system is responsible for debugging system tasks, managing disks and files, and the real-time performance of embedded systems is very important. It is said that it took Microsoft 300 people two years to complete the XP operating system, with a total of 600 man-years. It is estimated that it took hundreds of man-years to complete the Nuwa Hopen operating system of the Software Institute of the Chinese Academy of Sciences. Therefore, this part of the work is relatively meaningless.
4. Application layer. It is relatively easy. If you know how to call programming interface functions under Windows, the compilation and development environment will only change accordingly under the operating system. The same is true if it involves Java programming. The algorithms involved in embedded systems are handled by professional algorithm people and do not need to be attributed to the scope of embedded systems. However, if it involves embedded databases under embedded systems, network programming based on embedded systems, and protocol application development based on certain application levels (such as SIP, H.323, Astrisk), it is more complicated and difficult.
3. Goals and positioning.
Have goals first, then position.
Learning ARM, from the hardware point of view, is to learn interface circuit design on the one hand, and to learn assembly and C language board-level programming on the other hand. If it is from the software point of view, it is to learn the driver and transplantation at the operating system level based on ARM processors. These must be clear for beginners. Either start learning from hardware, or start learning from familiarity with the operating system to application. But no matter what you learn, as long as it is not pure API-based application layer programming above the operating system level, you still need to be able to understand hardware registers, and you still need to know board-level assembly and C programming. Therefore, for people who are in the hardware layer and driver program of embedded systems, ARM interface circuit design, ARM C language and assembly language programming, and debugging development environment still need to be mastered.
Therefore, for beginners, they must grasp the direction, what their goals are, and which level they should go. Then, you can start to learn the two more practical levels of embedded systems related to ARM, the hardware layer and the driver layer. No matter which layer you learn well, you will have a bright future. If you want to start from the application level of embedded systems, it may be far away from ARM and other systems. You should focus on the environment application and corresponding development tool chain of the embedded operating system, such as EVC application development under the WinCe operating system (similar to VC under Windows). If you want to make further breakthroughs, you should rely on some audio and video protocols, such as application layer development based on SIP or H.323 protocols in the VOIP field, or development based on embedded network databases, etc.
For beginners, you should do what you can. Don't think that the driver layer has a high salary and take it as a direction. You should combine your own characteristics. There are experts at each of the four levels of embedded systems. Of course, experts also have corresponding high salaries. I work at the hardware level. In the past, my personal income tax was deducted by nearly 3,000 yuan from my monthly salary. Of course, I played the role of an engineer on the one hand and the role of a supervisor and a person on the other. I did both positions by myself, but my working hours were limited. There are probably very few people
who can compete with me in hardware, which is why I get such a high salary.
Many ARM beginners want to have a system that they can use, but they often have a wrong understanding that the higher the processor version and the higher the performance, the better, just like many people think that ARM9 and ARM7 are good. I think beginners should be rational in this regard. The choice of development system ultimately depends on which direction you want to go in the embedded system, whether you are doing driver development or application, or embedded system hardware layer design and board-level testing. If you want to go from the operating system level or application level, whether it is driver or application, then of course the higher the processor performance, the better, but this thing is very difficult to learn by yourself, and it is not something that can be done in a few months, half a year, or one or two years.
In a sense, the difference between ARM7 and 9 is that some functional instruction sets are enriched and the main frequency is increased, just like 286 and 386. For users, they may not notice anything, they can only feel that the speed is a little faster.
ARM7 is more suitable for those who want to start from the hardware level, because few ARM7 series processors have internal MMU and are easier to control. For example, S3C44B0 can easily turn off the cache, and the internal interface registers are easy to understand. Various interfaces can be controlled by hardware program control or AXD single-step command line instructions. It is easy to understand it based on the idea of 51 single- chip microcomputer , just treat it as a 32-bit single-chip microcomputer , thus eliminating the confusion of many 51 engineers who want to become embedded system hardware ARM development engineers, so that they will not be brought to the operating system level by some bad companies in the industry that do not really understand embedded systems, which will discourage them and make the industry even more lacking in talents in this area.
Embedded systems, whether hardware design or software driver, pay great attention to the interface part. When choosing a platform, you also need to examine the external resources of a processor. The more you contact external resources and the more familiar you are with them, the higher your chance of success in future employment. This is what is called "relevant skills" during recruitment, because it is impossible for a person to contact all processors in just a few years, and the processors used by the recruiting unit may be completely unknown to us. Take the ARM processors produced by dozens of small companies in Taiwan (market value of tens of millions), which are also very easy to use, but these things are too poor in versatility. Companies using these processors can only recruit people with relevant work experience. What is relevant work experience? In hardware, it refers to peripheral interface design, and in software, it refers to relevant interface driver and application development experience in the operating system. I have been in the industry for nearly ten years. ARM appeared in 2000. I started working on ARM7 and then went directly to Xscale (this board is between ARM10-11). I have been working for five years and interviewed hundreds of people. I still have deep experience in these aspects.
I personally think that Samsung's S3C44b0 is more suitable for beginners. Why do I say that? Because the interface resources are relatively rich, the technology is mature, and there is a lot of information, it should be very suitable for beginners. If there is a problem, it may be easy to find someone to help and solve it, because most people are familiar with it, just like the 51 type of single-chip microcomputer , there are many experts who can help you, and related problems can be quickly answered. Although the industry thinks that this ARM is bad, it is a good thing for beginners. Therefore, the choice of development system depends on your future goals, the development board interface resources, and the industry's versatility.
5. How to view training.
First of all, let me talk about myself. I have been working in the industry for nearly ten years. I started with the domestic embedded system industry and have always been at the forefront of the embedded system industry. I have designed many high-end embedded system platform products and provided solutions for many companies. Before leaving, I designed IP-PBX for an American company engaged in VOIP. I have served as project manager, project supervisor, technical director, and department manager. I have accumulated many connections and gathered many years of experience. Considering that students' employment does not match the company's recruitment, the company cannot recruit people, and it is not easy for students and newly graduated engineers to find a job. Therefore, I have created Zhitianxing Technology Co., Ltd. to carry out embedded system education and training. Because the front-line scientific researchers and front-line teachers do not contact each other, there is a lack of domestic embedded talents. The technology of foreign universities is ahead of that of industry companies, while the domestic situation is that the embedded system technology of industry companies is far ahead of universities. In order to build a bridge for communication between the industry and universities, bring advanced skills to college students, create a trump card for students in employment competition, and create opportunities for industry engineers to quickly improve and realize self-creation, I just resigned from a position with an annual salary of more than 200,000 yuan in a foreign company and do embedded system training.
As for training, it means spending money to buy time. Many engineers like to learn by themselves and think that training is not worth it. This is also possible. Training purely for making money will certainly not be very valuable, but they may suffer a great loss for training based on strength. I wonder if they have ever calculated this: if a one-week training can bring them knowledge that they can only master after two years of self-study, and after the training they use three to six months to digest the training content, they will save at least one and a half years to learn other things or work at another level again. Then, at the latest, one year later, they will get the salary corresponding to their level two years later. That is, the relationship between salary and level is one year shorter than that of the same batch of people, with a minimum of 1,000 per month, and at least 10,000 more after deducting the training costs. At the same time, they also save one year, whether it is for leisure or further improvement, in short, they are ahead of the team. On another level, the training for new employees is like buying unemployment insurance for themselves in advance. There are masters to guide them. The youngest student in my class this summer was a sophomore. He is only a junior this year and has just learned microcontrollers this semester . But now he has done a lot of work in ARM programming. Will he still be unemployed after graduating in more than a year?
Through training, you can know a lot of things that are unknown to ordinary people in the industry, and at the same time, you can find a master for yourself. For example, two engineers use S3C2410 and PXA255 to make handheld devices respectively. Both of them have worked for four years and then go out to find a job. The difference between their salaries may be up to double. Why? This is a rule in the industry that is unknown to ordinary people. The 2410 is a civilian product and has been overused in the industry. People are very sensitive to cost when making products, and of course they are also sensitive to talent costs. The PXA255 is Intel's product. One 255 CPU can buy three 2410s. It has always been defined as an expensive product in the industry. The companies that use it are all large companies or companies serving the military. They don't care about the cost. As long as they make a good product, everything will be fine. However, there are few people working in this area because system development is expensive. As for finding a good master for myself, I think it is like this, because there is a certain potential competition relationship among engineers of the same level, and many people are unwilling to teach others what they know, which means they will be unemployed, which is the so-called teaching the apprentice and starving the master. But for people like us, there is no such relationship. I have reached a certain stage in embedded system platform design. It is very difficult for me to break through myself in this field of technology in China. Therefore, many things are OPEN to everyone, for example, the timing interface mentioned in the following part about interface design. If I don’t talk about it, even if they are senior hardware engineers, I think only 10% of people can know it.
Previous article:Design of embedded pneumatic marking machine control system
Next article:Design of automatic range voltmeter based on STM32
- Popular Resources
- Popular amplifiers
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- LED chemical incompatibility test to see which chemicals LEDs can be used with
- Application of ARM9 hardware coprocessor on WinCE embedded motherboard
- What are the key points for selecting rotor flowmeter?
- LM317 high power charger circuit
- A brief analysis of Embest's application and development of embedded medical devices
- Single-phase RC protection circuit
- stm32 PVD programmable voltage monitor
- Introduction and measurement of edge trigger and level trigger of 51 single chip microcomputer
- Improved design of Linux system software shell protection technology
- What to do if the ABB robot protection device stops
- Allegro MicroSystems Introduces Advanced Magnetic and Inductive Position Sensing Solutions at Electronica 2024
- Car key in the left hand, liveness detection radar in the right hand, UWB is imperative for cars!
- After a decade of rapid development, domestic CIS has entered the market
- Aegis Dagger Battery + Thor EM-i Super Hybrid, Geely New Energy has thrown out two "king bombs"
- A brief discussion on functional safety - fault, error, and failure
- In the smart car 2.0 cycle, these core industry chains are facing major opportunities!
- The United States and Japan are developing new batteries. CATL faces challenges? How should China's new energy battery industry respond?
- Murata launches high-precision 6-axis inertial sensor for automobiles
- Ford patents pre-charge alarm to help save costs and respond to emergencies
- New real-time microcontroller system from Texas Instruments enables smarter processing in automotive and industrial applications
- A module keyboard resource sharing, schematics, PCB, code are all available
- Why is PCB design generally controlled at 50 ohm impedance?
- Linear Regulator (LDO) Experiment Manual
- C++ Language Tutorial
- The problem that the PS side does not close the cache when ZYNQ debugs DDR
- I would like to ask for an example of the architecture of a general sensor module.
- Do you know how to conduct factory inspection on instruments and what precautions should be taken? All the knowledge points are here~
- Embedded development: How to select a microcontroller?
- Texas Instruments has the answers to the eight major challenges of automotive electrification!
- MSP430 communication resources IIC communication