《Linux与嵌入式系统 第2版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:李善平,刘文峰,王焕龙等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302124868
  • 页数:423 页
图书介绍:本书是作者运用Linux研究和开发嵌入式系统的过程中的资料与经验的总结,也是把两者结合起来的集中体现。书中有对主流嵌入式操作系统,Linux操作系统、以及基于Linux的嵌入式操作系统的综述。更主要的是系统介绍了利用Linux开发嵌入式系统的关键技术和方法。

目录 1

第1章 嵌入式系统 1

1.1 关于嵌入式系统 1

1.1.1 嵌入式系统概念 1

1.1.2 嵌入式处理器 2

1.2 关于嵌入式操作系统 4

1.2.1 从嵌入式系统到嵌入式操作系统 4

1.2.2 典型的嵌入式操作系统 5

1.3 嵌入式操作系统的应用 7

1.4 典型嵌入式系统 9

1.4.1 VxWorks和pSOS 9

1.4.2 OSKit 16

1.4.3 Palm OS 21

1.4.4 μC/OS和μC/OS-Ⅱ 24

1.4.5 QNX实时操作系统 28

第2章 Linux 33

2.1 Linux简介 33

2.1.1 Linux的历史 33

2.1.2 Linux的发行版本 34

2.1.3 Linux的特点 36

2.2 Linux内核 37

2.2.1 内核概况 37

2.2.2 进程管理 39

2.2.3 存储管理 47

2.2.4 文件系统管理 58

2.2.5 设备管理 68

2.2.6 系统启动 73

2.3 Linux应用 75

2.3.1 Linux在大型服务器上的应用 75

2.3.2 Linux在桌面端的应用 76

2.3.3 Linux在嵌入式环境中的应用 77

2.4 主流嵌入式Linux系统 78

2.4.1 uClinux 78

2.4.2 RTLinux和RTAI 80

2.4.3 MontaVista Linux 84

2.4.4 LynxOS 87

第3章 嵌入式系统开发过程 90

3.1 需求分析和概要设计 90

3.1.1 嵌入式系统的概念和组成 90

3.1.2 系统需求分析 90

3.1.3 系统结构模型建立方式 91

3.1.4 系统结构模型实现流程 92

3.2 硬件 93

3.2.1 嵌入式处理器 93

3.2.2 存储设备 94

3.2.3 外围设备 95

3.2.4 典型的嵌入式系统开发平台 97

3.2.5 Lineo的μCSimm 98

3.2.6 ARM的ARM Evaluator-7T 102

3.3 软件 106

3.3.1 嵌入式系统的软件组成 106

3.3.2 嵌入式软件的基本开发流程 109

3.3.3 嵌入式操作系统 110

3.4 嵌入式系统软件开发过程 111

3.4.1 开发 111

3.4.2 编译和连接 112

3.4.3 重定位和下载 113

3.4.4 调试 113

第4章 嵌入式Linux系统的开发技术 116

4.1 快速启动 116

4.2 开机画面 121

4.2.1 隐藏字符信息 121

4.2.2 显示用户定义的画面 122

4.3 ramdisk技术 123

4.4 系统小型化 125

4.4.1 内核配置 125

4.4.2 嵌入式C库 127

4.4.3 小型shell 130

4.5 系统移植 132

4.5.1 建立交叉编译环境 132

4.5.2 内核移植 136

4.5.3 bootloader 139

第5章 嵌入式Linux系统的进程 141

5.1 Linux在实时方面的缺陷 141

5.2 Linux实时化的关键问题 143

5.3 Linux实时化改造的典型方法 144

5.3.1 外部实时性扩展 144

5.3.2 内部实时性改造 160

5.4 实时应用程序的编写 164

5.5 实时程序的测试 167

第6章 嵌入式Linux系统的存储管理 169

6.1 缺少MMU支持的内存管理 169

6.1.1 3种内存管理模型 170

6.1.2 标准Linux的内存管理 170

6.1.3 μClinux的内存管理 171

6.1.4 μClinux内存管理的局限性 172

6.2 μClinux内存管理的实现 173

6.2.1 内存管理数据结构 173

6.2.2 物理空间管理 174

6.2.3 内核内存的申请和释放 175

6.2.4 内存映射 176

6.3 内存管理模块的启动初始化 178

6.3.1 setup_arch() 178

6.3.2 paing_init() 179

6.3.3 free_area_init() 180

6.3.4 mem_init() 180

6.4 可执行程序的加载 180

6.4.1 用户程序的内存分布 180

6.4.2 reloc段机制 181

6.4.3 flat可执行文件格式 182

6.4.4 执行文件加载流程 183

第7章 嵌入式Linux系统的文件系统 187

7.1 嵌入式系统的存储 187

7.2 文件系统类型 188

7.2.1 cramfs 188

7.2.2 romfs 190

7.3 日志文件系统 193

7.3.1 文件系统完整性 193

7.3.2 日志文件系统 194

7.3.3 jffs与jffs2文件系统 195

7.3.4 ReiserFS文件系统 197

7.3.5 ext3文件系统 198

7.3.6 xfs文件系统 199

7.4 文件系统的目录结构 200

7.4.1 /etc目录 201

7.4.2 /bin目录 204

7.4.3 /sbin目录 205

7.4.4 /dev目录 206

7.5 小结 207

第8章 嵌入式Linux的GUI 208

8.1 嵌入式GUI 208

8.1.1 嵌入式GUI的概念 208

8.1.2 一些成熟的嵌入式GUI 209

8.2 典型的嵌入式GUI—Microwindows 210

8.2.1 Microwindows的设备驱动 211

