Embedded career Planning

Source: Internet
Author: User

Embedded Career Planning
(Most of the content reproduced, self-summary )

first, the concept of embedded systems Focus on understanding the concept of "embedding"

mainly from three aspects to understand.
1, from the hardware, will be based on CPUthe parts of the enclosure, integrated intoCPU inside the chip , such as early-X86the computer under the architecture,CPUjust have the function of the arithmetic and accumulator, all chips to build external bridge to expand the realization, like the serial port and so on external16C550/2the serial controller chip is realized, and the current serial controller chip is already integrated intoCPUinside, there'sPCvideo card, and most embedded processors come withLCDcontroller, but in a sense the equivalent of a video card. More high-endARMclassIntel XScaleArchitecture ofIXPNetwork ProcessorCPUInternal IntegrationPCIcontroller (can be configured to support4aPCIfrom the device or with its ownCPIfrom the device), also integrated3aNPENetwork processor engine, two of which corresponds to twoMACaddress, which can be used for gateway switching, while the otherNPENetwork processor engine supportDSL, just add another one outside.PHYThe chip is able to achieveDSLInternet function. IXPThe highest frequency of the series can be achieved1.8G, Support2GMemory,1GxTenor10Gx1the Ethernet port orFebre Channelof the optical channel. IXPthe series should be targeted based onARMsystem structure by theIntelafter the integration intoXScaleThe highest processor in the kernel.
2, from the software, is in the custom operating system kernel, the application is selected, compiled to download the kernel to ROM the . The application component that is selected when customizing the operating system kernel is the "embedding" of the software, such asWinCEwhen the kernel is customized, there is a choice, which isWordpad,pdf,mediaplayand so choose, if we choose, inCEafter startup, you can find these things in the interface, if it was previouslyPCAdmiral'sWindowsoperating system, most of the things we need to re-install new.
3, the software kernel or application file system and other things burned into the embedded system hardware platform ROM a true "embed" is implemented in the

the definition above is that I am in 6 , 7 years ago to the embedded system to focus on the definition of understanding, the definition of the book there are many, but in this area, who dare not say that their definition is very accurate, including those experts and scholars, after all, the embedded system is a comprehensive subject under the computer category

Second, the embedded system of stratification and professional classification.
Embedded System is divided into 4 layers, hardware layer, drive layer, operating system layer and application layer.

   1, hardware layer, is the fundamental of the entire embedded system, if now the microcontroller and interface this piece is very familiar, and can useCand assembly language programming, the hardware layer from the embedded system is relatively easy to walk, the hardware layer is the basis of the driving layer, a good driver is to be able to read the hardware circuit diagram and self-completion CPLD logical design, but also to the operating system kernel and its scheduling is quite familiar. But the hardware platform is the foundation, the increment also relies on the software .  hardware layer is suitable for, electronics, communications, automation, Mechatronics, information engineering professionals to engage in, the need to master the basic knowledge of a single-chip microcomputer principle and interface technology, microcomputer principles and interface technology,Clanguage.
2, drive layer, this part is more difficult, drive engineer not only to be able to read the circuit diagram also to be able to the operating system kernel is very proficient, so that its written driver in the system call, not exclusive operating system time slices, and to other tasks can not move, do not understand the operating system kernel architecture and real-time scheduling, There is no good driver writing style, according to most of the books said to add the way of driving, many people can do, but may not even a primary driver engineer level can not reach, so the written drive in the application call is likeWindowsafter we open a program to run, and then open a program, either interrupt the previous program, or wait for a while to run the program that was opened later. want to be a good driver not three or four years of foundation, operating system kernel does not study the last few, not too easy to succeed, but its salary in the embedded system four layer is the highest. drive layer is suitable for electronics, communications, automation, Mechatronics, information engineering, especially computer-biased architecture professional people to engage in, in addition to the hardware layer of the basic disciplines, but also the data structure and algorithms, operating system principles, compiling principles should be very proficient understanding.

    3, operating system layer, on , or write an operating system that lacks arms and legs, most of which is done by a driver engineer. The operating system is responsible for the debugging of system tasks, disk and file management, and the real-time of embedded system is very important. It is said that xp OS is Microsoft input 300 > Man, it took two years to get it done. The total hour is 600 hopen

