Ultra-precision PCB Fabrication, High Frequency PCB, High Speed PCB, IC Substrate, Multilayer PCB and PCB Assembly.
The most reliable PCB custom service factory.
PCB Tech

PCB Tech

PCB Tech

PCB Tech

Ten years of experience teaches you how to learn embedded systems (based on ARM platform)

1. The concept of embedded system


Focus on understanding the concept of "embedding"

It is mainly understood from three aspects.

1. In terms of hardware, integrate the CPU-based peripheral devices into the CPU chip. For example, in the early computers based on the X86 architecture, the CPU only has the functions of arithmetic unit and accumulator, and all chips need to be expanded by building external bridges. Realization, the serial port and the like are realized by the external 16C550/2 serial port controller chip, and the current serial port controller chip has already been integrated into the CPU, and PCs have graphics cards, and most embedded processors All have LCD controllers, but in a sense it is equivalent to a graphics card. The IXP network processor CPU under the relatively high-end ARM-like Intel Xscale architecture integrates a PCI controller (which can be configured to support 4 PCI slave devices or configure itself as a CPI slave device); it also integrates 3 NPE network processor engines, Two of them correspond to two MAC addresses, which can be used for gateway switching, while the other NPE network processor engine supports DSL. As long as a PHY chip is added outside, DSL Internet access can be realized. The highest frequency of IXP series can reach 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 that aims to become the Xscale core after being integrated by intel under the ARM system structure.

2. From the beginning of the software, the application is selected in the custom operating system kernel, and the kernel is downloaded to the ROM after compilation. The application component selected when customizing the operating system kernel is to complete the "embedding" of the software. For example, when WinCE is customizing the kernel, there will be corresponding choices, including wordpad, PDF, MediaPlay and so on. If we choose, After the CE is started, you can find these things in the interface. If it is the windows operating system of the previous PC, most of the things need to be reinstalled.

3. Burn the software kernel or application file system into the ROM of the embedded system hardware platform to achieve a real "embedding".

The above definition is the definition that I used to focus on understanding in embedded systems 6 or 7 years ago. There are many definitions in the book, but in this field, no one dares to say that their definition is very accurate. Yes, including those experts and scholars, after all, embedded system is a comprehensive subject in the field of computer

2. Hierarchical and professional classification of embedded systems.


Embedded system is 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 be programmed in C and assembly language, it is relatively easy to walk from the hardware layer of the embedded system, and the hardware layer is also the driver. Based on the layer, an excellent driver engineer must be able to understand the circuit diagram of the hardware and complete the logic design of the CPLD by himself. 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 value-added depends on the software.

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


2. The 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 written by them will not monopolize the operating system time slice when the system is called. As a result, other tasks cannot be performed, they do not understand the operating system's kernel architecture and real-time scheduling, and do not have a good driver writing style. According to the method of adding drivers mentioned in most books, many people can do it, but they may even The level of the junior driver engineer is not up to the level, so when the application is called, the driver written is like when we open a program and run it under windows. When we open a program, it will either interrupt the previous program or wait. It will take a while to run the program that was opened later. If you want to be a good driver, you don't have three or four years of knowledge. It is not easy to succeed without studying the kernel of the operating system, but the salary is the highest among the four layers of embedded systems.

The driver layer is more suitable for people who major in electronics, communications, automation, mechatronics, and information engineering, especially computer-biased architecture. In addition to the basic disciplines of the hardware layer, data structure, algorithms, and operations are also required. System principles and compilation principles must be very proficient in understanding.

3. The operating system layer. For the operating system layer, it may only be a simple transplant at present, but few people come from the operating system that has been written, or the operating system that lacks arms and legs. This part of the work is mostly done by driver engineers. Done. The operating system is responsible for system task debugging, disk and file management, and the real-time nature of the embedded system is very important. It is said that Microsoft invested 300 people in the XP operating system in two years. The total hours are 600 man-years. It is estimated that the Nuwa Hopen operating system of the Chinese Academy of Sciences Software Institute will take hundreds of man-years to complete. Therefore, this part of the work is relatively meaningless.

