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

Publisher:沭阳小黄同志Latest update time:2014-02-13 Source: dqjsw Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

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.

Baidu Button BEGIN
Reference address:Ten years of experience teach you how to learn embedded systems (based on ARM platform)

Previous article:Design of embedded pneumatic marking machine control system
Next article:Design of automatic range voltmeter based on STM32

Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号