linux+ARM learning route

linux+ARM learning route

The learning steps are as follows:
1. Linux basics
Install the Linux operating system
Linux file system
Linux common commands
Linux startup process detailed explanation
Familiar with Linux services Able to install the Linux operating system independently
Be able to use the basic commands of the Linux system proficiently
Know the common services of the Linux system Install the Linux operating system
Linux Basic command practice
Setting Linux environment variables
Customizing Linux service Shell Programming basics Using vi to edit files
Using Emacs to edit files
Using other editors

2. Shell programming basics
Shell introduction
Knowing the background program
Bash programming familiar with the editing environment
under Linux A kind of Shell
Proficient in shell programming Familiar with the basic operations of vi
Familiar with the basic operations of Emacs
Compare the differences between different shells
Write a shell script program to test whether the server is connected
Write a shell script program to check whether a process exists
Write a shell script program with loop statements

3. Basics of C programming under Linux
Overview of the linux C language environment
Gcc usage
Gdb debugging technology
Autoconf
Automake
Makefile
code optimization Familiar with the development environment under the Linux system
Familiar with the Gcc compiler
Familiar with the Makefile rules to write Hello, World program
Use the make command to compile the program
Write a program with a loop
Debug a problematic program

4. Embedded system development basics
Embedded system Overview
Cross compilation
Configure TFTP service Configure
NFS service
Download Bootloader and kernel
Embedded Linux application software development process
Familiar with embedded system concepts and development process
Establish embedded system development environment Make cross_gcc tool chain Compile
and download U-boot
compile and download Linux kernel
compilation And download the Linux application program.
Embedded system transplants Linux
kernel code. Platform-
related code analysis. Introduction to ARM platform
. Serial communication under Linux Basic concept of serial I/O Embedded Linux application software development process Linux system files and devices System calls related to files









Configure HyperTerminal and MiniCOM Be familiar with serial communication
Familiar with file I/O Write serial communication programs
Write multi-serial communication programs

6. Multi-process programming in embedded systems
Linux system process overview
Process characteristics of embedded systems
Process operations
Daemon
related System calls Understand the concept of processes in Linux systems
Ability to write multi-process programs Write multi-process programs
Write a daemon program
sleep system call task management, synchronization and communication Linux task overview task
scheduling
pipeline
signal
shared memory
task management API understand the Linux system task management mechanism
Familiar with several ways of inter-process communication
Familiar with synchronization and communication between tasks in embedded Linux
Write a simple pipeline program to achieve file transfer
Write a program that uses shared memory

7. Multi-threaded programming in embedded systems Basic
knowledge of threads
Thread programming methods
Synchronization issues in thread applications Understand the concept of threads
Able to write simple multi-threaded programs Write a multi-threaded program

8. Embedded Linux network programming
Network basics TCP/IP network structure socket programming
in embedded Linux Commonly used API function analysis Implementation of Ping command



Basic UDP socket programming
License management
PPP protocol
GPRS Understand embedded Linux network architecture
Be able to perform socket programming under embedded Linux environment
Familiar with UDP protocol, PPP protocol
Familiar with GPRS Use socket to write proxy server
Use socket to write router
Write license server
instructions Advantages and disadvantages of TCP and UDP
Write a web server
Write a network player running on the ARM platform

9. GUI Program development
GUI basics
Embedded system GUI types
Compile QT
for QT development Familiar with GUI commonly used in embedded systems
Able to program QT Use QT Write a "Hello, World" program
Debug an instance of adding a signal/slot
Handle events by overloading the QWidget class method

10. Linux character device drivers
Basic knowledge of device drivers
Linux system modules Character
device drivers Analysis
fs_operation structure
Load drivers to understand devices The concept of drivers
Understand the structure of Linux character device drivers
Be able to write character device drivers Write Skull drivers
Write keyboard drivers
Write I/O drivers
Analyze a watchdog driver
Comparing the different character device drivers in the Linux2.6 kernel and the 2.4 kernel
Linux block device drivers The working principle of block device drivers
Analysis of typical block device drivers Read
and write request queues of block devices Understanding the structure of Linux block device drivers
can write simple Compare the similarities and differences between character devices and block devices with block device
drivers Write MMC card drivers
Analyze a file system
Compare the differences between block device drivers in Linux2.6 kernel and 2.4 kernel