8.2.2 与设备无关的图形引擎 214

8.2.3 Nano-X的窗口管理和API 218

8.2.4 Microwindows在Linux Frame Buffer上运行 229

8.3 其他知名嵌入式GUI 230

8.3.1 面向实时的MiniGUI 230

8.3.2 应用广泛的Qt/Embedded 232

8.4 嵌入式GUI的应用 233

8.4.1 嵌入式GUI上的其他软件 233

8.4.2 嵌入式GUI的应用 236

8.5 小结 237

第9章 嵌入式Linux系统的网络互联及其优化技术 238

9.1 嵌入式Internet及其应用 238

9.1.1 嵌入式Internet技术的兴起 238

9.1.2 嵌入式Internet技术 240

9.2 网络协议栈的定制 243

9.2.1 Linux的网络代码分布及特点 243

9.2.2 网络部分内核编译配置 245

9.2.3 TCP/IP协议的定制 247

9.3 Linux中TCP/IP协议应用优化技术 253

9.3.1 实现快速上下文切换的设想 253

9.3.2 网络服务器 255

9.4 Linux IP报文转发及防火墙实现分析 260

9.4.1 IP数据报文流 260

9.4.2 netfilter框架 263

9.4.3 netfilter的网络地址转换(NAT)的实现 267

9.4.4 IPTables:netfilter体系的规则载体 271

9.5 基于Linux的家庭网关及其优化技术 273

9.5.1 改变网络设备的工作模式 274

9.5.2 转发报文不再往上经由IP层 277

9.5.3 NAT的重写 280

第10章 嵌入式系统集成开发环境 286

10.1.1 集成开发环境 287

10.1 综述 287

10.1.2 嵌入式软件开发 288

10.1.3 Python开发环境 291

10.2 代码编辑模块 292

10.2.1 代码编辑功能 292

10.2.2 PygtkScintilla 293

10.2.3 EideP代码编辑模块的实现 294

10.3 软件调试模块 296

10.3.1 软件调试功能简介 296

10.3.2 gdb前端(front-end)软件分析 297

10.3.3 gdb图形前端的实现 298

10.3.4 输出信息提取的实现 300

10.3.5 功能实现 301

10.4 JTAG在线调试的实现 302

10.4.1 标准的JTAG协议 303

10.4.2 PXA255中JTAG调试接口协议 305

10.4.3 PXA255中debug相关的寄存器及其访问方式 307

10.4.4 PXA255中debug相关的JTAG命令 312

10.4.5 JTAG在线调试实现思想 314

10.4.6 底层JTAG操作模块 315

10.4.7 host debugger 318

10.4.8 Pygdbserver 326

10.4.9 debug handler 329

10.4.10 用JTAG调试的例子 333

10.5 小结 335

第11章 嵌入式系统案例——机顶盒 336

11.1 机顶盒需求分析 336

11.1.1 机顶盒基本概念 336

11.1.2 所需功能 337

11.2 机顶盒概要设计 338

11.2.1 建立需求库 338

11.2.2 进行需求映射 339

11.3 机顶盒硬件设计 340

11.4 机顶盒软件设计 341

11.4.1 GUI设计 343

11.4.2 系统裁减和压缩 348

11.4.3 网络设计 355

11.4.4 系统启动优化 358

11.5 小结 359

第12章 嵌入式系统案例——宽带路由器 360

12.1 宽带路由器及Nanos操作系统 360

12.1.1 典型宽带路由器的功能 360

12.1.2 Nanos操作系统 361

12.2 操作系统的设计 361

12.2.1 Nanos操作系统的设计思想 361

12.2.2 关键部分的设计思想 362

12.3.1 任务状态 363

12.3 任务管理的实现 363

12.3.2 任务控制块和就绪表 364

12.3.3 任务的创建与删除 366

12.3.4 任务等待和挂起 367

12.3.5 任务调度 368

12.3.6 信号量 369

12.4 内存管理的实现 371

12.4.1 内存寻址 371

12.4.2 伙伴系统算法 373

12.4.3 Cache与Slab分配器 375

12.5 中断与异常 378

12.6 Nanos的PCI总线驱动和8139网卡驱动 380

12.6.1 PCI总线驱动 380

12.6.2 设计通用PCI设备驱动接口 383

12.6.3 rtl8139网卡驱动程序的实现 384

12.7.1 系统的引导 386

12.7 操作系统的初始化 386

12.7.2 内存管理的初始化 387

12.7.3 其他部分的初始化 388

12.8 网卡的半轮询工作模式 389

12.9 网络地址转换——NAT 391

12.9.1 模块的定义 391

12.9.2 NAT模块 392

12.9.3 模块的实现 393

12.10 小结 406

第13章 嵌入式系统案例——基于Linux的家用网关 407

13.1 系统概述 407

13.1.1 硬件设计 407

13.1.2 软件设计 408

13.1.3 准备工作 408

13.2 搭建基本系统 409

13.2.1 编译工具链 410

13.2.2 内核的编译 411

13.2.3 BusyBox的编译和安装 412

13.2.4 系统的配置 413

13.2.5 内核的安装 414

13.3 创建网络连接 415

13.3.1 静态IP的设置 416

13.3.2 动态IP客户端 417

13.3.3 宽带拨号客户端PPP和PPPoE 417

13.4 安装和配置网络服务 418

13.4.1 telnetd服务 418

13.4.2 网页服务器 419

13.4.3 iptables的安装 420

13.4.4 NAT、端口映射和防火墙的实现 420

13.4.5 其他的网络服务 422

13.5 文件系统的压缩 422