4. The application layer is relatively easy. If you know how to call the programming interface function under windows, it will only change the compilation and development environment under the operating system. This is also true if it involves Java programming. The algorithm involved in the embedded system is handled by the professional algorithm person, and it does not need to be attributed to the embedded system category. But if it involves the embedded database under the embedded system, the network programming based on the embedded system, and the protocol application development based on a certain application level (such as SIP, H.323, Astrisk), it is more complicated and difficult.

3. Goals and positioning.

Have a goal first, then locate it.

Learning ARM, in terms of hardware, is to learn interface circuit design on the one hand, and on the other hand is to learn assembly and board-level programming in C language. From the software point of view, it is necessary to learn the driver and transplantation of the operating system level based on the ARM processor. These must be clear for beginners, either from the hardware to learn, or from the familiarity of the operating system to the application, but no matter what you learn, as long as it is not pure operating system level or higher API-based application layer programming, hardware You still need to be able to understand register things, and you still need to be able to understand board-level assembly and C programming. Therefore, for the hardware layer and driver of the embedded system, ARM interface circuit design, ARM's C language and assembly language programming and debugging development environment still need to be mastered.

Therefore, beginners must grasp the direction, what is their goal, and go on that level. Then start to learn better, the more practical two levels of the ARM-related embedded system, the hardware layer and the driver layer, no matter which layer is learned well, it will be very promising.

If you want to go from the application level of the embedded system, it may be far away from ARM and other systems. It is necessary to focus on the environmental application of the embedded operating system and the corresponding development tool chain, such as the EVC application development under the WinCe operating system ( Similar to VC under windows), if you want to make a breakthrough, rely on some audio and video protocols, such as application layer development based on SIP or H.323 protocol in the VOIP field, or based on embedded network database Development and so on.


For beginners, we must do what we can. Don’t think that the driver’s salary is high and take it as a direction. We must combine our own characteristics. In terms of the four levels of embedded systems, there are experts at all levels. Of course, there are experts. Corresponding to the high salary, I work in the hardware layer. In the past, I had to deduct nearly 3,000 yuan in personal income tax 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 do the position alone, but only those working hours. In terms of hardware, there may be very few people competing with me, which allows me to get so much salary.


4. Development system selection.

Many ARM beginners hope to have a system that they can use, but they will have a misunderstanding that the higher the processor version, the higher the performance, the better, just like many people think that ARM9 and ARM7 are better, I think For beginners, they should be sensible in this regard. The choice of the development system depends on the direction of the embedded system, whether to do driver development or application, or to do embedded system hardware layer design and board-level testing. . If you want to go from the operating system level or the application level, whether it is a driver or an application, of course, the higher the processor performance, the better, but self-learning of this thing is very difficult, not a few months or half a year or a year. Things that can be done in 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, such as 286 and 386. For users, they may not be aware of anything, but they can only feel that the speed is a little faster.

ARM7 is more suitable for those who want to go from the hardware level, because the ARM7 series processors have very few internal MMUs, and they are relatively easy to control. For example, S3C44B0, the Cache can be easily turned off, and the internal interface registers are very It is easy to see and understand that various interfaces can be controlled by hardware program control or AXD single-step command line instructions. Based on the idea of 51 single-chip microcomputer, it is easy to understand it, and it can be regarded as a 32-bit single-chip microcomputer, thereby eliminating many 51 engineers. Want to turn to the confusion of embedded system hardware ARM development engineers, so that they will not be brought to the operating system level by certain companies in the industry that do not really understand embedded embedded, making them frightened and making the industry even more lack of talents in this area.

The embedded system pays great attention to the interface in terms of hardware design and software drive. When choosing a platform, you must also examine the external resources of a processor. The more you contact with external resources, the more familiar with them, then your chances of successful employment in the future will be determined. The higher the higher, this is the "relevant skills" referred to when recruiting, because it is impossible for a person to have access to all processors in just a few years, and the processor used by the recruiting unit may be completely unknown to us. In the past, ARM processors produced by dozens of small companies in Taiwan (market value of tens of millions) are also very useful, but these things are too versatile, and companies using these processors can only recruit. People with relevant work experience, what is relevant work experience? In terms of hardware, it is about peripheral interface design, and in terms of software, it is related to interface driver and application development experience in operating system. I have been in the industry for nearly ten years. ARM appeared in 2000. I started working on ARM7 in one day, and then I went straight to Xscale (this board is between ARM10-11). I did it for five years and recruited no fewer than hundreds of people for interviews. These aspects are still deeply understood.