4, the application layer, relatively easy, if you will be under the Windows programming interface function calls, to the operating system is only the compilation and development environment has a corresponding change. This is true if the Jave aspect of the programming is involved. Embedded systems involve algorithms that are handled by people with specialized algorithms, which do not have to be attributed to embedded systems. However, if the embedded system is involved in embedded database, embedded system-based network programming and protocol application development based on a certain application level (such as SIP -based, Astrisk) is more complicated and difficult.



third, practice good basic skills
The embedded system specialty is a comprehensiveComputer hardware technology, computer software technologyas wellElectronic circuit TechnologyA comprehensive discipline involving a wide range of connotations and knowledge, including:digital circuit, analog circuit, computer composition principle, SCM Foundation, C Language Foundation, operating system, data structure, compiling principle, computer control, networkand other knowledge.
Before you really learn about embedded development,first of all to lay a good foundation. The most important is the C language Foundation, digital circuit, computer composition principle of the course。 For the C language, you can at least write a program to debug a 3 to 500 line, you can understand the basic grammar rules of C language, the use of basic statements, understand the concept of pointers and flexible use of various pointers.
Computer composition principle to be able to understand the components of a computer system, the structure of computer systems, understand the system bus, understand the relationship between processor and computer peripherals, processor and computer peripheral is how to coordinate the work to complete a certain function, computer software and hardware is how the division of labor to complete a task, Understanding software is controlled by registers to control the hardware.
Digital Circuit, Analog circuitTo understand the concept of its basic principles, can read simple analog, digital circuit schematic diagram. Understand the concept of registers, timing in digital circuits, and understand chip manuals and timing diagrams. For other basic courses, focus on understanding some of the basic concepts, how to use and so on.
For students majoring in electronics, automation, communications, and computer science, most of the above courses are included in the major or professional courses offered in the sophomore and junior years. Because of lack of practice, may not be very deep, but some basic concepts and basic knowledge should still have some understanding, for some weaknesses, self-reinforcement learning, basically already have the foundation of learning embedded development.in the embedded basic learning stage, the most important is the C language and the single-chip computer Foundation, it is best to use C language to develop a small microcontroller program, such as the C language to achieve a single-chip computer and PC serial communication, C language control LED display, C language control digital display and other small programs. The learning tools required during this period are the SCM 51 learning Development Board. Recommended Infineon's OK-51 learning Development Board. Detailed reference:

Four、 Embedded Linux application development
Basic knowledge of embedded development after learning, this time you have a certain embedded development foundation, can be based on the SCM embedded system design. Microcontroller programming itself is embedded programming, but here we just put the SCM development as the basis for the development of embedded systems, not the monolithic integrated development as a real embedded system development, where our embedded system development refers to the embedded platform with the operating system application and driver development, Specifically, the development of embedded Linux platforms.
SCM Development in a long time is very popular, now in some relatively simple system on the microcontroller is also very extensive, with the cost of hardware continues to reduce, in some more complex embedded devices are generally used embedded Linux operating system, embedded Linux platform for Development, This can greatly improve the efficiency of embedded development, improve the stability and reliability of the system, reduce development costs. Because Linux is an open-source operating system, you can read the Linux kernel to understand the kernel implementation mechanism, if necessary, you can even modify the kernel source code to improve the performance of the system, at the same time, the global participation in Linux development team is very large, Online has a large number of embedded Linux development data and source code, many of the functions you need to achieve in the online basic can find the relevant source, reference to others write source code, this can greatly improve their efficiency and technical ability, in recent years, with the participation of more and more people in the development of Linux, Linux system stability, real-time performance has been greatly improved, Linux system, whether on the server or embedded device platform are more widely used, now including Huawei, ZTE, Lucent's major communications giants are beginning to move their device's underlying platform from the VxWorks operating system to the Linux system , it can be said that embedded Linux is a direction of embedded technology development, is a banner of embedded technology.based on the above reasons, my advice is to learn embedded development, learning Embedded Linux development, relative to wince and other embedded platforms, you can really learn more things, learn the essence of embedded technology, while he is in line with the development of the embedded industry direction, Not easy to be eliminated by the rapid development of technology。
With the foundation of embedded development, and know why we want to learn embedded Linux development, then we will start to start learning, then how to start learning embedded Linux development, where to start?

