Linux与嵌入式系统

Linux与嵌入式系统
作 者: 李善平 刘文峰 王焕龙
出版社: 清华大学出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Linux操作系统 程序设计
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  李善平,计算机应用专业博士,浙江大学教授.博士生导师。自1994年起担任浙江大学计算机学院的操作系统教学,开设《操作系统》、《Linux操作系统实验》、《高级操作系统》等课程。同时从事计算机学院本科和研究生的操作系统教学。合著有《Linux操作系统及实验教程》、《Linux24版内核分析大全》、《边干边学:Linux内核指导》等教材。近年的研究方向为分布式计算、信息集成等,分析Linux内核,开发过若干嵌入式系统。本书即反映了作者在此方向的研发工作经历和积累。

内容简介

Linux是个优秀的操作系统,嵌入式系统则是近年来的热门话题。本书既是作者在运用Linux研究和开发嵌入式系统的过程中资料与经验的总结,也是把二者结合起来的集中体现。书中有对主流嵌入式操作系统、Linux操作系统、基于Linux的嵌入式操作系统的综述,更主要的是系统介绍了利用Linux开发嵌入式系统的关键技术和方法。同时,本书精选了作者研发的几个嵌入式系统的案例(机顶盒、宽带路由器、基于Linux的家用网关的设计与实现等)奉献给大家,希望能对读者有所帮助。本书内容丰富、层次清晰、力求较强的实践性和应用性,可作为高等学校有关嵌入式系统教学的教材,也可作为嵌入式系统开发与应用的参考书。 目录第1章嵌入式系统 11.1关于嵌入式系统 11.1.1嵌入式系统概念 11.1.2嵌入式处理器 21.2关于嵌入式操作系统 41.2.1从嵌入式系统到嵌入式操作系统 41.2.2典型的嵌入式操作系统 51.3嵌入式操作系统的应用 71.4典型嵌入式系统 91.4.1VxWorks和pSOS 91.4.2OSKit 161.4.3Palm OS 211.4.4μC/OS和μC/OS-II 241.4.5QNX实时操作系统 28第2章Linux 332.1Linux简介 332.1.1Linux的历史 332.1.2Linux的发行版本 342.1.3Linux的特点 362.2Linux内核 372.2.1内核概况 372.2.2进程管理 392.2.3存储管理 472.2.4文件系统管理 582.2.5设备管理 682.2.6系统启动 732.3Linux应用 752.3.1Linux在大型服务器上的应用 752.3.2Linux在桌面端的应用 762.3.3Linux在嵌入式环境中的应用 772.4主流嵌入式Linux系统 782.4.1μClinux 782.4.2RTLinux和RTAI 802.4.3MontaVista Linux 842.4.4LynxOS 87第3章嵌入式系统开发过程 903.1需求分析和概要设计 903.1.1嵌入式系统的概念和组成 903.1.2系统需求分析 903.1.3系统结构模型建立方式 913.1.4系统结构模型实现流程 923.2硬件 933.2.1嵌入式处理器 933.2.2存储设备 943.2.3外围设备 953.2.4典型的嵌入式系统开发平台 973.2.5Lineo的μC...

图书目录

第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-II 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 μClinux 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 综述 287

10.1.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 任务管理的实现 363

12.3.1 任务状态 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 操作系统的初始化 386

12.7.1 系统的引导 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