Help: microcontroller and embedded industry has the knowledge and skills

Entering the embedded industry, barely come (turn)

Think Hai Tong 07 analysis (as if) good:

"Hai Tong education general manager, Mr. Qu Gang, said the market needs of embedded talents must have C programming experience, embedded operating systems (mainly including embedded Linux, WinCE or Symbian) experience, kernel trimming experience, driver development experience, such as senior embedded software development engineer related position requirements are: rich embedded multi-tasking software system analysis and design capabilities, can independently complete the project system program, to solve system failures and problems, proficient in C language application development, good programming habits and style, good document writing skills and habits, familiar with the Project management process. Mr. Qu also pointed out that good English reading ability and strong learning ability is the basis of work in this field, the embedded operating system to do a special and versatile (proficient in embedded Linux, master WinCE and Symbian) will make the job seekers double the value.

At present, domestic and foreign people in this area are very scarce. On the one hand, because of this field of entry threshold is high, not only to understand the underlying software (such as operating system level, driver level software), the software professional level requirements are high (embedded systems on the software design of the time and space efficiency requirements are high), but also must know the working principle of the hardware, so it is difficult for non-professional IT personnel to cut into this field; on the other hand, because this field is new, and currently On the other hand, because this field is relatively new, the current development is too fast, a lot of hardware and software technology does not appear for a long time or is appearing (such as ARM processors, embedded operating systems, MPEG technology, wireless communication protocols, etc.), mastering these new technologies, of course, it is difficult to find people.

Embedded talent is scarce, the price is naturally high. At present, there are many companies will be the hardware design package to a specialized hardware company, slightly more complex hardware are given to Taiwan or foreign companies to design; and for the software part, a large number of embedded companies to develop their own, for example, for the Japanese company, due to the high cost of domestic manpower, so many Japanese embedded software development companies are outsourcing the project to the company to complete in China, and more and more companies to engage in domestic Embedded software development, in recent years, the domestic demand for embedded software talent multiplied, just the Beijing market demand for embedded software developers has exceeded 50,000 people, and continues to grow.

The working environment and development prospects of embedded talents also have advantages. Mr. Qu told the reporter: "There are two major advantages of working in embedded: first, the work intensity is relatively low. Development of enterprise application software IT companies, the user's system is done, and have to go to do the next user, and each user's needs and completion time are different, developers are often tired of running, repeat labor; and do embedded systems company, have their own product plans, according to their own rhythm, the products developed are usually common, not due to different customers and modify, a After the development of a product model, there is often a long period of free time for charging and recuperation. Secondly, the career development is relatively smooth, engaged in enterprise application software people, the scope of work is wide, the project changes, the daily accumulation is difficult to produce qualitative change, easy to encounter career bottlenecks; and engaged in embedded software people, involved in the scope of professional and technical skills are those who, for a long time will be more and more experienced."

All of the above is for job hunting, if for the overall development of individuals, if you want to start a business, do their own products, then embedded is a good idea, embedded software will not be as easy as the application software piracy, the development of patented products, but also more than 100,000 annual salary.

There is a professional foundation for the embedded software, so how to quickly grow into an embedded talent? Mr. Qu pointed out that the field of embedded systems threshold is high, not for everyone, embedded developers not only to understand the more underlying software, software professional level requirements are high, to enter the field of embedded systems development work, you must first have a certain degree of C language foundation, and then you can try to participate in a number of related training courses, and then you can look for opportunities to practice the project, to increase the project experience. "

There are also valuable comments from users:

"Second, the hierarchy of embedded systems and the classification of specialties.

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

1, the hardware layer, is the entire embedded system is fundamental, if now the microcontroller and interface this piece is very familiar with, and can use C and assembly language to program, from the hardware layer of the embedded system is relatively easy to go up, the hardware layer is also the basis of the driver layer , a good driver engineer is to be able to understand the circuit diagram of the hardware and their own CPLD to complete the logic of the design, and at the same time, also to the operating system kernel and its scheduling is quite easy to do. A good driver engineer should be able to read hardware circuit diagrams and complete the logic design of CPLDs by himself, at the same time, he should be quite familiar with the operating system kernel and its scheduling. But the hardware platform is the foundation, value-added also rely on software.