Doing everything has a gradual process, and learning embedded Linux is the same. After having a certain embedded Development foundation, learning the embedded Linux development is a more suitable entry point isstarting with the development of embedded Linux applications, that is, not to care about the embedded hardware platform, not to care about Linux's underlying drivers, first focus on the existing embedded Linux platform for embedded Linux application design and development. Learning Embedded Linux development is not to read a book can learn, need to practice, programming debugging; Because embedded development differs from normal PC or server-based application development,embedded development applications are written to run on an embedded board or board, so first you need to buy yourself a development Board, now popular embedded development boards are based on Samsung's ARM9 cpus3c2440, cost-effective, here I recommend the use of FL-2440 high cost-effective ARM9 learning Development Board, Development Board resources Rich, stable, with a large number of experimental source, video tutorials and experimental guidance book.
With the Development Board,began to learn embedded Linux development environment building, embedded Linux development model, Linux kernel porting and file system, embedded Linux application porting, embedded Linux multi-process, multi-threaded application design, embedded Linux network programming, if you are interested in embedded database or graphics software development, you can learn more about embedded Linux database development or the design of embedded Linux graphics application software based on Qt.Each chapter of the study will be related to experiments to verify what you learn from the book, while improving the ability to write code, debugging programs.This process is based on the different learners ' basis, which takes about 1 ~ 2 months. After finishing these courses, you have the ability to reproduce the application design and development of embedded Linux platforms, to some embedded software companies, to be able to perform the upper level application development on the existing embedded Linux platform. But for now you are not able to develop embedded Linux systems and drivers, which means that you can only develop applications on a built-in embedded Linux platform, and you don't have the ability to rebuild an embedded Linux platform based on your actual needs. To be able to rebuild an embedded Linux hardware and software platform based on actual needs, this is the next stage of learning, embedded Linux system and Driver development.

five, embedded Linux system and drive development

With the Foundation for developing applications on embedded Linux platforms, you haveWith Linux, Linux has a certain understanding of the interface and system calls provided by the application, knows how to use the functionality provided by Linux for application development, and knows how to use device drivers for application programming, with this knowledge, You can learn more about Linux system principles and Linux-based driver development, Linux kernel cropping, file system construction, bootloader , and so on.。
To learn more about embedded Linux systems and Driver development, there are many things to learn, including computer software, hardware, operating system knowledge. At this point you can refer to the following learning ideas, because the embedded Linux system and drive development, and the underlying hardware is very close, soFirst we start with learning about embedded hardware, including: ARM architecture, s3c2440 microcontroller interface design, clock system, LCD screen interface, storage controller and system storage space allocation, NAND Flash interface and NOR flash interface, etc.。 After a certain understanding of the embedded system hardware, you can thenbegan to learn bootloader, understand the concept of bootloader, function, and principles, focus on mastering the use of u-boot and transplant. The next step is to learn the embedded Linux kernel mechanism, analyze the embedded Linux source composition, kernel module mechanism, kernel process management, memory management mechanism, Linux interrupt system, Linux kernel portingsuch as With the foundation of the kernel,you can learn the embedded Linux device driver development, focus on character device driver development, LCD screen device driver development, touch screen device driver development, USB device driver development, network card device driver development。 After learning these points and verifying the relevant experiments, the development of embedded Linux system and driver is almost enough to be able to drive the development of most Linux-based platforms. After learning these points, according to the different situation of students,It usually takes three months to half a year .。 Through this stage of learning, you have a certain foundation in the field of embedded Linux development, is no longer known as a rookie, has entered the ranks of embedded Linux development experts

Vi. Further Heights
In-depth understanding of the embedded kernel and driver development, at this time to write what the driver for you have no problem, some of the basic problems in the development process is difficult to fail you. This is what you mightwant to optimize the performance of the system, such as real-time, improve the system's startup speed, or optimize the system's memory management mechanism, to modify the kernel core mechanism of the realm, you need to go deep into the Linux kernel source, refer to "Linux Source depth Analysis", "Linux Scenario Analysis" such as the Linux source analysis of books, in-depth understanding of the implementation of Linux parts of the mechanism and principles, as well as possible problems。 You can only make better improvements by understanding the existing code and implementing mechanisms. If you can reach this state, you is already a master in the ace, can laugh proud of the warlords