I personally think that Samsung's S3C44b0 is more suitable for beginners. Why do you say that? Because the interface resources are relatively rich, the technology is mature, and the materials are more, 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 a 51-type microcontroller, with more than N bits. Expert-level figures can help you, and related questions can be answered quickly. However, the industry thinks that this ARM is bad for use, but for beginners, it is a good thing.

Therefore, the choice of development system depends on one's own future goals, development board interface resources, and industry versatility.

5. How to treat training.


Let me first talk about myself. I have been in the industry for nearly ten years and started together with the domestic embedded system industry. I 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 his job, he designed IP-PBX for a US-funded company engaged in VOIP. He has served as project manager, project supervisor, technical director, and department manager. He has accumulated many contacts and accumulated many years of experience. Taking into account the mismatch between student employment and company recruitment, The company wants to recruit people, but it’s not easy for students and newly graduated engineers to find a job, so I try to create Zhitianxing Technology Co., Ltd. to carry out embedded system education and training.

Due to the lack of contact between front-line researchers and front-line teachers, domestic embedded talents are lacking. The technology of foreign universities is ahead 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 between the industry and universities, bring advanced skills to college students, create a trump card for students in the employment competition, and create opportunities for industry engineers to quickly improve and realize self-creation, so I resigned from a foreign company with an annual salary of more than 200,000 Position, do training in embedded systems.

For training, it is to spend money to buy time. Many engineers like to learn on their own and think that training is not worth it. This is also possible. Of course, training purely for money will not be too valuable, but they may They have lost a lot of money. I don’t know if they have calculated it. If a one-week training can bring them knowledge that can only be mastered after two years of self-study, they will spend three months to six months digesting the training content after the training is completed. , So that he will save at least one and a half years to learn other things or work at another height, then he will get the salary corresponding to his level two years later at the latest, which is the salary The relationship with the level is shortened by one year compared with the same batch of people. The monthly rate is at least 1,000, and the training cost is at least 10,000 more. At the same time, it also saves a year of time. Well, in short, I ran to the front of the team.

On another level, the training for newcomers is equivalent to buying an unemployment insurance for themselves in advance, and a master will lead them into the Taoism. The youngest student in my class this summer was a sophomore, and this year he was only a junior. , I just learned MCU this semester, but now the programming work in ARM is already very impressive. Will he still be unemployed after graduating in more than a year?


In addition, through training, you can know a lot of things that the industry does not know by ordinary people, and at the same time find a master for yourself. For example, two engineers use S3C2410 and PXA255 to make handheld devices, and both of them work four. In the next year, if you go out to find a job, the salary difference between the two may be at most doubled. Why? This is a rule unknown to ordinary people in the industry. The 2410 is a civilian product. It is used badly by the industry. The cost of making a product is very sensitive. Of course, it is also sensitive to the cost of talent. PXA255 is an Intel product. One 255 CPU can buy three 2410s. , Has always been defined by the industry as a noble product. The companies used are large companies or companies that serve the military. They don’t care about the cost. As long as you do a good job, everything is easy to say, but there are few people doing this, because The development system is expensive.

As for finding a good master for himself, I think so, because there is a potential competitive relationship among engineers of the same level, and many people are unwilling to teach others what they know, which means that they will lose their jobs. , Is the so-called church apprentice, the master starved to death, but for those of us, there is no such relationship. I have reached a certain program in the design of the embedded system platform. At present, I am myself in this area of technology in China. It’s hard to break through, so I open many things to everyone, such as the timing interface mentioned in the interface design below. If I don’t talk about it, I think it’s almost a senior hardware engineer. Only 10% of people can know.