11. File system
Virtual file system
File system establishment
ramfs memory file system
proc file system
devfs file system
MTD technology introduction
MTD block device initialization
MTD block device read and write operations understand the file system of Linux system
understand the file system of embedded Linux
understand MTD technology
can write a simple file system to add MTD support for ARM9 development board
porting JFFS2 file system
Modify operating system parameters through proc file system
Analyze romfs file system source code
Create a cramfs file system

 Part Two:

1. ARM+LINUX route, focusing on embedded Linux operating system and application software development goals: (1) Master the structure and principle of mainstream embedded microprocessors (preliminarily designated as arm9) (2) Must master an embedded operating system (Preliminarily set as uclinux or linux, version to be determined) (3) Must be familiar with embedded software development process and at least do one embedded software project. The benefits of engaging in embedded software development are: (1) At present, there are very few people in this field at home and abroad. The barriers to entry in this field are high, so it is difficult for non-professional IT personnel to enter this field; on the other hand, because this field is relatively new and is currently developing too fast, most people have unconditional access. (2) Unlike application software such as enterprise computing, the work intensity of talents in the embedded field is usually lower (but the income is not low). (3) If one day you want to start a business and develop your own products, embedded software is not as easy to be pirated as application software. The hardware design is generally made by other companies (this is called "OEM": OEM), which are all general-purpose hardware. We only need to design the software and become our own products. (4) Interests, this is the most important. The disadvantages of engaging in embedded software development are: (1) The entry point is relatively high, and the technologies used are often difficult. If the software and hardware foundation is not good, especially if the operating system level software is not deep, it may not be suitable for this line of work. . (2) The number of companies in this area is far less than that of enterprise computing companies. (3) A small number of companies often require people with a master's degree or above to engage in embedded, mainly based on the difficulty of embedded. But most companies don't have this requirement, as long as you have experience. (4) The platform is strongly supported, and it is difficult to change the platform. The origin of the interest: 1. The concept of success is different, not wasting this life is my success. 2. Like to think and challenge logical thinking. 3. like 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