Hardware layer is more suitable for electronics, communications, automation, electromechanical integration, information engineering professionals to engage in the need to master the professional basics of microcontroller principles and interface technology, microcomputer principles and interface technology, C language.

2, the driver layer, this part is more difficult, the driver engineers not only to be able to understand the circuit diagrams but also the operating system kernel is very proficient, so that the driver written in the system call, will not monopolize the operating system time slice, which leads to other tasks can not be moved to the line, do not understand the operating system kernel architecture and real-time scheduling, there is no good driver to write a good style, according to the majority of the book said to add the driver's way, many people have been able to get the driver's way, the driver's way. The driver of the way, many people can do, but may even be a junior driver engineer level are not reached, so that the driver written in the application call as under windows we open a program to run, and then open a program, either to interrupt the previous program, or wait a while in order to run the program opened later. Want to do a good driver without three or four years of work, the operating system kernel does not study on a few edits, is not too easy to succeed , but its wages in the embedded system four layers is the highest.

Driver layer is more suitable for electronics, communications, automation, electromechanical integration, information engineering classes, especially those who specialize in computer biased architecture classes, in addition to the hardware layer of the basic disciplines, but also on the data structures and algorithms, operating system principles, compilation principles to be very proficient in understanding.

3, the operating system layer, the operating system layer may only be able to say that the current simple transplantation, and very few people from the operating system has been written, or written out of the missing arms and legs of the operating system, this part of the work is mostly done by the driver engineers to complete. The operating system is responsible for debugging system tasks, disk and file management, and the real-time embedded system is very important. It is said that the XP operating system is Microsoft invested 300 people with two years to get it done, the total time is 600 man-years, the Chinese Academy of Sciences Institute of Software's own Nuwa Hopen operating system is estimated to have to spend hundreds of man-years to get it done. Therefore, this part of the work is relatively meaningless.

4, the application layer, relatively speaking, easier, if you will be under the windows how to program interface function calls, to the operating system just compile and development environment has changed accordingly. If it involves Jave programming is also so. Embedded systems involving algorithms by professional algorithms to deal with, do not have to be attributed to the embedded system category. But if it involves embedded systems embedded databases, embedded systems based on network programming and based on the application level of the protocol application development (such as based on SIP, H.323, Astrisk) is more complex, and difficult.

Third, the goal and positioning.

First have a goal, and then go to the positioning.

Learning ARM, from the hardware, on the one hand, is to learn the interface circuit design, on the other hand, is to learn assembly and C language board programming. If from the software, is to learn based on the ARM processor operating system level driver, transplantation. These for beginners must be clear, either from the hardware to start learning, or from the operating system to familiarize with the application to start learning, but no matter what to learn, as long as it is not a pure operating system level based on the API above the application layer of programming, hardware register class things or to be able to read and understand, based on the board level of the assembly and C programming or to be able to. So for the embedded system hardware layer and driver program people, ARM interface circuit design, ARM C and assembly language programming and debugging development environment still need to master .

Therefore, for beginners are bound to grasp the direction, what is their goal, they want to go at that level. Then proceed to learn better, and ARM-related embedded systems are more practical two levels of hardware layer and driver layer, no matter how good that layer will be very promising.

If you want to go from the application level of embedded systems, may be far from ARM and other systems, to focus on the study of embedded operating systems based on the environment and the corresponding development tool chain, such as WinCe operating system under the EVC application development (similar to Windows VC), if you want to have a breakthrough to some audio and video protocols, such as the VOIP field based on SIP. If you want to have a breakthrough, you can rely on certain audio and video protocols, such as SIP or H.323 based application layer development in the VOIP field, or development based on embedded network databases and so on.

