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 :
Linux Basics
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 》
Linux kernel
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)
Hardware foundation
1,《ARM Architecture and programming 》 Du Chunlei     2,S3C2410 Datasheet
System tutorial
1,《 Embedded system ―― Architecture , Programming and design 》               
 2,《 Embedded system ―― Using open source and StrongARM/Xscale processor 》 Mao Decao Hu Ximing         3,《Building Embedded
Linux Systems》
theoretical basis
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 《C Programming language 》2. Pointers on C 《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 DevelopingBug-free C Programs
《 Programming essence –Microsoft Write high quality without mistakes C 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
                    * timer
                    * 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 .



©2020 ioDraw All rights reserved
Using genetic algorithm to solve function optimization problem ( Single target )CLion Novice step on the pit :CMake project is not loaded Google says home office affects work efficiency !2021 Return to offline office in 2010 Data analysis interview experience ( Give yourself a process of carding )C Language implementation of simple minesweeping ( It's all dry goods , Novice Xiaobai must see )Python Basic knowledge !!C Language implementation of minesweeping game Valentine's Day , rose , The one in your heart ~ Operation and maintenance work Python Painting cherry blossoms