4157 views|6 replies

5

Posts

0

Resources
The OP
 

Embedded Linux Learning Route Planning [Copy link]

ARM+LINUX route, focusing on embedded Linux operating system and its application software development goals:

(1) Master the structure and principle of mainstream embedded microprocessors (preliminarily defined as ARM9)

(2) Must master an embedded operating system (preliminarily uclinux or linux, version to be determined)

(3) Must be familiar with the embedded software development process and have completed at least one embedded software project.

The benefits of engaging in embedded software development are:

(1) Currently, there is a shortage of people in this field both at home and abroad. The entry threshold to this field is 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 no conditions to get in touch with it.

(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 you want to start a business and develop your own products, embedded systems are not as easy to be pirated as application software. Hardware design is usually customized by other companies (this is called "OEM"), which are all general hardware. We only need to design the software and it will become our own product.

(4) Interest is the most important thing.

The disadvantages of working in embedded software development are:

(1) The entry entry point is relatively high, and the technologies used are often difficult. If you do not have a good foundation in software and hardware, especially if you do not have a deep foundation in operating system-level software, you may not be suitable for this line of work.

(2) The number of companies in this area is far smaller than that of companies in enterprise computing.

(3) A few companies often require people with a master's degree or above to work on embedded systems, mainly due to the difficulty of embedded systems. However, most companies do not have this requirement, as long as they have experience.

(4) The platform is highly dependent on the user, and it is difficult to change platforms.

Origin of interest:

1. The concept of success is different. Not wasting my life is my success.

2. Like to think and challenge logical thinking.

3. I like CC as a language that can push the limits of thinking. Some aspects of the spirit of C can be summarized in short sentences as follows: Trust the programmer. Don't stop the programmer from doing what needs to be done. Keep the language short and concise. One method does one operation. Make it run fast enough, although it is not guaranteed to be portable.

4. I like low-level development and hate VB-type development tools (not to say VB is bad).

5. The development prospects are good and suitable for starting a business. I don’t want to be an engineer when I am about to die.

Method steps:

1. Basic knowledge:

Purpose: To be able to understand how hardware works, but with a focus on embedded software, especially operating system-level software, which will be my advantage.

Subjects: Digital circuits, computer organization principles, embedded microprocessor structure. Assembly language, C/C++, compiler principles, discrete mathematics. Data structure and algorithm, operating system, software engineering, network, database.

Method: Although there are many subjects, they are all relatively simple basics, and most of them have been mastered. It is not necessary to learn all of them, and you can choose electives according to your needs.

Main books: the C++ programming language (never had time to read), Data Structure-C2.

2. Learn Linux:

Purpose: To gain an in-depth understanding of the Linux system.

Method: Use Linux—〉LINXU system programming development—〉Driver development and analysis of Linux kernel. Read the in-depth version first, then the main principle. After reading it several times, read the scenario analysis, and compare it with the in-depth version. The two books are cross-cutting, the in-depth version is the outline, and the scenario is the main point. The analysis version is 0.11, which is suitable for learning. Finally, go deep into the code.

Main books: Complete analysis of the Linux kernel, advanced programming in the Unix environment, in-depth understanding of the Linux kernel, scenario analysis and source code.

3. Learn embedded Linux:

Purpose: To master embedded processors and systems.

Methods: (1) Embedded microprocessor structure and application: just learn arm principles and assembly, do not repeat x86. (2) Embedded operating system: ucOS/II is simple, open source, and can be used 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 will make rapid progress and make some friends).

Main books: Mao Decao's "Embedded Systems" and other arm9 manuals and arm assembly instructions, etc.

4. In-depth learning:

A. Digital image compression technology: mainly you should master MPEG, MP3 and other encoding and decoding algorithms and technologies.

B. Communication protocols and programming techniques: 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 algorithms through hardware.  

