Job Recruitment Website - Zhaopincom - Introduction of embedded arm

Introduction of embedded arm

I found this from other places, and I just started to learn it. Hehe, I hope it will help you.

Ten years' experience teaches you how to learn embedded system (based on ARM platform).

First, the concept of embedded system

Focus on understanding the concept of "embedding"

Mainly from three aspects to understand.

1. From the hardware point of view, peripheral devices based on CPU are integrated into the CPU chip. For example, in the early computer based on X86 architecture, the CPU only has the functions of arithmetic unit and accumulator, and all chips need to be extended by building external bridges, such as serial port, which is realized by the external serial port controller chip of 16C550/2. At present, this serial controller chip has already been integrated into CPU, and PCs have graphics cards. The relatively high-end IXP network processor CPU under ARM Intel Xscale architecture integrates a PCI controller (which can be configured to support four PCI slaves or one CPI slave). It also integrates three NPE network processor engines, two of which correspond to two MAC addresses, and can be used for gateway switching, while the other NPE network processor engine supports DSL, so as long as a PHY chip is added outside, the DSL internet access function can be realized. The highest frequency of IXP series can reach 1.8G, and it supports 2G memory, Ethernet port of 1G× 10 or optical channel of 10G× 1. IXP series should be intel's highest processor based on ARM architecture, aiming at integrating into Xscale kernel.

2. From the software point of view, the application is selected from the customized operating system kernel, and the compiled kernel is downloaded to rom. When customizing the operating system kernel, the selected application component is the "embedding" of the software. For example, when customizing the kernel, WinCE will have corresponding choices, including WordPad, PDF, MediaPlay and so on. If we choose, we can find these things in the interface after ce starts. If it is the windows operating system on the previous PC, most things need to be reinstalled.

3. The real "embedding" is realized by burning the software kernel or application file system into the ROM of the embedded system hardware platform.

The above definition is the definition I gave to embedded system six or seven years ago, and the emphasis is on understanding. There are many definitions in the book, but no one dares to say that their definitions are very accurate in this field, including experts and scholars. After all, embedded system is a comprehensive subject under the category of computer.

2. Layering and professional classification of embedded systems.

Embedded system is divided into four layers: hardware layer, driver layer, operating system layer and application layer.

1, the hardware layer, is the foundation of the whole embedded system. If you are familiar with microcontroller and interface now and can program in C and assembly language, it is relatively easy to walk from the hardware layer of embedded system, which is also the foundation of driver layer. An excellent driver engineer should be able to understand the hardware circuit diagram and complete the logic design of CPLD, and be quite familiar with the operating system kernel and its scheduling. But the hardware platform is the foundation, and the value-added depends on software.

The hardware layer is more suitable for people majoring in electronics, communication, automation, mechatronics and information engineering. The basic professional knowledge that needs to be mastered is the principle and interface technology of single chip microcomputer, the principle and interface technology of microcomputer and C language.

2, the driver layer, this part is more difficult, the driver engineer should not only be able to understand the circuit diagram but also be very proficient in the operating system kernel, so that when the system is called, the driver he wrote will not monopolize the operating system time slice, but will cause other tasks to be immobile, do not understand the operating system kernel architecture and real-time scheduling, and have no good driver writing style. Many people can do this by adding drivers as mentioned in most books. But it may not even reach the level of a junior driver engineer, so the driver written in this way is like when we open a program after running it under windows, we either interrupt the previous program or run the program opened later. If you want to be an excellent driver, it is not easy to succeed without three or four years of basic skills and learning the last few parts of the operating system kernel, but your salary is the highest among the four layers of embedded system.

The driver layer is more suitable for people majoring in electronics, communication, automation, mechatronics and information engineering, especially computer architecture. In addition to the basic disciplines of the hardware layer, you should also be very proficient in data structures and algorithms, operating system principles and compilation principles.