C is a language that can exert the limit of thinking. Some aspects of the ethos of C can be summed up in short sentences as follows:
Trust the programmer. Don't prevent programmers from doing what needs to be done. Keep your language short and to the point. A method does an operation. makes it fast enough, although it's not guaranteed to be portable. 4. I like low-level development and hate vb development tools (not to say that vb is not good). 5. The development prospect is good, suitable for starting a business, and I don’t want to be an engineer when I am about to die. 2. Method steps: 1. Basic knowledge: Purpose: To be able to understand the working principle of hardware, but the focus is on embedded software, especially operating system level software, that will be my advantage. Subjects: digital circuit, computer composition principle, embedded microprocessor structure. Assembly language, C/C++, compilation principles, discrete mathematics. Data structures and algorithms, operating systems, software engineering, networking, databases. Method: Although there are many subjects, they are all relatively simple foundations, and most of them have been mastered. You don't have to learn all of them, but you can take elective courses according to your needs. Main books: the c++ programming language (have no time to read), data structure-C2. 2. Learning linux: Purpose: To master the linux system in depth.    Method: Use linux—>linxu system programming development—>driver development and analysis of the linux kernel. Look at the depth first, then talk about the principle. After reading it several times, look at the situation analysis, and compare and read in depth. The two books are crossed. Analysis is version 0.11, suitable for learning. Finally dive into the code. Main books: complete analysis of linux kernel, advanced programming in unix environment, in-depth understanding of linux kernel, scenario analysis and source generation. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
3. Learning embedded linux:
Purpose: Master the embedded processor and its system. Methods: (1) Embedded microprocessor structure and application: just arm principle and assembly, do not repeat x86.    (2) Embedded operating systems: ucOS/II is simple, open source, and available for entry. Then study uClinux in depth.    (3) You must have a development board (arm9 or above), and you can participate in training if you have the conditions (you can make quick progress and meet some friends).    Main books: Mao Decao's "Embedded System" and other arm9 manuals and arm assembly instructions. 4. In-depth study:    A. Digital image compression technology: mainly to 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, digital certificate CA, etc.    D. DSP technology: Digital Signal Process, DSP processor implements digital signal processing algorithm through hardware.     Explanation: too many details are not explained, it can be adjusted according to the actual situation. The focus is on 1 and 3, and it is not necessary to do them in complete order. For learning c++, the reason is that c++ is not just a language, a tool, but also an art, a culture, and a philosophy, but it is not something to show off. For the linux kernel, it is also necessary to learn programming and read some excellent codes.    Note: You must learn to draw inferences from one example, have a strong foundation, and you can understand many things simply by looking at them. To become a qualified programmer, the premise is that you must be proficient in at least one programming language and have good logical thinking. There must be a combination of theory and practice. 
 
 
 
 

 
 
 
 
 
 
 
   Don't just study technology blindly. Although it is difficult to squeeze out time, you still have to leave some room to perfect other hobbies, such as universe, sketching, machinery, management, psychology, games, and science fiction movies. There are still some unwilling to do but must do!
   Technology is programmed by programming. Never dream of reaching the sky in one step, don't be impetuous, and don't feel that the road is long. It's programming, programming, programming, programming when it's over, programming! Wait for the opportunity to start a business (don't believe in miracles, it is difficult to succeed in blind entrepreneurship, even if it succeeds, there may not be much room for development).    Embedded Books Recommended    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] Brian W. Kernighan David M. Rithie (K & R)    3. "Advanced Programming in the UNIX Environment, 2nd Edition" (APUE)    4. "Detailed Explanation of Embedded Linux Application Development"    Linux Kernel    1. "In-depth Understanding of the Linux Kernel" (Third Edition)    2. "Linux Kernel Source Code Scenario Analysis" by Mao Decao and Hu Ximing    Research and Development Direction    1. "UNIX Network Programming" (UNP)    2. "TCP/IP Detailed Explanation"    3. "Linux Kernel Programming" 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   4. "Linux Device Driver Development" (LDD) 
   5. "Linux Advanced Programming" by Yang Zongde    Hardware Basics    1. "ARM Architecture and Programming" by Du Chunlei    2. S3C2410 Datasheet     English Basics    1. "Computer and Communication Professional English"    System Tutorial    1. "Embedded System - Architecture, Programming and Design"    2. "Embedded System - Using Open Source Code and StrongARM/Xscale Processor" by Mao Decao and Hu Ximing    3. "Building Embedded Linux Systems"      4. " Embedded ARM System Principles and Example Development" by Yang Zongde    Theoretical Basis    1. "Introduction to Algorithms"    2. "Data Structure (C Language Edition)"    3. "Computer Organization and Architecture? Performance Analysis"    4. "In-depth Understanding of Computer Systems" [US] Randal E. Bryant David O''Hallaron    5. "Operating System: Essence and Design Principles"    6. "Compilation Principles"    7. "Data Communication and Computer Networks"    8. "Data Compression Principles and Applications"    C language Book recommendation    1. The C programming language "C programming language" 

 
 

 
 
 
 
 


 
 
 
 
 
 
 
 
 

 
 
   2. Pointers on C "C and pointers"
   3. C traps and pitfalls "C traps and defects"    4. Expert C Lanuage "Expert C Programming" 5. Writing Clean Code -----Microsoft Techniques for Developing Bug-free C Programs     "The Essence of Programming-Microsoft's Secret of Writing High-Quality Error-Free C Programs"    6. Programming Embedded Systems in C and C++ "Embedded System Programming"    7. "C Language Embedded System Programming Practice"    8. "High-quality C++/C Programming "Guide" Lin Rui    Coding as much as possible, to learn C well, not just focus on C itself. Algorithms, architectural methods, etc. are very important. 
 
 
   

 
 
 
 

 

Reprinted from: linux+ARM learning route - alanyunfeng - Blog Garden

For beginners of embedded ARM+Linux_kitten's embedded blog-CSDN blog_arm linux development 

Guess you like

Origin blog.csdn.net/qq_43681154/article/details/124426494