I don't know if I can engage in embedded systems in the future. I have a good idea of reading the article. I will post it later. The arm + LINUX route focuses on the embedded Linux operating system and its application software development goals: (1) master the structure and principle of mainstream embedded microprocessor (initially set as ARM9) (2) You must master an embedded operating system (the initial version is uClinux or Linux, and the version is to be determined) (3) be familiar with the embedded software development process and build at least one embedded software project. The benefits of developing embedded software are: (1) people at home and abroad are scarce. This field has a high entry threshold, so it is difficult for non-professional IT staff to break into this field; on the other hand, it is because this field is relatively new and is growing too fast, and most people have unconditional contact. (2) Unlike enterprise computing and other application software, the work intensity of talents in the embedded field is usually lower (but the income is not low ). (3) If you want to start a business and build your own products, embedded systems are not as vulnerable to piracy as application software. The hardware design is generally customized by other companies (this is called "OEM": OEM), all of which are general-purpose hardware. We just need to design the software and turn it into our own product. (4) Interest. This is the most important thing. Disadvantages of developing embedded software are: (1) The entry point is relatively high, and the technologies used are often difficult. If the hardware and software foundation is poor, especially the operating system software skills are not deep, it may not be suitable for this trip. (2) The number of enterprises in this field is much smaller than that in enterprise computing. (3) There are a few companies that often require masters or above to engage in embedded systems, mainly based on the difficulty of embedded systems. But most companies do not have this requirement, as long as they have experience. (4) It is difficult to change the platform because of its strong reliance. Origin of interest: 1. The concept of success is different. If you don't trust your life, It is my success. 2. I like thinking and challenge logical thinking. 3. c C is a language that gives full play to the limits of thinking. Some aspects of the spirit of C can be summarized as follows: Trust programmers. Do not stop programmers from doing what they need. Keep your language short and lean. One method is used for one operation. Make it run fast enough, although it cannot be guaranteed to be portable. 4. I like underlying development and hate VB development tools (not to say that VB is not good ). 5. the development prospects are good. It is suitable for start-ups and an engineer who doesn't want to die. Procedure: 1. Basic Knowledge: Objective: To understand how the hardware works, but focusing on embedded software, especially operating system software, is my advantage. Subject: digital circuit, computer composition principle, embedded microprocessor structure. Assembly Language, C/C ++, compilation principle, and discrete mathematics. Data structures and algorithms, operating systems, software engineering, networks, and databases. Method: Although there are many subjects, they are simple foundations and most of them are mastered. You can select an optional course based on your needs. Major books: The C ++ programming language (no time to read), data structure-C2. 2. Learn Linux: Objective: to gain an in-depth understanding of the Linux system. Method: use Linux-> linxu system programming and development-> to develop and analyze the Linux kernel. Let's take a look at the principle of deep learning. After reading the analysis several times, you can see the situation analysis in comparison. The two documents are cross-cutting. The depth is the outline, and the emotion is the goal. Analytics is the 0.11 version, suitable for learning. Finally, go deep into the code. Major books: full analysis of Linux kernel, advanced programming of Unix environment, deep understanding of Linux kernel, scenario analysis and source generation. 3. Learning embedded Linux: Objective: To master the embedded processor and its system. Method: (1) embedded microprocessor Structure and Application: directly arm principle and Assembly, do not repeat x86. (2) embedded operating system: UCOS/II is simple and open-source for entry. Then we will study uClinux in depth. (3) You must have a Development Board (later than ARM9.). If you have the necessary skills, you can participate in the training (improving rapidly and meeting some friends ). Main books: Mao decao's "embedded system" and other arm9-manuals and arm assembly instructions. 4. Deep Learning: A. Digital Image Compression Technology: Master MPEG, MP3, and Other encoding and decoding algorithms and technologies. B. communication protocol and programming technology: TCP/IP protocol, 802.11, Bluetooth, GPRS, GSM, CDMA, etc. C. network and information security technology: such as encryption technology and digital certificate ca. D. DSP technology: digital signal process. The DSP processor implements digital signal processing algorithms through hardware. Note: too many details are not described and can be adjusted according to the actual situation. The focus is on 1 and 3, which do not have to be done in order. The reason for learning C ++ is that C ++ is not just a language, a tool, but also an art and a culture, it is a philosophical concept, but it is not used to show off things. For the Linux kernel, it is also necessary to learn programming and read some excellent code. Note: you must learn how to give it a lot and have a powerful foundation. You can simply look at a lot of things. To be a qualified programmer, you must be proficient in at least one programming language and have a good logical thinking. We must combine theory with practice. Do not study technology. Although it is difficult to squeeze out time, you still need to leave some room to improve other hobbies, such as the universe, sketch, machinery, and management, psychology, games, science fiction movies. There are some other things that do not want to do but must be done! The technology is programmed through programming. Never dream of entering the sky in one step, do not be impetuous, do not feel that the road is on the road. Instead, we need to program, program, and program! Wait for the opportunity to start a business (do not believe that there is a miracle, blindly start a business is difficult to succeed, even if the development space is not necessarily great ). Embedded Book recommendation Linux Basics 1. Linux and Unix shell programming guide C language basics 1. "C primer plus, 5th edition" [us] Stephen Prata 2. The C programming language, 2nd edition [us] by Brian W. kernighan David M. rithie (K & R) 3. Advanced Programming in the Unix environment, 2nd edition (apue) 4. Detailed description of Embedded Linux Application Development Linux Kernel 1. deep understanding of Linux kernel (Third edition) 2. Mao dejian, author of Linux kernel source code Scenario Analysis R & D direction 1. UNIX Network Programming (UNP) 2. Explanation of TCP/IP 3. Linux kernel Programming 4. Linux device driver development (LDD) 5. Yang zongde, "Linux Advanced Programming Design" Hardware Basics 1. Du chunlei, ARM architecture and Programming 2. S3C2410 Datasheet Basic English 1. Professional English for computer and communication System tutorial 1. Embedded System-architecture, programming and design 2. Embedded Systems-using open source code and strongarm/XScale Processors 3. Building embedded Linux systems 4. Principle and instance development of embedded ARM system by Yang zongde Theoretical Basis 1. Introduction to Algorithms 2. Data Structure (c) 3. Computer Organization and architecture? Performance Analysis 4. Understanding computer systems in depth [us] Randal E. Bryant David O '''allaron 5. Operating System: essence and design principle 6. compilation principles 7. Data communication and computer network 8. Data Compression Principles and Applications C language book recommendation 1. The C programming language C Programming Language 2. pointers on C and pointer 3. c traps and pitfalls C traps and Defects 4. Expert C Lanuage Expert C Programming 5. Writing clean code ----- Microsoft techiniques for developing bug-free C Programs Essence of programming-Tips for Microsoft to write high-quality and error-free C Programs 6. programming embedded systems in C and C ++ Embedded System Programming 7. C language Embedded System Programming Practice 8. Lin Rui, high quality c ++/C Programming Guide To learn C as much as possible, you should not only focus on C itself. Algorithms and architecture methods are all important. |