For beginners to speak, we must act according to our ability, do not think that the driver layer of high wages as a direction, to combine their own characteristics, embedded systems on the four levels of that level to speak of the existence of high people, of course, high people also correspond to the high wages, I do hardware layer, the previous monthly salary of the personal income tax to be deducted on nearly 3,000 dollars, of course, on the one hand, I act as an engineer role, on the one hand, as a supervisor and the role of the character, and on the other hand, as a supervisor and the character of the role. On the one hand, I act as an engineer, on the other hand, I act as a supervisor and the role of characters, two positions I do a person, but the work time on those. Hardware in this regard may be very few people with me PK, to let me get so much pay.

Four, the development of system selection.

Many ARM beginners want to have a set of their own systems can be used, but they will live to produce a misunderstanding is that the processor version of the higher, the higher the performance of the better, as many people think that the ARM9 and ARM7 is good, I think that for beginners to start in this way should be sensible, the development of the system selection should ultimately be seen to the direction of their own embedded systems to go, is it a driver development or application, or embedded systems to do? The choice of development system ultimately depends on which direction you want to go in the embedded system, whether you want to do driver development or application, or do 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 a driver or application, then of course, the higher the processor performance the better, but this is something self-study, there is a very big difficulty, not a few months or six months or a year or two years can be done thing.

In a sense, the difference between ARM7 and ARM9 is that the instruction set is enriched in some functions, and the main frequency is increased by some, such as 286 and 386. For the user to find out what may not be able to feel, it 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 processor with MMU is very small, and better control, such as the S3C44B0 to speak, it can be very easy to Cache off, and the internal interface registers are easy to see and understand, a variety of interfaces for the control of the hardware program or AXD single-step command line instructions can be controlled. Up, based on the idea of 51 microcontrollers can easily understand him, as a 32-bit microcontroller, thus eliminating many 51 engineers want to switch to embedded systems hardware ARM development engineers confused, so as not to be in the industry, this is not really understand the embedded bad company to the operating system level up, so that they are afraid to look at and make the industry even more lack of talent in this area.

And embedded systems, regardless of hardware design or software drivers are very much focused on the interface This part of the selection platform but also to examine the external resources of a processor, the more you contact the external resources, the more familiar they are with the chances of success that you will be employed later on the higher the chances of success, which is what is called recruitment with or without the "relevant skills", because a person can not be in a short period of time. Because a person can not be in just a few years to all the processors are in contact with once, and recruiting units used by the processor may be we have not seen at all, take dozens of small companies in Taiwan (market price of tens of millions of dollars) of the company's production of ARM class processors, is also very good to use, but the generality of these things is too poor to use these processors can only be recruited to the processor of the company has the relevant experience of the people, what is the relevant experience, in terms of hardware, the more familiar with them that you later employment success, the higher the chance of success, this is what is called recruitment of "relevant skills". What is relevant work experience, in hardware is the peripheral interface design, in software is the operating system related interface driver and application development experience. I have been practicing for nearly ten years, 2000 ARM appeared, I started to do a day ARM7, and then ran directly to the Xscale (this board in the ARM10-11 between), a do is five years, recruiting interviews are not less than hundreds of people, in these areas or a deep understanding.

I personally think that Samsung's S3C44b0 is more suitable for beginners, why? Because the interface resources are richer, more mature technology, more information, should be very suitable for beginners, there are problems may be very easy to find someone to help and solve, because most people are very familiar with, just like the 51 type of microcontroller, there are more than a few expert characters can give you help, related issues to be answered very quickly, so the industry believes that this ARM are done to use the rotten, but for beginners to, but it is a good thing.

Therefore, the choice of development system, depending on the direction of their future goals, to see the development board interface resources, but also to see the industry's generality.

Fifth, how to look at the training.

