ARM+LINUX Route , Focus on Embedded Linux Operating system and its application software development goal ：
（1） Master the structure and principle of mainstream embedded microprocessor （ It is preliminarily determined as arm9）
（2） Must master an embedded operating system （ Preliminary determination by uclinux or linux, Version to be determined ）
（3） Must be familiar with embedded software development process and do at least one embedded software project .
What are the disadvantages of embedded software development ：
（1） The starting point is high , The techniques used are often difficult , If the software and hardware foundation is not good , Especially the operating system level software foundation is not deep , May not be suitable for this trip .
（2） The number of enterprises in this field is far less than that of Internet enterprises . At the same time, the salary will be lower .
（3） There are a few companies that often want people with master's degree or above to engage in embedded technology , It is mainly based on embedded system . But most companies do not have this requirement , As long as you have experience .
（4） Strong platform support , It's hard to change platforms .
Method steps ：
1, Basic knowledge ：
objective ： Can understand the working principle of hardware , But the focus is on embedded software , Especially operating system level software , That will be our advantage .
： digital circuit , Principles of Computer Organization , Embedded microprocessor architecture . assembly language ,C/C++, Principles of compilation , discrete mathematics . Data structure and algorithm , operating system , software engineering , network , database .
method ： There are many subjects , But they are all relatively simple foundations . Not necessarily all , Optional courses are available .
Focus on books ：the c++ programming language, data structure -C2.
2, study linux：
objective ： In depth grasp linux system .
： use linux—〉linxu System programming development —〉 Driver development and analysis linux kernel . Look first 《 deep 》, That's the principle . After watching it several times , see 《 scenario analysis 》, In depth comparison , The two books intersect , Deep is the key , Love is the eye . The analysis is that 0.11 edition , Suitable for learning . Finally, in-depth code .
Focus on books ：linux Complete analysis of kernel ,unix Environment advanced programming , In depth understanding linux kernel ,linux Scenario analysis of kernel source code .
3, Learning embedded linux：
objective ： Master embedded processor and its system .
method ：（1） Structure and application of embedded microprocessor ： direct arm The principle and compilation are enough , Don't repeat x86.
（2） Embedded operating system class ：ucOS/II simple , Open Source , You can get started . After that, we will study deeply uClinux.
（3） There must be a development board （arm9 above ）, You can take part in the training if you have conditions （ Rapid progress , Can you make some friends ）.
Focus on books ： Mao de Cao 《 Embedded system 》 And others arm9 Manual and arm Assembly instructions, etc .
4, In depth study ：
A, Digital image compression technology ： The main thing is to master MPEG,mp3 Equal coding and decoding algorithm and technology .
B, Communication protocol and programming technology ：TCP/IP agreement ,802.11,Bluetooth,GPRS,GSM,CDMA etc .
C, Network and information security technology ： Such as encryption technology , digital certificate CA etc .
D,DSP technology ：Digital Signal Process,DSP The processor realizes the digital signal processing algorithm by hardware .
explain ： Too many details have not been explained , It can be adjusted according to the actual situation . The point is 1,3, It doesn't have to be done exactly in order . For learning c++, the reason being that c++ It's not just a language , A tool , She is also an art , A culture , A philosophical idea , But it's not something to show off . about linux kernel , Learning programming , It's also necessary to read some good code .
be careful ： We should learn to raise one against many , There is a strong foundation , A lot of things can be easily seen . Want to be a qualified programmer , The prerequisite is to be proficient in at least one programming language , And have good logical thinking . We must combine theory with practice . Don't just study technology , It's hard to squeeze in time, though , But there's still room to perfect other hobbies , Like the universe , Administration , Psychology , music , game , Science fiction film . There are still some things that we don't want to do, but we have to do ! Technology is programmed and reprogrammed . Never dream of reaching the sky step by step , Don't be impetuous , Don't think it's a long way to go . It's programming and programming , I'll program after that , Reprogramming ! When the opportunity comes, start a business （ Don't believe in miracles , It's hard to succeed if you start a business blindly , Even if it is successful, the development space is not necessarily very large ）.
Embedded book recommendation ：
1,《Linux And Unix Shell Programming Guide 》
C Language foundation
1,《C Primer Plus,5th Edition》【 beautiful 】Stephen Prata 2,《The C
Programming Language, 2ndEdition》【 beautiful 】Brian W. Kernighan DavidM. Rithie（K &
R）3,《Advanced Programming in the UNIX Environment,2nd Edition》
4,《 Embedded Linux Application development details 》
1,《 In depth understanding Linux kernel 》（ Third Edition ） 2,《Linux Scenario analysis of kernel source code 》 Mao Decao Hu Ximing
R & D direction
1,《UNIX Network Programming》2,《TCP/IP Detailed explanation 》3,《Linux Kernel programming 》4,《Linux Device driver development 》（LDD）
1,《ARM Architecture and programming 》 Du Chunlei 2,S3C2410 Datasheet
1,《 Embedded system ―― Architecture , Programming and design 》
2,《 Embedded system ―― Using open source and StrongARM/Xscale processor 》 Mao Decao Hu Ximing 3,《Building Embedded
1,《 Introduction to Algorithms 》2,《 data structure （C Language Edition ）》3,《 Computer organization and architecture ? performance analysis 》4,《 Deep understanding of computer systems 》【 beautiful 】Randal E.Bryant
David O”Hallaron means 5,《 operating system ： Essence and design principle 》6,《 Principles of compilation 》7,《 Data communication and computer network 》8,《 Principle and application of data compression 》
C Language book recommendation
1. The C programming language 《Ｃ Programming language 》2. Pointers on C 《Ｃ And pointer 》3. C traps and
pitfalls 《Ｃ Traps and defects 》4. Expert C Lanuage 《 expert Ｃ programming 》5. Writing Clean Code—–Microsoft
Techiniques for DevelopingBug-free C Programs
《 Programming essence –Microsoft Write high quality without mistakes Ｃ Procedure tips 》6. Programming Embedded Systems in Cand
C++《 Embedded system programming 》7.《C Language embedded system programming practice 》8.《 high-quality C++/C Programming Guide 》 Lin Rui
Code as much as possible , Learn well C, We can't just focus on C itself . algorithm , Architecture is very important .
Specific implementation route ：
1, Lay a good foundation for embedded software programming
This stage focuses on laying a good foundation for embedded software programming , include
* study Linux The basic application of the system
* Linux Common commands for
* C Fundamentals of language programming
* Common data structure
especially C Understanding and application of pointer in language . The main purpose of this stage is to learn programming language , development environment , And develop their own programming thinking , It lays a good foundation for further study of embedded development .
2, study ARM Architecture programming
This stage is the real embedded programming , First of all, we have to choose an embedded system CPU And an embedded development platform , at present ARM
Embedded CPU Most widely used , This stage focuses on learning embedded technology CPU Bare metal programming based on FPGA ：
* Familiar with interruption
* Serial port
* NAND FLASH
* network controller
* LCD screen , touch screen
* I2C equipment
* SPI equipment
The hardware working principle of the common embedded peripherals , And how to use it C Language programming , Control the hardware . This stage in addition to learning to hardware programming , Also need to learn the knowledge of embedded hardware , But for embedded software engineers , The key is to learn how the hardware works , On the basis of mastering the working principle of hardware , Program and control the hardware . This is different from the emphasis of hardware engineers . At this stage, the corresponding school curriculum mainly includes analog circuit , digital circuit , Principle of microcomputer and single chip microcomputer . The focus of this stage is to see CPU Chip manual , Most of the reference books are also translations of chip manuals .
3, Construction of learning embedded system
In this stage, we mainly study the construction of embedded system with operating system , Including the start-up process of the system
* Bootloader Workflow of
* UBOOT Compilation of
* Cutting and transplanting , Embedded Linux The tailoring of kernel , Transplantation and compilation
* Customization of embedded root file system
* BootLoader, Burning and writing of kernel and root file system
The main purpose of this stage is to master the construction and burning process of embedded system with operating system , And have an overall understanding of the overall composition of embedded system software , It lays a solid foundation for us to learn Embedded Application and driver development .
4, Learning embedded Linux Application development
In this stage, we mainly learn the embedded technology of the upper layer Linux Application development , include
* be based on Linux Multiprocess
* Multithreaded network
* Files and directories
Master embedded technology Linux Application development technology based on virtual reality .
5, Learning embedded Linux Driver development
At this stage, we mainly study the underlying embedded system Linux Development and design of device driver , include
* Common character device drivers
* Block device driver
* LCD Device driver
* Touch screen device driver
And the core technology of driver development
6, Complete a comprehensive project
The key of embedded technology lies in the combination of theory and practice , We should be able to apply what we have learned , After completing all the above stages of knowledge learning , Have you ever learned , Can I use it , Can we apply the knowledge to solve the problems in the actual development , We need to complete a comprehensive embedded training project , for example ：
Based on Embedded System Linux Platform based aircraft , Based on Embedded System Linux Intelligent robot based on the platform , These projects have integrated the application of embedded development , Drive and QT Development technology .