Embedded Linux Learning Plan for Beginners

Embedded Linux Learning Plan for Beginners
Word Count: 3800 Content Quality: ⭐⭐⭐⭐⭐
In simple terms, from basic knowledge of ARM to bare-metal programming, from uCOSII to Linux, from basic Linux commands to shell programming, from u-boot to file systems, and finally to Linux driver programming. The learning path goes from simple to complex, from basic to advanced.
Embedded Linux Learning Plan for Beginners
Stage 1: Embedded Hardware Basics and Bare-Metal Programming
1. Knowledge Points:
(1) Basic knowledge of ARM processors, operating modes, registers, interrupts and exceptions, addressing modes, assembly instruction set.
(2) Familiarize with the ADS integrated development environment to prepare for bare-metal programming.
(3) Bare-metal programming: LED, serial port, LCD, touchscreen, NAND FLASH, IIC, IIS, DMA, etc.
2. Process and Purpose:
The main goal of this stage is to familiarize oneself with embedded hardware, laying the foundation for future Linux driver development. Since the primary architecture for embedded systems is ARM, the focus is on learning ARM. First, learn the basic knowledge, and then practice on the development board.
Embedded Linux Learning Plan for Beginners
Stage 2: Linux Basics and Shell Programming
1. Knowledge Points:
(1) Basic knowledge of Linux
(2) Installation and usage of Linux
(3) Common Linux commands
(4) Using vi
(5) Basic shell programming
2. Process and Purpose:
The main goal of this stage is to become familiar with Linux, install Linux, understand basic Linux knowledge, and perform simple operations. It is recommended to install Linux on a virtual machine at first.
The primary aim is to gain an overall understanding of Linux, at least knowing some basic concepts and performing basic operations.
Embedded Linux Learning Plan for Beginners
Stage 3: Basics of Linux Application Development
1. Knowledge Points:
(1) Basics of GCC, GDB, Make
(2) File and time programming
(3) Multi-process and multi-thread programming
(4) Inter-process communication
2. Process and Purpose:
The main focus of this stage is to understand the writing and debugging of Linux applications, which are all basic knowledge, primarily aiming to become familiar with Linux. Understanding application programming concepts is essential for those working in the embedded Linux industry.
Embedded Linux Learning Plan for Beginners
Stage 4: Learning the uCOSII Operating System
1. Knowledge Points:
(1) The concept and basic knowledge of embedded real-time operating systems
(2) Reading the uCOSII operating system source code
(3) Porting uCOSII
(4) Application programming of the uCOSII operating system
2. Process and Purpose:
The main goal of this stage is to understand the basics of embedded real-time operating systems, as uCOSII is open-source and its code can be studied. This provides an intuitive understanding of task scheduling and resource management in operating systems. Reading its source code can enhance programming skills and standardize coding habits. Although a ported version of uCOSII is provided, performing the porting oneself leads to a deeper understanding.
This operating system is relatively simple, so writing applications is crucial, and implementing several functions on it helps in understanding the system.
The main aim of this stage is to understand operating system knowledge, such as task scheduling, concurrency, and race conditions. Another goal is to improve programming skills. Reading the source code of an operating system is much more beneficial than reading a thousand books on operating principles.
Embedded Linux Learning Plan for Beginners
Stage 5: Learning Bootloader
1. Knowledge Points:
(1) Basic knowledge of bootloaders
(2) Basics and commands of u-boot
(3) Porting u-boot
2. Process and Purpose:
Bootloader is an essential part of a Linux embedded system. The focus of this stage is to understand the role of the bootloader and the general bootloader—u-boot. Initially, learn to use various commands of u-boot. Then analyze the boot process of u-boot, the Makefile, and the process of loading the kernel with u-boot. Following others’ steps, gradually port the kernel multiple times to familiarize oneself with the process. Finally, based on a solid understanding of u-boot, complete the porting of u-boot independently and add personal modifications.
Embedded Linux Learning Plan for Beginners
Stage 6: Learning File Systems
1. Knowledge Points:
(1) Types and functions of Linux file systems
(2) Familiarity with busybox usage and the Linux system startup process
(3) Building your own root file system
2. Process and Purpose:
File systems are also an indispensable part of a Linux embedded system. This stage focuses on understanding the role and basic knowledge of root file systems and building your own root file system.
First, familiarize yourself with basic Linux file systems, then learn the usage of busybox and the Linux startup process, and finally follow others step by step to build your own file system.
Embedded Linux Learning Plan for Beginners
Stage 7: Embedded Graphical User Interface (GUI)
1. Knowledge Points:
(1) Types and characteristics of embedded GUIs
(2) Basic knowledge of minigui
(3) Porting minigui and programming
2. Process and Purpose:
As an upper-level system in embedded systems, understanding embedded graphical user interfaces is necessary. Here, I only studied minigui because QT requires knowledge of C++, which I have not learned. The purpose of this stage is mainly to familiarize oneself with the development process of embedded graphical interfaces, as I do not plan to engage in application development.
Just being able to port minigui to the board and run a hello program is sufficient. There is no need for in-depth understanding. Through porting minigui, I will gain new insights into the software and libraries running on Linux, program operation principles, and compilers.
Embedded Linux Learning Plan for Beginners
Stage 8: Basic Knowledge of Linux Driver Programming
1. Knowledge Points:
(1) Read “Linux Device Drivers” except for the chapters on network drivers, tty drivers, and block drivers.
(2) Experiment with all examples in the book, carefully analyze results, and understand related knowledge points.
(3) Even for examples, programming habits must be unified, and documentation must be standardized.
2. Process and Purpose:
The purpose of this stage is to lay the foundation for Linux drivers.
Embedded Linux Learning Plan for Beginners
Stage 9: Practical Linux Driver Development
1. Knowledge Points:
(1) Understand miscellaneous character device registration and implementation through LED drivers, and master the IO operation process of MINI2440.
(2) Master basic interrupt implementation methods through button driver programs.
(3) Master PWM driver programming.
(4) Understand the implementation of input device models through touchscreen driver programs.
(5) Master ADC driver design.
(6) Master watchdog and rtc driver design.
(7) Analyze platform device model implementation through LCD driver programs.
2. Process and Purpose:
The focus of this stage is to master the implementation of simple driver programs and analyze the differences with LDD3, as well as study some Linux subsystems. Through this stage, I will gain a deeper understanding of Linux driver programming and enhance my ability to read large amounts of code. The main work in this stage is to read code, experiment, read code, and experiment, learning knowledge through phenomena.
Embedded Linux Learning Plan for Beginners
Stage 10: In-depth Understanding of the Linux Kernel and USB Subsystem Research
After completing the first 9 stages, I feel that I have entered the world of embedded Linux. Therefore, I plan to start the tenth stage. This stage will mainly determine my future development direction. Since the standard interface for embedded systems is USB, learning about USB is highly competitive. Those who work on drivers should have a certain understanding of the kernel.
This stage focuses on learning the USB protocol, reading all the code of the Linux USB subsystem, deepening my understanding of USB through code reading, and then familiarizing myself with various USB class protocols, as well as writing and porting USB drivers. USB is the direction I have chosen, as I want to specialize in one area rather than dabble in everything and excel at nothing. Therefore, I have decided to learn about USB and pursue a career related to USB in embedded systems. This stage of learning is currently ongoing, and I am exploring the vast code of the Linux USB subsystem.
Disclaimer: The content of this article is sourced from the internet, and the copyright belongs to the original author. If there are any copyright issues, please contact for removal.
This Week’s Benefits
1

43 STM32 System Courses (Includes Course Materials and Source Code)

2

How to Obtain: Reply [806] in the background

-END-
Embedded Linux Learning Plan for Beginners

1

“Things to Note When Programming in C for Embedded Systems—[Performance Optimization]”

2

“Things to Note When Programming in C for Embedded Systems—[Memory Operations] (Includes Benefits)”

3

“Things to Note When Programming in C for Embedded Systems—[Screen Operations]”

Embedded Linux Learning Plan for Beginners

01

02

03

04

05

Embedded Linux Learning Plan for Beginners
Embedded Linux Learning Plan for Beginners
Embedded Linux Learning Plan for Beginners
Embedded Linux Learning Plan for Beginners

Slide to See More

Embedded Linux Learning Plan for Beginners
Embedded Linux Learning Plan for Beginners
Every day, hardworking Xiaochuang generates power,
[Share, Like, Follow] Can we have a duckEmbedded Linux Learning Plan for Beginners

Leave a Comment