3, the operating system layer, for the current operating system layer, may only be said to be a simple transplant, few people come from the written operating system, or write the operating system without hands and feet. Most of this work is done by driving engineers. Operating system is responsible for debugging system tasks and managing disks and files. The real-time performance of embedded system is very important. It is said that XP operating system took Microsoft 300 people two years to complete, and the total workload was 600 person-years. It is estimated that it will take hundreds of years for the operating system of the Institute of Software of Chinese Academy of Sciences to come out. So this part of the work is relatively meaningless.

4. The application layer is relatively easy. If you can call the programming interface function under windows, it will only change the compilation and development environment under the operating system. The same is true if Jave is involved in programming. The algorithms involved in embedded systems are all handled by professional algorithmic people, and do not necessarily belong to the category of embedded systems. However, it is more complicated and difficult if it involves embedded database under embedded system, network programming based on embedded system and protocol application development based on an application layer (such as SIP, H.323 and Astrisk).

Third, the goal and orientation.

Have a goal first, then locate it.

Learning ARM, from the hardware point of view, on the one hand, is learning interface circuit design, on the other hand, learning C language assembly and board-level programming. From the software point of view, it is necessary to learn the driver and transplantation of operating system based on ARM processor. These must be very clear to beginners, whether from the hardware or from the familiarity of the operating system with the application, but no matter what you learn, as long as it is not pure API application programming above the operating system level, hardware registers should be understandable, and board-level assembly and C programming should be understandable. Therefore, it is necessary to master the hardware layer and driver of embedded system, the interface circuit design of ARM, and the programming, debugging and development environment of C language and assembly language of ARM.

Therefore, for beginners, it is necessary to grasp the direction, what is their goal and what level they want to go to. Then, we will begin to learn two practical levels of ARM-related embedded systems: hardware layer and driver layer. No matter which subject we learn well, it will be very promising.

If we want to go from the application level of embedded system, it may be far from ARM and other systems. We should focus on the environmental application of embedded operating system and the corresponding development tool chain, such as EVC application development under WinCe operating system (similar to VC under windows). In order to make a breakthrough, we must rely on some audio and video protocols, such as the development of application layer based on SIP or H.323 protocol in VOIP field, or the development based on embedded network database.

For beginners, we should do what we can, and don't take this as the direction just because the driver's salary is high. We should combine our own characteristics. At that level, there are four levels of experts in embedded systems, and of course experts also have high salaries. I work in the hardware layer. In the past, personal income tax deducted nearly 3 thousand yuan from my monthly salary. Of course, on the one hand, I played the role of an engineer, on the other hand, I also played the role of a supervisor. I did two jobs by myself. There may be very few people with my PK hardware, so let me get so much salary.

Fourth, development system selection.

Many beginners of ARM hope to have a system that they can use, but there will be a misunderstanding in life that the higher the processor version, the better the performance, just as many people think that ARM9 and ARM7 are good. I think beginners should be rational in this respect. The choice of development system ultimately depends on their embedded system direction, whether to do driver development or application, or to do hardware layer design and board-level testing of embedded system. If you want to do it from the operating system level or the application level, whether it is driver or application, of course, the higher the performance of the processor, the better, but this thing is difficult to learn by yourself, and it can not be done in a few months or six months or two.

In a sense, please, the difference between ARM7 and 9 is that they are richer in some functional instruction sets and have higher main frequency, such as 286 and 386. For users, they may not find anything, but they just feel that the speed is a bit fast.

ARM7 is more suitable for people who want to go from the hardware level, because the MMU of ARM7 series processors is few and easy to control. For example, S3C44B0 can easily close the cache, and the internal interface register is also easy to understand. Various interfaces can be controlled by hardware programs or AXD single-step command line instructions. Based on the idea of 5 1 single chip microcomputer, it is easy to understand him and treat him as a 32-bit single chip microcomputer, thus eliminating the confusion that many 5 1 engineers want to be embedded system hardware ARM development engineers, so that they will not be brought to the operating system level by a bad company in the industry who doesn't really understand embedded systems, which will discourage them and make the industry even more short of talents in this field.