First of all, let me talk about myself, I am currently practicing for nearly a decade, and the domestic embedded systems industry *** with the start, has always stood in the forefront of the embedded systems industry, designed a variety of high-end embedded systems platform products and provide solutions for many companies, engaged in the design of VOIP for the U.S. company before leaving IP-PBX, served as a project manager, project director, technical director, department manager, and accumulated many contacts, and set a set of VOIP IP-PBX, the company's IP-PBX, and the company's IP-PBX.

The lack of contact between front-line researchers and front-line teachers has led to a lack of embedded talent in China. The technology of foreign colleges and universities is ahead of that of industry companies, and the situation in China is that the embedded system technology of industry companies is far ahead of that of colleges and universities. In order to build a bridge of communication between the industry and universities, to bring advanced skills to college students, to create a trump card for students in the competition for employment, and to create opportunities for engineers in the industry to rapidly improve their self-realization, I resigned from the position of a foreign company with an annual salary of more than 200,000 yuan, to do the training of embedded systems.

For training, is to spend money to buy time, many engineers like to learn on their own, that the training is not worth it, it is possible, purely for the purpose of earning money training, of course, will not be too valuable, but for the strength of the type of training they may lose a lot of money, I do not know if they have such an account, if a one-week training to bring them to self-study two years after the mastery of the knowledge in the training, after they spend three months to six months to complete the training. After the training they use three months to half a year to digest the training content, so that he will save about at least a year and a half of time to learn other or re-stand on another level of work, then he will be the latest one year after he will get his two years after the level of the corresponding wages, that is, in the wages and level of the corresponding relationship with the same batch of people than the shortening of one year per month by a minimum of 1,000, and then subtracted from the training costs of at least more than 1.0 million, and at the same time, save a year of time, no matter whether it is for leisure or not. A year of time, whether it is leisure or continue to improve, in short, ran to the front of the team.

On the other hand, the training for newcomers is equivalent to buy a piece of unemployment insurance for themselves in advance, there will be a master to lead them into the road, my summer vacation this year, one of the youngest students in the class is a sophomore, this year only on the junior, this semester only just learned the microcontroller, but now ARM programming work has been done sound, and then more than a year to graduation, he will be unemployed?

Furthermore, through training, you can know a lot of the industry is not commonly known things, but also for themselves to find a master, for example, two engineers were using the S3C2410 and PXA255 to do handheld devices, the same two people have been working for four years, and then go out to find a job, two people may be up to double the difference in wages, why? This is the industry is not common knowledge of the rules, 2410 belongs to the civilian products, used by the industry sucks, do products when the cost of special sensitive, of course, also sensitive to the cost of talent, PXA255 is intel's stuff, a 255 CPU can buy three 2410, has been defined by the industry as an aristocrat products, with the company is a large company or for the military service companies will not care about the cost, as long as the stuff! As long as you do a good job, everything is fine, but the people who do this are also less ah, because the development of the system is expensive ah.

For said for self to find a good master, I think so, because the same level of engineers between the existence of a certain potential competition, there are a lot of people are not willing to teach their own knowledge of things to others, which means that he is going to be unemployed, is said to teach the apprentice, starve to death masters, but for those of us who do not exist in such a relationship, I was in the design of the platform of the embedded systems to a certain level, but the design of the embedded systems is not a good idea. program, the current technology in this area of the domestic has been difficult to break through their own, so many things I am OPEN to everyone, such as the following part of the interface design on the timing interface things mentioned, if I do not speak, but so that is the senior hardware engineers I think almost only 10% of people can know it.

Sixth, become a senior embedded systems hardware engineers to have the skills.

First of all, I declare that I am based on the embedded system platform level design, hardware this direction I relatively speaking have the right to speak, if it is the other aspects of the basic skills to have to communicate with our training center and other professional lecturers, or go to the website to see ****. I can only say that I know some of their aspects, but not too much, the primary problem can also ask me.