Seven, misunderstanding
first, the whole body into learning Desktop or Server version Linux system
Linux Desktop environment is just a development tool of embedded Linux, development environment only. Our goal is not to learn the configuration and use of Linux servers, the Advanced configuration and use of Linux servers is another area that is not part of the embedded Linux discussion. We do embedded Linux development, just as a Linux desktop environment as a tool, in the Linux desktop environment to run embedded Linux development tools, such as the GCC compiler, make tools to develop our embedded Linux applications, for embedded development engineers, There is no need to spend so much effort and time studying Linux desktop and server applications, as long as you can understand the most basic operations. The graphical interface of the desktop Linux system is now quite good, with the same ease-of-use performance as windows, such as Ubuntu, where many operations can be done in a graphical interface, there is no need to remember every Linux command. Familiar with the use of Linux desktop system and basic operational commands, scheduled 1-2 days to learn the basic can be mastered.

Second, directly read the Linux kernel source code
many want to learn Linux, in the case of Linux is what thing, do not use the situation to read the Linux kernel source code, spent a lot of time to read the "Linux Source depth Analysis", "Linux scenario Analysis," and other books. This result is likely to look dizzy, unintelligible, finally can only give up. This is a misunderstanding of the students to learn embedded Linux, after a certain embedded Linux Development Foundation, with a certain purpose to read the Linux source code, which can greatly improve your technical ability, but you do not have any foundation, Linux does not know a bit of the case to read the Linux kernel source code, the same as the Ishing, and finally can only hit a bruised and bruised.


Third, for beginners, do what you can, do not think that the driving layer of wages as the direction, to combine their own characteristics, embedded system four levels on that level are there are high-level, of course, tall people also correspond to higher wages, I do the hardware layer, the previous monthly salary of personal income tax to be deducted nearly 3 thousand dollars, of course I act as the engineer's role, on the one hand act as the supervisor and the role of the person, two positions I do alone, but the work time is those. Hardware this may be with me PK Few people, just let me get so much wages

Iv. development system Selection.

many ARM Beginners want a system that they can use, but they live with a mistaken understanding that the higher the processor version, the better the performance, as many people think ARM9 with the ARM7 Well, I think for beginners in this regard to get started should also be sensible, the choice of the development system ultimately depends on the direction of the embedded system, is 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, regardless of whether it is a driver or application, then of course , the higher the processor performance better, but this thing self-taught, there is a lot of difficulties, not months or half a year or two years in the past can be done.


The above is a combination of my own embedded learning experience and embedded training experience to summarize some of the embedded learning methods and procedures, this is just the author of the embedded learning some ideas, I hope to those interested in learning embedded Linux and do not know where to start learning from the students have some help. Of course, everyone, the basis of each classmate, all aspects of the situation are not the same, everyone has their own suitable way of learning, this article summarizes some of the learning methods and ideas for reference only, I hope we can find suitable for their own learning embedded development approach, early access to embedded development door.


Read (32) | Comments (0) | Forwards (0) |0

Previous: No

Next: Embedded C-Pen questions (finishing)

Related Popular articles
    • Welcome Miss embedded in Chinaunix bo ...
    • SQLite database
    • Welcome to the embedded recruitment in Chinaunix bo ...
    • Welcome Soldier Brother _ Embedded blog in Chinaun ...
    • Welcome to Le d embedded in Chinaunix blog ...
    • sHTML is what _ssi have what use ...
    • String manipulation in the shell
    • The principle of Kalman filter explains ...
    • About "Error in Java: Not found or ...
    • Special characters in the shell
    • Linux DHCP Peizhi ROC
    • Soft links to Unix files
    • What does this command mean, I'm new ...
    • What does sed-e "/grep/d" mean ...
    • Who can help me solve Linux 2.6 10 ...
Leave something to the owner! ~~ Comment on the hot topic

Embedded career Planning

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.