Embedded system attaches great importance to interface in hardware design and software driver. The choice of platform also depends on the external resources of the processor. The more you are exposed to external resources, the more familiar you are, and the higher your chances of success in future employment. This is the "relevant skills" mentioned in the recruitment, because it is impossible for a person to get in touch with all the processors in just a few years. The processor used by the employer may be brand new to us. Take the ARM processor produced by dozens of small companies in Taiwan Province Province (the market price is tens of millions), which is also very easy to use. But these processors are not universal, so companies that use these processors can only recruit people with relevant work experience. What is the related work? The hardware aspect is peripheral interface design, and the software aspect is related interface driver and application development experience in the operating system. I have been in business for nearly ten years. When ARM appeared in 2000, I started to make ARM7 in one day, and then went directly to Xscale (this board is between ARM 10- 1 1). I've been doing it for five years and recruited hundreds of people for interviews. I still have a deep understanding of these aspects.

Personally, Samsung's S3C44b0 is more suitable for beginners. Why do you say that? Because the interface is rich in resources, mature in technology and rich in data, it should be very suitable for beginners. If there is a problem, it may be easy to find someone to help solve it. Because most people are familiar with it, just like 5 1 single chip microcomputer, there are more than n experts who can help you, and related questions can be answered quickly. However, the industry thinks that this arm is rotten, but it is a good thing for novices.

Therefore, the choice of development system depends on its future development direction, development board interface resources and industry universality.

How do verbs (short for verb) look at training?

First of all, let me talk about myself. I have been working for nearly ten years, starting from the domestic embedded system industry and always standing at the forefront of the embedded system industry. I have designed many high-end embedded system platform products and provided solutions for many companies. I designed IP-PBX for American companies engaged in VoIP before leaving my job. I have worked as a project manager, project director, technical director and department manager, and have accumulated many contacts and accumulated many years of experience. Considering the mismatch between student employment and company recruitment, the company can't recruit people, and it is difficult for students and newly graduated engineers to find jobs, so we set up Zhitianxing Technology Co., Ltd. to carry out education and training on embedded systems.

Because front-line researchers have no access to front-line teachers and there is a lack of embedded talents in China, the technology of foreign universities is ahead of industry companies, while the embedded system technology of industry companies is far ahead of universities in China. In order to build a bridge between the industry and universities, bring advanced skills to college students, create a trump card for students' employment competition, and provide opportunities for industry engineers to create themselves, I quit my job with an annual salary of more than 200,000 yuan and received embedded system training.

For training, it is to spend money to buy time. Many engineers like to teach themselves and think that training is not worth it. It is also possible. Training purely for making money is certainly not too valuable, but for strength training, they may lose a lot. I wonder if they have calculated this account. If a week's training can bring them knowledge that they can master after two years of self-study, then they will spend three months to six months digesting the training content after training. In this way, he will save at least one and a half years to study other things or work at another height, and then he will get the salary corresponding to his level at the latest two years later, that is, the relationship between salary and level is shortened by one year compared with that of the same group, the monthly salary is at least 1000 yuan, and then the training cost is at least 1000 yuan, which also saves one year, whether it is leisure or not, continue.

On the other hand, the training of newcomers is equivalent to buying unemployment insurance for themselves in advance, and a master leads them into the Tao. The youngest student in our class this summer vacation is a sophomore, and he is only a junior this year. He just learned MCU this semester, but now his programming work in ARM has been very colorful. Will you lose your job more than a year after graduation?

Furthermore, through training, you can know a lot of things that ordinary people in the industry don't know, and at the same time find yourself a master. For example, two engineers used S3C24 10 and PXA255 as hand-held devices respectively. Both of them worked for four years and then went out to look for jobs. The wage difference between them may be at most twice. Why? This is a rule unknown to ordinary people in the industry. 24 10 is a civilian product, which is rotten by the industry. When making products, it is very sensitive to cost, and of course it is also sensitive to the cost of talents. PXA255 belongs to Intel. A 255 CPU can buy three 24 10, which has always been defined as an aristocratic product by the industry. The companies used are big companies or companies that serve the military, regardless of the cost.