For the hardware in terms of several directions, on the simple signal to be divided into digital and analog, analog is more difficult to deal with, generally need a long experience, a single resistance or capacitance value of the lack of precision may make the signal deviation is very large. Therefore, young people engaged in less, with the development of technology, the emergence of analog circuits digital, such as cell phones Modem RF module, are using a mature set of chips, and that year, the international only two companies have this technology, the self-feeling analog function is not very strong people, not very suitable for engage in this, if you can really get to the cell phone RF module, as long as to achieve the general degree of may be in the 15K or more monthly salary.

The other category is the digital part of it, in the general direction can be divided into 51/ARM microcontroller class, dsp class, FPGA class, the domestic FPGA engineers are mostly engaged in IC design companies in the front-end verification of IP cores, this part is not to get to the door level, the future is not too bright, even if you do an IC front-end verification engineers, but also to engage in a few years in order to be competent. dsp hardware interfaces Comparison of stereotypes, if not to the driver or algorithm to lean on, the future will not be too big. ARM microcontroller class content is more, industry products accounted for the amount of large, wide range of application population, so the employment space is great, and hardware design most reflect the level and standard is the interface design of this piece, which is the senior hardware engineers PK each other to determine the level of high and low basis. The interface design of this piece of the most critical is to look at the timing, rather than a simple connection, such as the PXA255 processor I2C speed requirements in 100Kbps, if an I2C peripheral device, the highest not up to 100kbps with it, is bound to lead to the failure of the design. There are many such cases, such as 51 microcontrollers can be connected to the bus LCD, but why this LCD can not be hung on the ARM bus, and ARM7 bus can be connected to an external Winband SD card controller, but why this controller can not 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, it depends on the parameters. A good hardware engineer should be able to design a better product in terms of cost and performance without the premise of the reference program, relying on the existing program, but also the appropriate feasibility of tailoring, but not haphazardly, I encountered an engineer to the program of the 5V into 1.8V DC chip, directly replace the LDO, and sometimes the CPU burned on a few. A few days ago, there are people who want me to help them to do the program optimization of their previous handheld GPS devices based on the PXA255 platform, I asked about the situation, the map is present in the SD card, and the SD card and the PXA255 MMC controller between the SPI interface, which leads to the map reading speed is very slow, this situation is a serious flaw in the design, not a problem of the program, therefore, I proposed a few suggestions, let them update the program to the 5V to 1.1 DC chip. So I made a couple of suggestions and asked them to update it and try it out. Therefore, to become a good engineer, you need to grasp the system as a whole and the understanding of existing circuits, in other words, to give you a set of circuit diagrams you can finally understand how much, do not understand more than 80% of the words, that you from the good engineers are still far from it. Next is the debugging ability of the circuit and the ability to review the map, but the most basic ability or schematic design PCB drawing, logic design this piece. This refers to the hardware design engineers, hardware design engineers from above can also be divided into ECAD engineers, that is, professional drawing PCB engineers, and EMC design engineers, to help people solve EMC problems. Hardware engineers and then up is the board level test engineers, that is, C language skills are very good hardware engineers, in the circuit board debugging process through the self-written test program to verify the function of the hardware. Then it is handed over to the OS-based driver developer.

In short, the content of the hardware is a lot of very mixed, hardware that practiced will become a master, I often give people to do the next program evaluation, a lot of senior hardware engineers to design things, often by me a sentence to negate the engineers to do my point, will offend some people, but the hardware will have a lot of unknown things, so that a lot of senior hardware engineers can not understand the mind.

Then senior hardware engineers technical skills to have those things which, first of all, to master the EDA design aids such as Protel \ ORCAD \ PowperPCB \ Maplux2 \ ISE, VDHL language, to be able to use these tools to draw drawing boards to do the logic design, and then there is the interface design and review of the ability to map, and then is the ability to debugging, if you can go to the overall program design. If you can go to the overall program design of this piece, it is basically fast becoming a senior engineer.

Hardware is to rely on experience, but also rely on the accumulation of ten years to grind a sword, a hundred years to grind a needle. "