Note: Too many details are not explained, which can be adjusted according to the actual situation. The key points are 1 and 3, which do not have to be done in exact order. For learning C++, the reason is that C++ is not only a language, a tool, but also an art, a culture, a philosophy, but 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 thing, have a strong foundation, and you can learn many things simply by looking at them. To become a qualified programmer, the prerequisite is that you must be proficient in at least one programming language and have good logical thinking. Be sure to combine theory with practice. Don't just delve into technology. Although it is difficult to squeeze out time, you still have to leave some room to improve other hobbies, such as the universe, sketching, machinery, management, psychology, games, and science fiction movies. There are also some things that you don't want to do but must do! Technology is programmed through programming. Never dream of reaching the sky in one step, don't be an impetuous person, and don't feel that the road is long. Instead, you have to program, program, and program, and then program, and program! Wait for the opportunity to come and start a business (don't believe in miracles. It is difficult to succeed in blindly starting a business, and even if you succeed, the development space may not be very large).

Embedded Book Recommendations

Linux Basics: Linux and Unix Shell Programming Guide

C language basics:

1. C Primer Plus, 5th Edition by 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 Explanation of Embedded Linux Application Development"

Linux Kernel

1. "In-depth Understanding of the Linux Kernel" (3rd Edition)

2. "Linux Kernel Source Code Scenario Analysis" by Mao Decao and Hu Ximing

R&D Direction

1. "UNIX Network Programming" (UNP)

2. TCP/IP Detailed Explanation

3. Linux Kernel Programming

4. Linux Device Driver Development (LDD) 

5. Advanced Linux Programming by Yang Zongde

Hardware Basics

1. ARM Architecture and Programming by Du Chunlei

2. S3C2410 Datasheet

English Basics: "Computer and Communication English"

System Tutorial

1. "Embedded Systems - Architecture, Programming and Design"

2. "Embedded Systems - Using Open Source Code and StrongARM/Xscale Processors" by Mao Decao and Hu Ximing

3. "Building Embedded Linux Systems"   

4. "Embedded ARM System Principles and Case Development" by Yang Zongde

Theoretical basis

1. Introduction to Algorithms

2. Data Structure (C Language Edition)

3. Computer Organization and Architecture - Performance Analysis

4. "A Deep Understanding of Computer Systems" by Randal E. Bryant and David O''Hallaron

5. Operating System: The Essence and Design Principles

6. Principles of Compilation

7. Data Communications and Computer Networks

8. Principles and Applications of Data Compression

Recommended books on C language

1. The C programming language

2. Pointers on C

3. C traps and pitfalls

4. Expert C Lanuage 《Expert C Programming》

5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs

6. Programming Embedded Systems in C and C++

7. "C Language Embedded System Programming Practice"

8. "High-Quality C++/C Programming Guide" by Lin Rui

Code as much as possible, learn C well, don't just focus on C itself. Algorithms, architecture, etc. are all important.

This post is from Linux and Android

Latest reply

Thanks for sharing.   Details Published on 2021-6-25 11:44

1942

Posts

2

Resources
2
 

There is so much to learn about Linux!

This post is from Linux and Android

Comments

Actually: simplify it, learn it step by step, each step is not difficult. He wrote an expansion.  Details Published on 2021-6-18 14:36
 
 

297

Posts

0

Resources
3
 

good!

This post is from Linux and Android
 
 
 

36

Posts

0

Resources
4
 
w494143467 Published on 2021-6-18 11:44 There are so many things to learn about Linux!

Actually: simplify it, learn it step by step, each step is not difficult. He wrote an expansion.

This post is from Linux and Android

Comments

Yes, I am still learning little by little at the moment!  Details Published on 2021-6-18 15:42
 
 
 

1942

Posts

2

Resources
5
 
wintonson posted on 2021-6-18 14:36 Actually: simplify it, learn step by step, each step is not very difficult. He wrote an extension.

Yes, I am still learning little by little at the moment!

This post is from Linux and Android
 
 
 

8

Posts

0

Resources
6
 

In order to make embedded motherboards, I am learning embedded knowledge

This post is from Linux and Android
 
 
 

5

Posts

0

Resources
7
 

Thanks for sharing.

This post is from Linux and Android
 
 
 

Guess Your Favourite
Just looking around
Find a datasheet?

EEWorld Datasheet Technical Support

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号
快速回复 返回顶部 Return list