The advantages of engaging in embedded software development are:
(1) At present, people in this field are scarce at home and abroad. On the one hand, IT is difficult for non-professional IT personnel to enter this field, because the entry threshold of this field is very high, and they should not only understand the underlying software (such as operating system-level and driver-level software), but also have higher requirements for the professional level of software (embedded systems require higher space-time efficiency in software design) and understand the working principle of hardware. On the other hand, because this field is relatively new and developing too fast, many software and hardware technologies (such as ARM processor, embedded operating system, MPEG technology, wireless communication protocol, etc. It hasn't appeared for a long time, so it's hard to find anyone who can master these new technologies. Embedded talents are scarce, and their value is naturally high. The more experienced they are, the higher their price will be. In fact, embedded talents are scarce, and the fundamental reason may be that most people have unconditional contact, which requires corresponding embedded development boards and software, as well as experienced people to guide the development process.
(2) Different from application software such as enterprise computing, the work intensity of talents in embedded field is usually low (but their income is not low). For IT enterprises that engage in enterprise application software, once the system of this user is completed, it is necessary to engage in the next user. The needs and completion time of each user should be changed according to the requirements of customers, which is often tiring and repetitive. In contrast, companies engaged in embedded systems have their own product plans and act at their own pace. The developed products are generally universal and will not be modified by different customers. After a product model is developed, there will often be a long period of free time (or just some minor repairs to the software) and time to recharge. In addition, the work scope of embedded software is relatively narrow, and the professional technical scope involved is those (ARM, RTOS, MPEG, 802. 1 1, etc. After a long time, these things will become more and more experienced, and they will sell used books. A few instructions will be enough for those novices to ponder for half a year. If you are engaged in application software, maybe the next customer will change to a completely different software development platform, which will be bitter.
(3) If one day you want to start a business and make your own products, then embedding is a good idea, which is not as easy to be pirated as application software. We have a classmate who has this kind of small business himself. He didn't ask in detail what to do. He buys thousands of 8-bit microcontrollers every month, and now he has a car and a house. There is also a PDA(WinCE platform, which can be wirelessly connected to the Internet) developed for restaurants. It is said that the market is good and restaurants can let customers click on PDA to order food, which is more fashionable. The hardware design of these PDAs is usually customized by other companies (this is called "OEM"), and these are common hardware. We just design software and become our own products.
The disadvantages of engaging in embedded software development are:
(1) has a high starting point, and the technology used is often difficult. If the software and hardware foundation is not good, especially the operating system-level software foundation is not deep, it may not be suitable for this trip.
(2) The number of enterprises in this field is far less than that of enterprise computing enterprises. In particular, there are many embedded small enterprises (small enterprises have to make their own products) and few well-known large companies (embedded large companies mainly include Intel, Motorola, TI, Philips, Samsung, Sony, Futjtum, Bell-Alcatel, stmicroelectronics, Zhongjing, Advantech, Huawei, ZTE, SVA and other manufacturing enterprises). The habitual way of thinking of these enterprises is to find hard professionals such as electronics and communications.
(3) A few companies often require people with master's degree or above to engage in embedded technology, mainly based on the difficulty of embedded technology. But most companies don't have this requirement, as long as they have experience.
If students study embedded system, they should obviously focus on embedded software, especially embedded operating system, which should be our strong point. For people engaged in embedded software, the most important technology is obviously (in fact, it is written in the recruitment advertisements of many companies):
(1) Master the structure and principle of mainstream embedded microprocessors.
(2) Must master the embedded operating system.
(3) Must be familiar with the development process of embedded software and have done at least one embedded software project.
The most important courses in embedded software include:
(1) embedded microprocessor structure and application: this is a basic course of embedded hardware. As we said, embedded software is a combination of software and hardware, and people engaged in embedded software should fully understand the working principle and interface technology of ARM processor, including ARM assembly instruction system. If you don't understand the principle of the processor, how to control the hardware work, how to write the code that saves the most memory and runs at high speed (embedded software design pays special attention to space-time efficiency), and how to write the driver (drivers are all dealing with hardware)? Many companies require familiarity with ARM processors when recruiting embedded software personnel. In the future, if students come to the company to develop embedded software, the company will give you a hardware manual (xxx manual) of the equipment. You must be able to understand the most basic instructions such as memory allocation and port use (just like x86 assembly), otherwise how to design software. Some students think the embedded processor course is boring, mainly because the hardware course is abstract. Some students are not interested in ARM assembly, and think that C language is enough for embedded development. In fact, we should not just regard assembly language as a programming language, but learn assembly mainly to master the working principle of the processor. How can a person unfamiliar with assembly language write the best C code on this processor? In some key parts of embedded development, it is sometimes necessary to write an assembly, such as Bootloader (and possibly BSP). Especially in high-speed occasions (such as high-speed image acquisition and image decompression of DSP processor), assembler is used at present, although the probability of using it is much smaller than that of C. When you work in an embedded company and read the manual describing the principle, many of them may be described by assembly. This is because many hardware designers can only write or like to describe with assembly. At this time, you must know the assembler, otherwise the software and hardware personnel may not be able to communicate. Many embedded positions require familiarity with assembly when recruiting.
(2) embedded operating system course
Except WinCE, most embedded operating systems have strong real-time performance, so they can also be called real-time operating systems. People engaged in embedded systems must master at least one embedded operating system (of course, it is better to master two), which is the most critical of all embedded technologies.
At present, the most important RTOS mainly includes: the first, the traditional and classic RTOS; the most important is the Vxworks operating system and its Tornado development platform. Because Vxworks appeared earlier, it has strong real-time performance (it is said that it can respond to external event requests within 1ms), and the kernel can be extremely small (it is said that it can be as small as 8K) with high reliability, so in North America, Vxworks occupies more than half of embedded systems. Especially in systems with high real-time requirements such as communication equipment, almost none other than Vxworks. Many concepts and technologies of Vxworks are similar to those of Linux, mainly C language development. Vxworks is widely used by Bell-Alcatel, Lucent, Huawei and other communication companies when developing products. But because of the high price, Vxworks can't be used in some small companies or products. At present, many companies are switching to embedded Linux (I heard that Huawei is doing the same at present). But in any case, Vxworks will not waver for a long time. Similar to Vxworks, there are RTOS such as pSOS, QNX, Nucleus and so on.
The second category, embedded Linux operating system: In addition to being a server operating system, the most successful future of Linux is its application in the embedded field. Of course, the reason is that it is free, open source, supports many softwares and attracts many users, so the cost of embedded products will be low. Linux itself is not an operating system designed for embedded systems, nor is it a microkernel, so its real-time performance is not strong.
At present, there are two main types of Linux systems applied in the embedded system: one is the cut Linux system specially designed for embedded systems, and the most commonly used one is uClinux (without MMU function), which currently accounts for a large share of applications and can run on ARM7; The other is running on ARM 9. Generally, Linux 2.4. 18 kernel is transplanted to it, which can use more Linux functions (of course, uClinux can also run on ARM 9). Many people predict that embedded Linux will account for more than 50% of the embedded operating system, which is very important. The disadvantage is that there are too few people familiar with Linux, and the development is slightly more difficult. In addition, at present, we can find that many textbooks and many universities use ucOS/II as the real-time operating system for teaching. This is mainly because ucOS/II is simple and open source, which is very suitable for beginners to learn the principle of real-time operating system. However, due to limited functions, ucOS/II is rarely used in practice. Besides, being familiar with Linux development is not only useful in embedded field, but also helpful for developing Linux application software and deepening the understanding of operating system, which can be described as killing two birds with one stone. As far as I know, at present, both Intel and Philip are doing embedded development of ARM+LINUX, while Fujitum is doing LINUX development on its own processor. At present, in the field of embedded Linux, it is particularly difficult to find people in the following aspects: one is to transplant Linux to a new model development version; Second, people who can write Linux drivers; Third, people who are familiar with Linux kernel reduction and optimization. However, LINUX has a serious injury, that is, it does not have a friendly, convenient and beautiful interactive interface like WINDOWS, otherwise the Microsoft Empire would have been untenable.
The third category, Windows CE embedded operating system: Microsoft has also seen a huge embedded market, and MS is always the best. WinCE has been around for only a few years, but it has occupied a large market share at present, especially in the occasions where PDA, mobile phone, display instrument and other interfaces require higher requirements or develop rapidly. WinCE is very popular at present (it is said that a company selling industrial computers sells boards so well that it is too late to cut WinCE for customers). At present, WinCE is mainly version 4.2 (. NET), the development platform is mainly WinCE Platform Builder. Sometimes, some upper-level applications are developed in the EVC environment. Because WinCE development is a familiar VC++ environment, students who have studied Windows programming in our college will not have much difficulty, which is why WinCE is easily accepted by people. The development environment is convenient and fast, and with the strong technical support of Microsoft, the development difficulty of WinCE is much lower than that of embedded Linux. WinCE is most suitable for development occasions that are eager to complete and don't want to take risks with embedded Linux (people looking for embedded Linux are not so easy to find). After all, companies can't try like students, and it is more important to ensure the success of development. According to different emphases, WinCE has two special versions, one is that the MS PocketPC operating system is dedicated to PDA (handheld computer), and the other is that the MS SmartPhone operating system is used for smart phones (mobile phones with PDA function), both of which belong to WinCE platform. In the PDA and mobile phone market, besides WinCE, there are other well-known PDA embedded operating systems, such as Palm OS (famous for its early appearance) and Symbian. But under the strong impact of WinCE, how long will Palm and Symbian have in the future? It is very convenient and natural for students to learn WinCE after learning VC++. By learning WinCE, they can also understand the general development process of embedded software, which is also suitable for students who are afraid of Linux. Obviously, embedded LINUX can never replace WinCE, and it is hard to say who will take a large share in the future. After all, many people are more willing to accept the platform of MS, just as governments around the world have been pushing LINUX for a long time, but how many users can you see actually using Linux on PCs? According to my observation, LINUX is the most popular embedded platform at present, but WinCE is actually used more. Embedded LINUX may be more of a company with long-term product planning, and make long-term considerations to reduce costs. WinCE and multimedia (such as MPEG technology) are one of the more project areas that Microsoft Asia Institute of Engineering is doing at present, and people who are proficient in WinCE are badly needed in society now. Now there are WINCE's smart phones, Kingsoft, WORD, EXCEL, REGEDIT and so on. Both have smart phone versions, and MP3 and DOC on PC can be automatically converted into smart phone format when downloaded, which is very cool. You can use Windows CE to develop some necessary programs and download them to your mobile phone. Nowadays, PDA smart phones are popular in the market, and MS is always rolling in money.
Summarize the course of embedded operating system. If you think you have a deep foundation, you can study hard and learn embedded Linux. If you think you have a good VC++ foundation and want to learn embedded development quickly, self-study WINCE is a very good choice.
(3) Related fields of embedded development
If you are familiar with some major fields of embedded applications, such people are more popular with enterprises. The main related areas include:
A. Digital image compression technology: This is one of the most important and popular application fields of embedded systems. Mainly need to master MPEG encoding and decoding algorithm and technology, such as DVD, MP3, PDA, HDTV, set-top box, etc. all involve MPEG high-speed decoding.
B communication protocol and programming technology: this includes traditional TCP/IP protocol and popular wireless communication protocol. First of all, most embedded devices are connected to the local area network or the Internet, so it is necessary to master the TCP/IP protocol and its programming first, which is the basic technology that needs to be mastered first. Secondly, wireless communication is the general trend at present, so it is also important to master the wireless communication protocol and programming. Wireless communication protocols include wireless LAN communication protocol 802. 1 1 series, bluetooth, mobile communication (such as GPRS, GSM, CDMA, etc. ).
C. Network and information security technologies: such as encryption technology, digital certificate CA and various network security devices, including hardware firewalls, intrusion detection IDS, gas walls, IPS, etc. China still does not have its own advantages in this respect. It seems that our Dean Chen is developing in this direction.
D.DSP technology: DSP is digital signal processing, and DSP processor realizes digital signal processing algorithms through hardware, such as high-speed data acquisition, compression, decompression, communication, etc. Digital signal processing is a course for hardware majors such as electronics and communication, and it is best to understand software. At present, DSP talents are in short supply. If you have the foundation of courses such as signal and system and digital signal processing, it will be very helpful to learn the principle of MPEG encoding and decoding.
(4) Related hardware foundation of embedded development.
For students majoring in software engineering, it is important to engage in embedded software development, such as digital circuit, computer composition principle, embedded microprocessor structure and other hardware courses. In addition, basic software courses such as assembly language, C/C++ data structure algorithm, especially operating system are also very important. Our main purpose is to understand the working principle of hardware, but the focus should be on embedded software, especially operating system-level software, which will be our advantage. Some of our graduate students are majoring in electronics and communication, and have a good foundation in analog circuits and single chip microcomputer, which is very suitable for learning embedded systems.
Embedded itself is developed from single chip microcomputer, but single chip microcomputer has no OS, and now many embedded applications are becoming more and more complex, so that embedded operating system has to be introduced. In addition, in order to pursue higher signal processing speed, many companies now use hardware to implement some DSP algorithms, such as MPEG compression and decompression algorithms, which involves HDL digital circuit design technology and its FPGA/IP core implementation technology, and people in this field are scarce in the market at present.
Regarding the related professional problems in the embedded field, it is suggested that LZ can also go to Huaqing Yuan Jing's website to find out, or call Huaqing Yuan Jing's professional teachers. In addition, major bookstores and libraries also have best-selling embedded professional books published by Huaqing Yuan Jing. I believe it will help to find out.
I hope my answer is helpful to you.