《嵌入式Linux系统 开发原理与实战》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:李杰,刘林阴,陈慧丽
  • 出 版 社:北京:北京理工大学出版社
  • 出版年份:2017
  • ISBN:9787568249652
  • 页数:270 页
图书介绍:本书系统深入地介绍了嵌入式系统原理与设计方面的知识。从嵌入式系统概念、应用领域、设计开发流程和发展趋势等基础知识出发,以ARM处理器为例,介绍了嵌入式处理器的知识及使用;以几种通用的嵌入式操作系统为例,着重介绍了嵌入式操作系统的基本知识;并根据在嵌入式硬件及软件设计方面的实际经验,图文并茂地介绍了嵌入式应用程序设计。

第一章 嵌入式操作系统 1

1.1 嵌入式操作系统 1

1.1.1 嵌入式操作系统的特点 1

1.1.2 嵌入式操作系统的分类 2

1.2 实时操作系统 4

1.2.1 实时操作系统与通用操作系统的比较 4

1.2.2 实时操作系统的评价指标 6

1.3 基于Linux的嵌入式操作系统 7

1.3.1 ARMLinux简介 8

1.3.2 uClinux简介 9

1.4 嵌入式系统设计方法 10

1.4.1 嵌入式系统开发的特点 10

1.4.2 嵌入式系统开发的流程 12

第二章 搭建Linux交叉编译开发环境 14

2.1 什么是交叉编译 14

2.2 建立交叉编译开发工具链 15

2.2.1 编译工具链 15

2.2.2 下载工具链 23

2.2.3 验证工具链 26

2.3 配置主机服务 27

2.3.1 配置samba 27

2.3.2 配置DHCP 28

2.3.3 配置TFTP 30

2.3.4 配置NFS 31

第三章 GNU开发工具的使用方法 33

3.1 vi使用说明 33

3.1.1 vi简介 33

3.1.2 vi的基本命令 34

3.2 编写makefile 37

3.2.1 什么是makefile 37

3.2.2 make命令 39

3.2.3 隐含规则 40

3.3 使用gee 42

3.3.1 gcc的用法 42

3.3.2 gcc选项 43

3.4 库文件的管理与使用 49

3.4.1 库文件命名 49

3.4.2 库文件操作 50

3.4.3 库文件升级 51

3.4.4 库文件的使用 52

3.5 调试工具的使用 53

3.5.1 kdb的使用 53

3.5.2 gdb的使用 57

3.6 仿真器的使用 60

3.6.1 Multi-ICE Server状态 60

3.6.2 Multi-ICE Server配置 63

3.6.3 ADS V1.2配合Multi-ICE调试 64

第四章 BootLoader(VIVI)移植 68

4.1 BootLoader简介 68

4.1.1 BootLoader的概念 68

4.1.2 BootLoader的启动过程 70

4.2 VIVI概述 75

4.3 VIVI的配置和编译 75

4.4 VIVI代码导读 77

4.4.1 阶段1:arch/s3c2410/head.S 77

4.4.2 阶段2:init/main.c 78

第五章 ARM Linux内核移植 101

5.1 内核结构 101

5.1.1 系统组成 101

5.1.2 代码目录结构 102

5.1.3 内核代码阅读 103

5.2 内核启动流程 104

5.2.1 “vmlinux-armv.lds.in”和“head-armv.S” 104

5.2.2 start_ kernel()函数 107

5.3 定制Linux内核 108

5.3.1 裁剪、配置内核 109

5.3.2 编译内核 115

5.4 将内核下载到目标板上 115

第六章 Linux中断处理程序开发 119

6.1 中断处理程序概述 119

6.1.1 中断的产生 119

6.1.2 IRQ(Interrupt Requirement) 120

6.1.3 中断处理程序 120

6.1.4 置中断标志位 121

6.1.5 中断处理程序的不可重入性 121

6.1.6 避免竞争条件的出现 122

6.2 ARM处理器中断处理 123

6.2.1 ARM处理器异常中断处理概述 123

6.2.2 支持中断跳转的解析程序 123

6.3 中断处理程序架构 126

6.4 时钟中断与看门狗技术 129

6.4.1 时钟中断与定时器的概念 129

6.4.2 时钟中断与定时器实现 129

6.4.3 看门狗技术 132

第七章 Linux设备驱动开发 133

7.1 设备驱动程序概述 133

7.1.1 设备驱动程序分类 133

7.1.2 其他相关概念 134

7.2 设备驱动程序架构 135

7.2.1 基本架构 135

7.2.2 相关数据结构 136

7.3 设备驱动程序开发实例 146

7.3.1 编写内核模块 146

7.3.2 编写块(字符)设备驱动程序 148

7.3.3 编写网络设备驱动程序 152

第八章 Linux文件系统移植 158

8.1 Linux文件系统概述 158

8.1.1 Linux文件系统的历史 158

8.1.2 Linux文件系统的基本概念 160

8.2 Linux文件系统介绍 162

8.2.1 Ext FS和Ext2 FS 162

8.2.2 Ext3 FS 164

8.2.3 Reiser FS 165

8.2.4 XFS 166

8.2.5 JFS 167

8.2.6 JFFS2 168

8.2.7 其他文件系统简介 172

8.3 Linux文件系统结构 173

8.3.1 VFS(Virtual File System) 174

8.3.2 MTD(Memory Technology Device) 176

8.4 Linux文件系统移植 179

8.4.1 移植JFFS2文件系统 179

8.4.2 使用RamDisk 184

第九章 Linux应用程序开发 188

9.1 进程控制 188

9.1.1 Linux进程概述 188

9.1.2 Linux进程调度 189

9.1.3 相关系统调用及例程 191

9.2 进程间通信 202

9.2.1 Linux进程间通信概述 202

9.2.2 信号 203

9.2.3 管道 205

9.2.4 消息队列 206

9.2.5 信号灯 207

9.2.6 共享内存 209

9.3 多线程应用程序开发 210

9.3.1 线程概述 210

9.3.2 POSIX线程库API 213

9.3.3 线程编程实例 229

第十章 socket编程 233

10.1 socket编程的基本概念 233

10.1.1 网间进程通信 233

10.1.2 服务方式 235

10.1.3 客户/服务器模式 236

10.1.4 套接字类型 237

10.2 socket系统调用 237

10.2.1 建立socket 237

10.2.2 配置socket 238

10.2.3 建立连接 239

10.2.4 传输数据 240

10.2.5 结束传输 241

10.3 socket编程实例 242

10.3.1 简单的C/S模型 242

10.3.2 proxy源码分析 249