

Table of Contents
Chapter 1 Overview of Embedded Systems
(Video Explanation: 159 minutes, 7 episodes)
1.1 Introduction to Embedded Systems
1.1.1 Emergence of Embedded Systems
1.1.2 Definition, Characteristics, and Classification of Embedded Systems
1.1.3 Typical Components of Embedded Systems
1.2 Embedded Microprocessors
1.2.1 Introduction to Embedded Microprocessors
1.2.2 Mainstream Embedded Microprocessors
1.3 Embedded Operating Systems
1.3.1 Embedded Linux
1.3.2 Windows CE
1.3.3 Huawei LiteOS
1.3.4 Android
1.3.5 μC/OS-Ⅱ
1.3.6 VxWorks
1.3.7 RT-Thread
1.4 Application Fields and Development Trends of Embedded Systems
1.4.1 Application Fields of Embedded Systems
1.4.2 Development Trends of Embedded Systems
1.5 Summary of this Chapter
Exercises
Chapter 2 ARM Processor Architecture
(Video Explanation: 137 minutes, 7 episodes)
2.1 ARM Processors
2.1.1 Introduction to ARM Processors
2.1.2 Development of ARM Architecture
2.1.3 Main Products of ARM Processor Series
2.2 Cortex-A8 Processor Architecture
2.3 Cortex-A8 Processor Operating Modes and States
2.3.1 Cortex-A8 Processor Operating Modes
2.3.2 Cortex-A8 Processor States
2.4 Cortex-A8 Memory Management
2.4.1 Basic Data Types of ARM
2.4.2 Floating Point Data Types
2.4.3 Big/Little Endian Modes
2.4.4 Register Groups
2.4.5 Cortex-A8 Memory System
2.5 Cortex-A8 Exception Handling
2.5.1 Exception Vectors and Priorities
2.5.2 Exception Response Process
2.5.3 Exception Return Process
2.6 Summary of this Chapter
Exercises
Chapter 3 Basic Knowledge of Linux
3.1 Linux and Shell
3.2 Common Linux Distributions
3.3 Linux File Management
3.3.1 Viewing Files
3.3.2 Wildcards
3.3.3 Hidden Files
3.3.4 Viewing File Contents
3.3.5 Counting Words
3.3.6 Copying Files
3.3.7 Renaming Files
3.3.8 Deleting Files
3.4 Linux Directories
3.4.1 Home Directory
3.4.2 Absolute and Relative Paths
3.4.3 Creating Directories
3.4.4 Deleting Directories
3.4.5 Changing Current Directory
3.4.6 Renaming Directories
3.5 Linux File Permissions and Access Modes
3.5.1 Viewing File Permissions
3.5.2 File Access Modes
3.5.3 Directory Access Modes
3.5.4 Changing Permissions
3.5.5 Changing Owner and User Group
3.6 Linux Environment Variables
3.6.1 .profile File
3.6.2 Setting Terminal Type
3.6.3 Setting PATH Variable
3.6.4 PS1 and PS2 Variables
3.6.5 Common Environment Variables
3.7 Linux yum Command
3.8 Linux apt Command
3.9 Summary of this Chapter
Exercises
Chapter 4 Setting Up Embedded Linux Development Environment
(Video Explanation: 26 minutes, 4 episodes)
4.1 vi Editor
4.1.1 Entering vi Editor
4.1.2 Working Modes
4.1.3 Exiting vi Editor
4.1.4 Moving the Cursor
4.1.5 Control Commands
4.1.6 Editing Files
4.1.7 Deleting Characters
4.1.8 Modifying Text
4.1.9 Copying/Pasting
4.1.10 Running Commands
4.2 PC Settings: Super Terminal Setup
4.2.1 Setting Up Super Terminal
4.2.2 File Transfer Between Serial Port and PC
4.3 Virtual Machine and System Configuration Services
4.3.1 Installing Virtual Machine and Its Tools
4.3.2 Configuring Network in Virtual Machine
4.3.3 Configuring FTP Service on PC Linux
4.3.4 Configuring Telnet Service on PC Linux
4.3.5 Configuring NFS Service on PC Linux
4.3.6 Configuring TFTP Service Software on PC Windows
4.4 Summary of this Chapter
Exercises
Chapter 5 ARM-Linux Kernel
(Video Explanation: 88 minutes, 10 episodes)
5.1 Overview of ARM-Linux
5.1.1 Basic Architecture of GNU/Linux Operating System
5.1.2 ARM-Linux Kernel Versions and Features
5.1.3 Main Architecture and Functions of ARM-Linux Kernel
5.1.4 Linux Kernel Source Code Directory Structure
5.2 ARM-Linux Process Management
5.2.1 Representation and Switching of Processes
5.2.2 Processes, Threads, and Kernel Threads
5.2.3 Special Fields of Process Descriptor task_struct
5.2.4 do_fork() Function
5.2.5 Process Creation
5.2.6 Creation of Threads and Kernel Threads
5.2.7 Process Execution – exec Function Family
5.2.8 Process Termination
5.2.9 Process Scheduling
5.3 ARM-Linux Memory Management
5.3.1 Overview of ARM-Linux Memory Management
5.3.2 ARM-Linux Virtual Memory Space and Distribution
5.3.3 Process Space Description
5.3.4 Physical Memory Management (Page Management)
5.3.5 Management Techniques Based on Slab Allocator
5.3.6 Non-contiguous Memory Allocation in Kernel
5.3.7 Brief Overview of Page Recycling
5.4 ARM-Linux Modules
5.4.1 Writing and Compiling LKM
5.4.2 Comparison of LKM Version Differences
5.4.3 Loading and Unloading Modules
5.4.4 Toolset module-init-tools
5.5 ARM-Linux Interrupt Management
5.5.1 Basic Concepts of ARM-Linux Interrupts
5.5.2 Initialization of Kernel Exception Vector Table
5.5.3 Linux Interrupt Handling
5.5.4 Changes in Interrupt Handling System After Kernel Version 2.6.38 – General Interrupt Subsystem
5.6 Summary of this Chapter
Exercises
Chapter 6 Linux File System
(Video Explanation: 15 minutes, 2 episodes)
6.1 Overview of Linux File System
6.2 Ext2/Ext3/Ext4 File Systems
6.3 Embedded File System JFFS2
6.3.1 Embedded File System
6.3.2 JFFS2 Embedded File System
6.4 Root File System
6.4.1 Overview of Root File System
6.4.2 Tools for Creating Root File System – BusyBox
6.4.3 Creating JFFS2 File System
6.5 Summary of this Chapter
Exercises
Chapter 7 Porting and Debugging Embedded Linux Systems
(Video Explanation: 71 minutes, 7 episodes)
7.1 Basic Concepts and Typical Structure of BootLoader
7.1.1 Basic Concepts of BootLoader
7.1.2 Operating Modes of BootLoader
7.1.3 Typical Structure of BootLoader
7.1.4 Common BootLoaders
7.2 U-Boot
7.2.1 Overview of U-Boot
7.2.2 General Process of U-Boot Startup
7.2.3 U-Boot Environment Variables
7.3 Establishing Cross Development Environment
7.3.1 Connection Methods Between Host and Target Machine
7.3.2 File Transfer Methods Between Host and Target Machine
7.3.3 Establishing Cross Compilation Environment
7.4 Cross Compilation Toolchain
7.4.1 Overview of Cross Compilation Toolchain
7.4.2 Methods for Building Toolchain
7.4.3 Main Tools of Cross Compilation Toolchain
7.4.4 Cross Compilation Toolchain Adapted for Resource-Constrained Devices
7.4.5 Basics of Makefile
7.5 Porting Process of Embedded Linux System
7.5.1 Porting U-Boot
7.5.2 Configuration, Compilation, and Porting of Kernel
7.6 GDB Debugger
7.7 Remote Debugging
7.7.1 Composition of Remote Debugging Tools
7.7.2 Communication Protocol RSP
7.7.3 Implementation Methods and Settings for Remote Debugging
7.7.4 Application Examples of Remote Debugging
7.8 Kernel Debugging
7.8.1 printk()
7.8.2 Kdb
7.8.3 Kprobes
7.8.4 KGDB
7.9 Summary of this Chapter
Exercises
Chapter 8 Device Driver Design
(Video Explanation: 58 minutes, 5 episodes)
8.1 Overview of Device Driver Development
8.1.1 Classification of Linux Device Drivers
8.1.2 Processing Flow of Drivers
8.1.3 Device Driver Framework
8.1.4 Loading of Drivers
8.2 Kernel Device Model
8.2.1 Functions of Device Model
8.2.2 sysfs
8.2.3 Implementation Mechanism of sysfs – kobject
8.2.4 Organization of Device Model – platform Bus
8.2.5 Device Tree
8.3 Character Device Driver Design Framework
8.3.1 Important Data Structures of Character Devices
8.3.2 Character Device Driver Framework
8.4 Embedded Network Device Driver Design
8.4.1 Network Device Driver Framework
8.4.2 Key Data Structures of Network Device Driver
8.4.3 Overview of Network Device Driver Design Methods
8.5 Example of Network Device Driver – Analysis of DM9000 Network Card Driver
8.6 Summary of this Chapter
Exercises
Chapter 9 Advanced Programming in Embedded Linux
(Video Explanation: 36 minutes, 5 episodes)
9.1 Socket Programming in Embedded Linux
9.1.1 Introduction to socket() Function
9.1.2 TCP Interaction Process in Socket
9.1.3 Design Steps
9.2 Design of Multi-threaded Applications in Linux
9.2.1 Main Functions Involved in Thread Operations
9.2.2 Main Functions Involved in Mutex Operations
9.2.3 Design Steps
9.3 A Simple Linux Driver
9.4 Building Linux with Yocto Project
9.4.1 Overview of Yocto Project
9.4.2 Quick Build of Typical Image
9.5 Embedded Artificial Intelligence TensorFlow Lite
9.5.1 Using MobileNet in TensorFlow Lite
9.5.2 Compilation Process
9.5.3 Running TensorFlow Lite on ARM Development Board
9.6 Design of Embedded Web Server Based on ARM-Linux
9.6.1 System Environment Setup
9.6.2 Principles of Web Server
9.6.3 Design of Embedded Web Server
9.7 Application of SQLite in Embedded Linux
9.7.1 SQLite Installation
9.7.2 Porting and Testing SQLite on ARM-Linux
9.8 Summary of this Chapter
Exercises
References
Exciting SampleChapter