I think it is true to find a good teacher for myself, because there is a potential competitive relationship between engineers at the same level, and many people are unwilling to teach others what they know, which means that they will lose their jobs, that is, the so-called church apprentice will starve to death, but for us, this relationship does not exist. I have reached a certain program in the design of embedded system platform. At present, it is difficult for me to break through myself in domestic technology, so many things are open to everyone. For example, if I don't talk about the sequential interface mentioned in the interface design, I think only 10% people can know it.

6. Skills of becoming a senior embedded system hardware engineer.

As for hardware, there are several directions. Simple signals are divided into digital signals and analog signals. Simulation is difficult to do and usually takes a long time to accumulate experience. A single resistor or capacitor is not accurate enough, which may make the signal deviate greatly. Therefore, young people do less. With the development of technology, digital analog circuits have appeared, such as the Modem RF module of mobile phones, all of which use mature complete sets of chips. At that time, only two companies in the world had this technology, and people who felt that their simulation function was not strong were not suitable for this. If they can really get the RF module of mobile phones, as long as they reach the general level, their monthly salary may be above 15K.

The other is the digital part, which can be divided into 5 1/ARM single chip microcomputer, DSP and FPGA. Most domestic FPGA engineers are engaged in the front-end verification of IP core in ic design companies, and the future is not clear. Even an IC front-end verification engineer will take several years to be competent. The hardware interface of DSP is relatively stereotyped. If it is not close to the driver or algorithm, the future will not be too great. However, ARM single-chip microcomputer has more contents, a large amount of industrial products and a wide range of applications, so it has a great employment space. Interface design can best reflect the level and level of hardware design, and it is the basis for each senior hardware engineer to PK each other and judge the level. The most important thing in interface design is timing, not simple connection. For example, the I2C speed of PXA255 processor needs 100Kbps. If an I2C peripheral is connected to it, the design will inevitably fail. There are many such situations. For example, 5 1 single chip microcomputer can connect LCD on the bus, but why can't this LCD be hung on the ARM bus? An SD card controller of Winband can be connected to the ARM7 bus, but why can't this controller be connected to the ARM9 or Xscale processor? These are all problems. So the interface is not a simple connection, it depends on the timing and parameters. An excellent hardware engineer should be able to design products with better cost performance without reference scheme. According to the existing plan, it is also necessary to make appropriate and feasible cuts, but it is not random. I met an engineer who changed the DC chip from 5V to 1.8V in the scheme, and directly changed it to LDO, sometimes burning several CPUs. A few days ago, someone asked me to help them optimize their previous hand-held GPS device program based on PXA255 platform. I asked about the situation. The map is stored in SD card, and the SPI interface between SD card and MMC controller of PXA255 causes the map reading speed to be very slow. This situation is a serious defect in design, not a procedural problem, so I made some suggestions for them to update and try again. Therefore, if you want to be an excellent engineer, you need to grasp the integrity of the system and understand the existing circuits. In other words, given a set of circuit diagrams, how much can you understand? If you don't understand more than 80%, you are far from being an excellent engineer. Secondly, it is the ability to debug the circuit and check the drawings, but the most basic ability is schematic design, PCB diagram and logic design. This refers to the hardware design engineer. From the above hardware design engineers, we can also divide ECAD engineers, that is, professional PCB drawing engineers and EMC design engineers, to help people solve EMC problems. Hardware engineers are board-level test engineers, that is, hardware engineers with good knowledge of C language. In the process of debugging the circuit board, he can verify the hardware function through his own test program. Then hand it over to the driver developer based on the operating system level.

In a word, the content of hardware is very miscellaneous. If you practice it, you will become a master. I often give people a plan evaluation. Many things designed by senior hardware engineers, I often deny. So engineers will offend some people, but there are many unknown places in hardware, which makes many senior hardware engineers puzzled.

Well, senior hardware engineers must have those skills. First of all, they must master the auxiliary tools of EDA design, such as ProtelORCADPowperPCBMaplux2ISE and VDHL language, and they must be able to use these tools for drawing and sketchpad for logical design. Then there is the ability of interface design and drawing review, and then the ability of debugging. If they can do the overall scheme design, they can basically become senior engineers.

Hardware depends on experience and accumulation. It takes ten years to sharpen a sword and a hundred years to sharpen a needle.