Php or embedded

The prospect of embedded system is certainly better. PHP is generally simple and the salary is not that high. Embedded system is undoubtedly one of the hottest and most promising IT application fields. Embedded system is used in some special equipment. Usually, the hardware resources of these devices (such as processor, memory, etc.). ) are very limited, and are sensitive to cost, sometimes demanding real-time response. Especially with the intelligentization of consumer appliances, embedded is more important. Such as mobile phone, PDA, electronic dictionary, videophone, VCD/DVD/MP3 player, digital camera (DC), digital video camera (DV), USB flash drive, set-top box, high definition television (HDTV), game machine, intelligent toy, switch, router, numerical control equipment or instrument, automotive electronics, home appliance control system, medical care.

Embedded system is a combination of software and hardware, and there are two kinds of people engaged in embedded development.

One is hardware major, such as electronic engineering and communication engineering. They are mainly engaged in hardware design, and sometimes they have to develop some underlying software that is most closely related to hardware, such as BootLoader, board support package (like PC BIOS, which drives hardware down and supports operating system up), and the most elementary hardware driver. Their advantage is that they are very clear about hardware principles, but their disadvantage is that they are better at defining various hardware interfaces, but they often cannot cope with complex software systems (such as embedded operating system principles and complex application software).

The other kind is software and computer professionals, who are mainly engaged in the development of embedded operating systems and application software. If we software learners have a good grasp of hardware principles and interfaces, we can also write BSP and hardware drivers. After the embedded hardware is designed, all kinds of functions are realized by software, and the value-added of embedded equipment depends largely on embedded software, which accounts for the most important work of embedded system (at present, many companies have given the hardware design package to specialized hardware companies, and the slightly more complicated hardware is designed by companies in Taiwan Province Province or abroad, so the domestic hardware design strength is very weak, and many embedded companies are only responsible for developing their own software. Because they all know that the difference between embedded products is largely in software, which is the most "fancy"), so we who engage in software don't have to worry about our position in the embedded market at all. The more intelligent devices and complex systems, the more important the key software, which is the current trend.

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, and people who master these new technologies are of course hard to find. 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. Qixing, a company in the School of Civil Engineering, has developed a handheld PDA called "Project E" (there is an advertisement in front of the south campus). Construction technicians can use this PDA to carry out civil engineering calculations such as civil engineering budget estimation on site, which is said to sell well. I know a university teacher who developed a PDA(WinCE platform, which can access the Internet wirelessly) for restaurants. According to him, it sells well and restaurants can let customers click on PDA to order food, which is more fashionable. I remember that a group of students in Class 2+2 of Grade 00 designed a powerful menu system with VC++ as a course item when they were studying Windows programming course. At that time, I really wanted to suggest that they make this software into a PDA, which is estimated to have some sales (McDonald's in the south square of Shanghai Railway Station uses a beautiful PDA to order food for users, just like a decent one). The hardware design of these PDAs is usually customized by other companies (this is called "OEM"), and they are all common hardware. We just design software and become our own products.

What basic knowledge do you need to learn in learning embedded system?

First of all, there is no doubt about the C language. For those who are engaged in embedded software or hardware development, it is necessary to master C language, especially for those who are committed to embedded software development in the future. Now most of them use C language. Can you say that you can't master it? As for how to learn C language, I think everyone has his own way to learn these basic knowledge. The key is to study, read books or watch some videos online. Many people will ask, how to learn C language? I don't think there is a standard answer. I think at least after you understand some basic concepts, you should write code, and the most important thing is to start work. If you have problems when you start work, you can take turns studying and checking textbooks. At that time, you can't get the harvest by reading books.

Secondly, you should know something about the operating system, which will definitely help you understand the hardware and software. We need to understand the management of the system, such as processes, threads, how the system allocates resources and how the system manages hardware. Of course, these can be read thoroughly without reading a book. If you can't understand them at the moment, it doesn't matter. Read more books and combine your future project experience, and you will have a better understanding.

It is also necessary to learn the programming of embedded systems, such as linux or wince, which is very helpful for future application programming. Of course, if you are a mobile phone user, you can learn operating systems such as MTK, Saipan and Android. Android is the future development trend, and it is very popular now. Android is also packaged based on linux system, so it is recommended to learn linux first.

Also, I want to learn from MCU or ARM or MIPS. Many people say that I have no experience in single chip microcomputer, can I learn ARM directly? I think that's no problem at all. Of course, if you have studied single chip microcomputer, it is best. It will be easier to learn ARM in the future.

Finally, if you know all the above knowledge, you should read some excellent codes, such as learning the source code of UBOOT in combination with the arm chip manual and understanding the minimum system development, which is very helpful for your entire embedded development. If possible, you can also learn the source code of linux. Of course, if you look directly at the code of 2.6, I think you will be very painful. You can look at earlier versions of linux code, such as 0. 12 code. Although the sparrow is small, it has all aspects. If you read it all, then I think you are a very successful embedded engineer.

As for the knowledge mentioned above, how to learn it? Everyone should find his own best method, and the so-called best method is the one that suits him best. Many people can't read books, so let's watch videos. You should also choose the video, you can't just watch it, you should choose it, you should choose it. That's how I got here, but I'm lazy, I can't read, and I want to sleep when I read, so I've been watching videos for years, and now I'm successful in math, but I can't be said to be an expert.

On the Internet, I saw someone summarize their own learning of embedded video, embedded series practice and video tutorial. You can have a look at the website/embedvideo.htm. I read it carefully and found it very good. I wanted to tidy it up, but my computer's hard disk space is only 40G. There is no way, there is not enough time, and I am unable to help him advertise. Although it costs money, I think it is still good, at least it doesn't need to be cleaned up and it doesn't cost a lot of money. Think about when I should start teaching myself. There were few video resources at that time. I spent at least several thousand dollars on books and videos, but I think it's worth it. At least I have earned a lot of knowledge now.

Finally, I hope this article will be helpful to friends who love embedded and want to devote themselves to embedded development. Give you a simple and clear sentence, persistence is victory, persistence is the most important, and you can also see how to persist in embedded learning!

Finally, I hope that the landlord will choose embedded system and become an expert in embedded system as soon as possible.