6. Skills required to become a senior embedded system hardware engineer.

In terms of hardware, there are several directions. The simple signal is divided into digital and analog. Analog is more difficult to do. It generally requires a long accumulation of experience. If the accuracy of the resistance or capacitance is not enough, the signal deviation may be large. Therefore, young people do less work. With the development of technology, the digitalization of analog circuits has emerged. For example, the modem radio frequency modules of mobile phones all use mature chips. At that time, only two companies in the world had this technology, and they felt that they had analog functions. People who are not too strong are not suitable for this. If you can really get the radio frequency module of the mobile phone, as long as it reaches the general level, the monthly salary may be more than 15K.

The other is the digital part, which can be divided into 51/ARM microcontrollers, DSPs, and FPGAs in the general direction. Most of the domestic FPGA engineers are engaged in front-end verification of IP cores in IC design companies. This part is not involved. At the door level, the future is not very clear. Even if you are an IC front-end verification engineer, you will have to work for several years to be competent. The DSP hardware interface is relatively finalized. If it does not move closer to the driver or algorithm, the future will not be too great. The content of ARM single-chip microcomputers is more. The products in the industry occupy a large amount and the application crowd is wide. Therefore, the employment space is huge. The hardware design most reflects the level and standard of the interface design. This is the PK of various senior hardware engineers. The basis for judging the level. The most important thing in the interface design is to look at the timing, not the simple connection. For example, the PXA255 processor I2C requires a speed of 100Kbps. If an I2C peripheral device is connected to it that does not reach 100kbps, it will inevitably lead to Design failure. There are many such situations. For example, 51 single-chip microcomputer can be connected to LCD on the bus, but why this LCD can not be hung on the ARM bus, and there can be an external Winband SD card controller on the ARM7 bus, but why this kind of controller These are all problems if you can't access ARM9 or Xscale processors.

Therefore, the interface is not a simple connection, it depends on the timing and the parameters. An excellent hardware engineer should be able to design a product with better cost and performance without a reference plan. Relying on the existing plan, it must also make appropriate feasibility tailoring, but it is not random, I met When an engineer changed the 5V to 1.8V DC chip in the scheme, and directly replaced it with an LDO, sometimes he would burn a few CPUs. A few days ago, some people wanted me to help optimize the program of their previous handheld GPS devices based on the PXA255 platform. I asked about the situation. The map is stored in the SD card, and the SPI used between the SD card and the MMC controller of the PXA255 Interface, therefore the map reading speed is very slow, this situation is a serious flaw in the design, rather than a program problem, so I made a few suggestions, let them update and try again. Therefore, if you want to be an excellent engineer, you need to have a grasp of the integrity of the system and an understanding of the existing circuits. In other words, how much you can see and understand after a set of circuit diagrams. If you don’t understand more than 80%, it means you are not A good engineer is far from it.

The second is circuit debugging ability and drawing review ability, but the most basic ability is PCB drawing of schematic design and logic design. This refers to hardware design engineers. ECAD engineers can also be separated from the above hardware design engineers, who are professional engineers who draw PCB boards and EMC design engineers to help others solve EMC problems. The hardware engineer is the board-level test engineer, that is, the hardware engineer with good C language skills, who can verify the hardware function through the test program written by himself during the debugging of the circuit board. Then hand it over to driver developers based on the operating system level.


In short, the content of the hardware is very complicated. If you train in the hardware, you will become a master. I will often evaluate the plan for others. I often deny the design of many senior hardware engineers. Therefore, the engineer does it. This kind of situation will offend some people, but the hardware does have a lot of unknown things that make many senior hardware engineers confused.

So advanced hardware engineers must have those technical skills. First, they must master the auxiliary tools of EDA design, such as protel Orcad PowperPCB Maplux2ISE, VDHL language. They must be able to use these tools to draw the drawing board for logic design, and then interface design review. Graphing ability and debugging ability. If you can get to the overall plan design, you will basically become a senior engineer.

Hardware depends on experience as well as accumulation. A sword is sharpened in ten years, and a needle is sharpened in a hundred years.