嵌入式Linux基础教程(第2版·英文版)

目 录内容简介
Chapter1 Introduction
1.1 Why Linux?
1.2 Embedded Linux Today
1.3 Open Source and the GPL
1.3.1 Free Versus Freedom
1.4 Standards and Relevant Bodies
1.4.1 Linux Standard Base
1.4.2 Linux Foundation
1.4.3 Carrier-Grade Linux
1.4.4 Mobile Linux Initiative: Moblin
1.4.5 Service Availability Forum
1.5 Summary
1.5.1 Suggestions for Additional Reading
Chapter2 The Big Picture
2.1 Embedded or Not?
2.1.1 BIOS Versus Bootloader
2.2 Anatomy of an Embedded System
2.2.1 Typical Embedded Linux Setup
2.2.2 Starting the Target Board
2.2.3 Booting the Kernel
2.2.4 Kernel Initialization: Overview
2.2.5 First User Space Process: init
2.3 Storage Considerations
2.3.1 Flash Memory
2.3.2 NAND Flash
2.1.1 BIOS Versus Bootloader
2.2 Anatomy of an Embedded System
2.2.1 Typical Embedded Linux Setup
2.2.2 Starting the Target Board
2.2.3 Booting the Kernel
2.2.4 Kernel Initialization: Overview
2.2.5 First User Space Process: init
2.3 Storage Considerations
2.3.1 Flash Memory
2.3.2 NAND Flash
2.3.3 Flash Usage
2.3.4 Flash File Systems
2.3.5 Memory Space
2.3.6 Execution Contexts
2.3.7 Process Virtual Memory
2.3.8 Cross-Development Environment
2.4 Embedded Linux Distributions
2.4.1 Commercial Linux Distributions
2.4.2 Do-It-Yourself Linux Distributions
2.5 Summary
2.5.1 Suggestions for Additional Reading
Chapter3 Processor Basics
3.1 Stand-Alone Processors
3.1.1 IBM FX
3.1.2 Intel Pentium M
3.1.3 Intel Atom?
3.1.4 Freescale MPC7448
3.1.5 Companion Chipsets
3.2 Integrated Processors: Systems on Chip
3.2.1 Power Architecture
3.2.2 Freescale Power Architecture
3.2.3 Freescale PowerQUICC I
3.2.4 Freescale PowerQUICC II
3.2.5 PowerQUICC II Pro
3.2.6 Freescale PowerQUICC III
3.2.7 Freescale QorIQ?
3.1.4 Freescale MPC7448
3.1.5 Companion Chipsets
3.2 Integrated Processors: Systems on Chip
3.2.1 Power Architecture
3.2.2 Freescale Power Architecture
3.2.3 Freescale PowerQUICC I
3.2.4 Freescale PowerQUICC II
3.2.5 PowerQUICC II Pro
3.2.6 Freescale PowerQUICC III
3.2.7 Freescale QorIQ?
3.2.8 AMCC Power Architecture
3.2.9 MIPS
3.2.10 Broadcom MIPS
3.2.11 Other MIPS
3.2.12 ARM
3.2.13 TI ARM
3.2.14 Freescale ARM
3.2.15 Other ARM Processors
3.3 Other Architectures
3.4 Hardware Platforms
3.4.1 CompactPCI
3.4.2 ATCA
3.5 Summary
3.5.1 Suggestions for Additional Reading
Chapter4 The Linux Kernel: A Different Perspective
4.1 Background
4.1.1 Kernel Versions
4.1.2 Kernel Source Repositories
4.1.3 Using git to Download a Kernel
4.2 Linux Kernel Construction
4.2.1 Top-Level Source Directory
4.2.2 Compiling the Kernel
4.2.3 The Kernel Proper: vmlinux
4.2.4 Kernel Image Components
4.2.5 Subdirectory Layout
4.3 Kernel Build System
4.1.1 Kernel Versions
4.1.2 Kernel Source Repositories
4.1.3 Using git to Download a Kernel
4.2 Linux Kernel Construction
4.2.1 Top-Level Source Directory
4.2.2 Compiling the Kernel
4.2.3 The Kernel Proper: vmlinux
4.2.4 Kernel Image Components
4.2.5 Subdirectory Layout
4.3 Kernel Build System
4.3.1 The Dot-Config
4.3.2 Configuration Editor(s)
4.3.3 Makefile Targets
4.4 Kernel Configuration
4.4.1 Custom Configuration Options
4.4.2 Kernel Makefiles
4.5 Kernel Documentation
4.6 Obtaining a Custom Linux Kernel
4.6.1 What Else Do I Need?
4.7 Summary
4.7.1 Suggestions for Additional Reading
Chapter5 Kernel Initialization
5.1 Composite Kernel Image: Piggy and Friends
5.1.1 The Image Object
5.1.2 Architecture Objects
5.1.3 Bootstrap Loader
5.1.4 Boot Messages
5.2 Initialization Flow of Control
5.2.1 Kernel Entry Point: head.o
5.2.2 Kernel Startup: main.c
5.2.3 Architecture Setup
5.3 Kernel Command-Line Processing
5.3.1 The __setup Macro
5.4 Subsystem Initialization
5.4.1 The *__initcall Macros
5.5 The init Thread
5.2 Initialization Flow of Control
5.2.1 Kernel Entry Point: head.o
5.2.2 Kernel Startup: main.c
5.2.3 Architecture Setup
5.3 Kernel Command-Line Processing
5.3.1 The __setup Macro
5.4 Subsystem Initialization
5.4.1 The *__initcall Macros
5.5 The init Thread
5.5.1 Initialization Via initcalls
5.5.2 initcall_debug
5.5.3 Final Boot Steps
5.6 Summary
5.6.1 Suggestions for Additional Reading
Chapter6 User Space Initialization
6.1 Root File System
6.1.1 FHS: File System Hierarchy Standard
6.1.2 File System Layout
6.1.3 Minimal File System
6.1.4 The Embedded Root FS Challenge
6.1.5 Trial-and-Error Method
6.1.6 Automated File System Build Tools
6.2 Kernel’s Last Boot Steps
6.2.1 First User Space Program
6.2.2 Resolving Dependencies
6.2.3 Customized Initial Process
6.3 The init Process
6.3.1 inittab
6.3.2 Sample Web Server Startup Script
6.4 Initial RAM Disk
6.4.1 Booting with initrd
6.4.2 Bootloader Support for initrd
6.4.3 initrd Magic: linuxrc
6.4.4 The initrd Plumbing
6.4.5 Building an initrd Image
6.5 Using initramfs
6.5.1 Customizing
6.3.1 inittab
6.3.2 Sample Web Server Startup Script
6.4 Initial RAM Disk
6.4.1 Booting with initrd
6.4.2 Bootloader Support for initrd
6.4.3 initrd Magic: linuxrc
6.4.4 The initrd Plumbing
6.4.5 Building an initrd Image
6.5 Using initramfs
6.5.1 Customizing initramfs
6.6 Shutdown
6.7 Summary
6.7.1 Suggestions for Additional Reading
Chapter7 Bootloaders
7.1 Role of a Bootloader
7.2 Bootloader Challenges
7.2.1 DRAM Controller
7.2.2 Flash Versus RAM
7.2.3 Image Complexity
7.2.4 Execution Context
7.3 A Universal Bootloader: Das U-Boot
7.3.1 Obtaining U-Boot
7.3.2 Configuring U-Boot
7.3.3 U-Boot Monitor Commands
7.3.4 Network Operations
7.3.5 Storage Subsystems
7.3.6 Booting from Disk
7.4 Porting U-Boot
7.4.1 EP405 U-Boot Port
7.4.2 U-Boot Makefile Configuration Target
7.4.3 EP405 First Build
7.4.4 EP405 Processor Initialization
7.4.5 Board-Specific Initialization
7.4.6 Porting Summary
7.4.7 U-Boot Image Format
7.5 Device Tree Blob (Flat Device Tree)
7.3.6 Booting from Disk
7.4 Porting U-Boot
7.4.1 EP405 U-Boot Port
7.4.2 U-Boot Makefile Configuration Target
7.4.3 EP405 First Build
7.4.4 EP405 Processor Initialization
7.4.5 Board-Specific Initialization
7.4.6 Porting Summary
7.4.7 U-Boot Image Format
7.5 Device Tree Blob (Flat Device Tree)
7.5.1 Device Tree Source
7.5.2 Device Tree Compiler
7.5.3 Alternative Kernel Images Using DTB
7.6 Other Bootloaders
7.6.1 Lilo
7.6.2 GRUB
7.6.3 Still More Bootloaders
7.7 Summary
7.7.1 Suggestions for Additional Reading
Chapter8 Device Driver Basics
8.1 Device Driver Concepts
8.1.1 Loadable Modules
8.1.2 Device Driver Architecture
8.1.3 Minimal Device Driver Example
8.1.4 Module Build Infrastructure
8.1.5 Installing a Device Driver
8.1.6 Loading a Module
8.1.7 Module Parameters
8.2 Module Utilities
8.2.1 insmod
8.2.2 lsmod
8.2.3 modprobe
8.2.4 depmod
8.2.5 rmmod
8.2.6 modinfo
8.3 Driver Methods
8.1.5 Installing a Device Driver
8.1.6 Loading a Module
8.1.7 Module Parameters
8.2 Module Utilities
8.2.1 insmod
8.2.2 lsmod
8.2.3 modprobe
8.2.4 depmod
8.2.5 rmmod
8.2.6 modinfo
8.3 Driver Methods
8.3.1 Driver File System Operations
8.3.2 Allocation of Device Numbers
8.3.3 Device Nodes and mknod
8.4 Bringing It All Together
8.5 Building Out-of-Tree Drivers
8.6 Device Drivers and the GPL
8.7 Summary
8.7.1 Suggestions for Additional Reading
Chapter9 File Systems
9.1 Linux File System Concepts
9.1.1 Partitions
9.2 ext2
9.2.1 Mounting a File System
9.2.2 Checking File System Integrity
9.3 ext3
9.4 ext4
9.5 ReiserFS
9.6 JFFS2
9.6.1 Building a JFFS2 Image
9.7 cramfs
9.8 Network File System
9.8.1 Root File System on NFS
9.9 Pseudo File Systems
9.9.1 /proc File System
9.9.2 sysfs
9.4 ext4
9.5 ReiserFS
9.6 JFFS2
1.1 Why Linux?
1.2 Embedded Linux Today
1.3 Open Source and the GPL
1.3.1 Free Versus Freedom
1.4 Standards and Relevant Bodies
1.4.1 Linux Standard Base
1.4.2 Linux Foundation
1.4.3 Carrier-Grade Linux
1.4.4 Mobile Linux Initiative: Moblin
1.4.5 Service Availability Forum
1.5 Summary
1.5.1 Suggestions for Additional Reading
Chapter2 The Big Picture
2.1 Embedded or Not?
2.1.1 BIOS Versus Bootloader
2.2 Anatomy of an Embedded System
2.2.1 Typical Embedded Linux Setup
2.2.2 Starting the Target Board
2.2.3 Booting the Kernel
2.2.4 Kernel Initialization: Overview
2.2.5 First User Space Process: init
2.3 Storage Considerations
2.3.1 Flash Memory
2.3.2 NAND Flash
2.1.1 BIOS Versus Bootloader
2.2 Anatomy of an Embedded System
2.2.1 Typical Embedded Linux Setup
2.2.2 Starting the Target Board
2.2.3 Booting the Kernel
2.2.4 Kernel Initialization: Overview
2.2.5 First User Space Process: init
2.3 Storage Considerations
2.3.1 Flash Memory
2.3.2 NAND Flash
2.3.3 Flash Usage
2.3.4 Flash File Systems
2.3.5 Memory Space
2.3.6 Execution Contexts
2.3.7 Process Virtual Memory
2.3.8 Cross-Development Environment
2.4 Embedded Linux Distributions
2.4.1 Commercial Linux Distributions
2.4.2 Do-It-Yourself Linux Distributions
2.5 Summary
2.5.1 Suggestions for Additional Reading
Chapter3 Processor Basics
3.1 Stand-Alone Processors
3.1.1 IBM FX
3.1.2 Intel Pentium M
3.1.3 Intel Atom?
3.1.4 Freescale MPC7448
3.1.5 Companion Chipsets
3.2 Integrated Processors: Systems on Chip
3.2.1 Power Architecture
3.2.2 Freescale Power Architecture
3.2.3 Freescale PowerQUICC I
3.2.4 Freescale PowerQUICC II
3.2.5 PowerQUICC II Pro
3.2.6 Freescale PowerQUICC III
3.2.7 Freescale QorIQ?
3.1.4 Freescale MPC7448
3.1.5 Companion Chipsets
3.2 Integrated Processors: Systems on Chip
3.2.1 Power Architecture
3.2.2 Freescale Power Architecture
3.2.3 Freescale PowerQUICC I
3.2.4 Freescale PowerQUICC II
3.2.5 PowerQUICC II Pro
3.2.6 Freescale PowerQUICC III
3.2.7 Freescale QorIQ?
3.2.8 AMCC Power Architecture
3.2.9 MIPS
3.2.10 Broadcom MIPS
3.2.11 Other MIPS
3.2.12 ARM
3.2.13 TI ARM
3.2.14 Freescale ARM
3.2.15 Other ARM Processors
3.3 Other Architectures
3.4 Hardware Platforms
3.4.1 CompactPCI
3.4.2 ATCA
3.5 Summary
3.5.1 Suggestions for Additional Reading
Chapter4 The Linux Kernel: A Different Perspective
4.1 Background
4.1.1 Kernel Versions
4.1.2 Kernel Source Repositories
4.1.3 Using git to Download a Kernel
4.2 Linux Kernel Construction
4.2.1 Top-Level Source Directory
4.2.2 Compiling the Kernel
4.2.3 The Kernel Proper: vmlinux
4.2.4 Kernel Image Components
4.2.5 Subdirectory Layout
4.3 Kernel Build System
4.1.1 Kernel Versions
4.1.2 Kernel Source Repositories
4.1.3 Using git to Download a Kernel
4.2 Linux Kernel Construction
4.2.1 Top-Level Source Directory
4.2.2 Compiling the Kernel
4.2.3 The Kernel Proper: vmlinux
4.2.4 Kernel Image Components
4.2.5 Subdirectory Layout
4.3 Kernel Build System
4.3.1 The Dot-Config
4.3.2 Configuration Editor(s)
4.3.3 Makefile Targets
4.4 Kernel Configuration
4.4.1 Custom Configuration Options
4.4.2 Kernel Makefiles
4.5 Kernel Documentation
4.6 Obtaining a Custom Linux Kernel
4.6.1 What Else Do I Need?
4.7 Summary
4.7.1 Suggestions for Additional Reading
Chapter5 Kernel Initialization
5.1 Composite Kernel Image: Piggy and Friends
5.1.1 The Image Object
5.1.2 Architecture Objects
5.1.3 Bootstrap Loader
5.1.4 Boot Messages
5.2 Initialization Flow of Control
5.2.1 Kernel Entry Point: head.o
5.2.2 Kernel Startup: main.c
5.2.3 Architecture Setup
5.3 Kernel Command-Line Processing
5.3.1 The __setup Macro
5.4 Subsystem Initialization
5.4.1 The *__initcall Macros
5.5 The init Thread
5.2 Initialization Flow of Control
5.2.1 Kernel Entry Point: head.o
5.2.2 Kernel Startup: main.c
5.2.3 Architecture Setup
5.3 Kernel Command-Line Processing
5.3.1 The __setup Macro
5.4 Subsystem Initialization
5.4.1 The *__initcall Macros
5.5 The init Thread
5.5.1 Initialization Via initcalls
5.5.2 initcall_debug
5.5.3 Final Boot Steps
5.6 Summary
5.6.1 Suggestions for Additional Reading
Chapter6 User Space Initialization
6.1 Root File System
6.1.1 FHS: File System Hierarchy Standard
6.1.2 File System Layout
6.1.3 Minimal File System
6.1.4 The Embedded Root FS Challenge
6.1.5 Trial-and-Error Method
6.1.6 Automated File System Build Tools
6.2 Kernel’s Last Boot Steps
6.2.1 First User Space Program
6.2.2 Resolving Dependencies
6.2.3 Customized Initial Process
6.3 The init Process
6.3.1 inittab
6.3.2 Sample Web Server Startup Script
6.4 Initial RAM Disk
6.4.1 Booting with initrd
6.4.2 Bootloader Support for initrd
6.4.3 initrd Magic: linuxrc
6.4.4 The initrd Plumbing
6.4.5 Building an initrd Image
6.5 Using initramfs
6.5.1 Customizing
6.3.1 inittab
6.3.2 Sample Web Server Startup Script
6.4 Initial RAM Disk
6.4.1 Booting with initrd
6.4.2 Bootloader Support for initrd
6.4.3 initrd Magic: linuxrc
6.4.4 The initrd Plumbing
6.4.5 Building an initrd Image
6.5 Using initramfs
6.5.1 Customizing initramfs
6.6 Shutdown
6.7 Summary
6.7.1 Suggestions for Additional Reading
Chapter7 Bootloaders
7.1 Role of a Bootloader
7.2 Bootloader Challenges
7.2.1 DRAM Controller
7.2.2 Flash Versus RAM
7.2.3 Image Complexity
7.2.4 Execution Context
7.3 A Universal Bootloader: Das U-Boot
7.3.1 Obtaining U-Boot
7.3.2 Configuring U-Boot
7.3.3 U-Boot Monitor Commands
7.3.4 Network Operations
7.3.5 Storage Subsystems
7.3.6 Booting from Disk
7.4 Porting U-Boot
7.4.1 EP405 U-Boot Port
7.4.2 U-Boot Makefile Configuration Target
7.4.3 EP405 First Build
7.4.4 EP405 Processor Initialization
7.4.5 Board-Specific Initialization
7.4.6 Porting Summary
7.4.7 U-Boot Image Format
7.5 Device Tree Blob (Flat Device Tree)
7.3.6 Booting from Disk
7.4 Porting U-Boot
7.4.1 EP405 U-Boot Port
7.4.2 U-Boot Makefile Configuration Target
7.4.3 EP405 First Build
7.4.4 EP405 Processor Initialization
7.4.5 Board-Specific Initialization
7.4.6 Porting Summary
7.4.7 U-Boot Image Format
7.5 Device Tree Blob (Flat Device Tree)
7.5.1 Device Tree Source
7.5.2 Device Tree Compiler
7.5.3 Alternative Kernel Images Using DTB
7.6 Other Bootloaders
7.6.1 Lilo
7.6.2 GRUB
7.6.3 Still More Bootloaders
7.7 Summary
7.7.1 Suggestions for Additional Reading
Chapter8 Device Driver Basics
8.1 Device Driver Concepts
8.1.1 Loadable Modules
8.1.2 Device Driver Architecture
8.1.3 Minimal Device Driver Example
8.1.4 Module Build Infrastructure
8.1.5 Installing a Device Driver
8.1.6 Loading a Module
8.1.7 Module Parameters
8.2 Module Utilities
8.2.1 insmod
8.2.2 lsmod
8.2.3 modprobe
8.2.4 depmod
8.2.5 rmmod
8.2.6 modinfo
8.3 Driver Methods
8.1.5 Installing a Device Driver
8.1.6 Loading a Module
8.1.7 Module Parameters
8.2 Module Utilities
8.2.1 insmod
8.2.2 lsmod
8.2.3 modprobe
8.2.4 depmod
8.2.5 rmmod
8.2.6 modinfo
8.3 Driver Methods
8.3.1 Driver File System Operations
8.3.2 Allocation of Device Numbers
8.3.3 Device Nodes and mknod
8.4 Bringing It All Together
8.5 Building Out-of-Tree Drivers
8.6 Device Drivers and the GPL
8.7 Summary
8.7.1 Suggestions for Additional Reading
Chapter9 File Systems
9.1 Linux File System Concepts
9.1.1 Partitions
9.2 ext2
9.2.1 Mounting a File System
9.2.2 Checking File System Integrity
9.3 ext3
9.4 ext4
9.5 ReiserFS
9.6 JFFS2
9.6.1 Building a JFFS2 Image
9.7 cramfs
9.8 Network File System
9.8.1 Root File System on NFS
9.9 Pseudo File Systems
9.9.1 /proc File System
9.9.2 sysfs
9.4 ext4
9.5 ReiserFS
9.6 JFFS2
目 录内容简介
《嵌入式Linux基础教程(第2版·英文版)》是嵌入式Linux的经典教程,介绍了引导装入程序、系统初始化、文件系统、闪存和内核、应用程序调试技巧等,还讲述了构建Linux系统的工作原理,用于驱动不同体系结构的配置,Linux内核源码树的特性,如何根据需求配制内核运行时的行为,如何扩展系统功能,用于构建完整嵌入式Linux发行版的常用构建系统,USB子系统和系统配置工具udev等内容。更重要的是,《嵌入式Linux基础教程(第2版·英文版)》阐述了如何修改系统使之满足读者自己的需求,使读者能从中学习一些嵌入式工程中非常有用的提示和技巧。
《嵌入式Linux基础教程(第2版·英文版)》适合Linux程序员阅读,也可作为高等院校相关专业师生的参考读物。
《嵌入式Linux基础教程(第2版·英文版)》适合Linux程序员阅读,也可作为高等院校相关专业师生的参考读物。
比价列表
公众号、微信群

微信公众号

实时获取购书优惠