书籍详情
Linux与嵌入式系统
作者:李善平, 刘文峰, 王焕龙编著
出版社:清华大学出版社
出版时间:2006-02-01
ISBN:9787302124863
定价:¥38.00
购买这本书可以去
内容简介
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的μCSimm 983.2.6ARM的ARM Evaluator-7T 1023.3软件 1063.3.1嵌入式系统的软件组成 1063.3.2嵌入式软件的基本开发流程 1093.3.3嵌入式操作系统 1103.4嵌入式系统软件开发过程 1113.4.1开发 1113.4.2编译和连接 1123.4.3重定位和下载 1133.4.4调试 113第4章嵌入式Linux系统的开发技术 1164.1快速启动 1164.2开机画面 1214.2.1隐藏字符信息 1214.2.2显示用户定义的画面 1224.3ramdisk技术 1234.4系统小型化 1254.4.1内核配置 1254.4.2嵌入式C库 1274.4.3小型shell 1304.5系统移植 1324.5.1建立交叉编译环境 1324.5.2内核移植 1364.5.3bootloader 139第5章嵌入式Linux系统的进程 1415.1Linux在实时方面的缺陷 1415.2Linux实时化的关键问题 1435.3Linux实时化改造的典型方法 1445.3.1外部实时性扩展 1445.3.2内部实时性改造 1605.4实时应用程序的编写 1645.5实时程序的测试 167第6章嵌入式Linux系统的存储管理 1696.1缺少MMU支持的内存管理 1696.1.13种内存管理模型 1706.1.2标准Linux的内存管理 1706.1.3μClinux的内存管理 1716.1.4μClinux内存管理的局限性 1726.2μClinux内存管理的实现 1736.2.1内存管理数据结构 1736.2.2物理空间管理 1746.2.3内核内存的申请和释放 1756.2.4内存映射 1766.3内存管理模块的启动初始化 1786.3.1setup_arch() 1786.3.2paing_init() 1796.3.3free_area_init() 1806.3.4mem_init() 1806.4可执行程序的加载 1806.4.1用户程序的内存分布 1806.4.2reloc段机制 1816.4.3flat可执行文件格式 1826.4.4执行文件加载流程 183第7章嵌入式Linux系统的文件系统 1877.1嵌入式系统的存储 1877.2文件系统类型 1887.2.1cramfs 1887.2.2romfs 1907.3日志文件系统 1937.3.1文件系统完整性 1937.3.2日志文件系统 1947.3.3jffs与jffs2文件系统 1957.3.4ReiserFS文件系统 1977.3.5ext3文件系统 1987.3.6xfs文件系统 1997.4文件系统的结构 2007.4.1/etc 2017.4.2/bin 2047.4.3/sbin 2057.4.4/dev 2067.5小结 207第8章嵌入式Linux的GUI 2088.1嵌入式GUI 2088.1.1嵌入式GUI的概念 2088.1.2一些成熟的嵌入式GUI 2098.2典型的嵌入式GUI-Microwindows 2108.2.1Microwindows的设备驱动 2118.2.2与设备无关的图形引擎 2148.2.3Nano-X的窗口管理和API 2188.2.4Microwindows在Linux Frame Buffer上运行 2298.3其他知名嵌入式GUI 2308.3.1面向实时的MiniGUI 2308.3.2应用广泛的Qt/Embedded 2328.4嵌入式GUI的应用 2338.4.1嵌入式GUI上的其他软件 2338.4.2嵌入式GUI的应用 2368.5小结 237第9章嵌入式Linux系统的网络互联及其优化技术 2389.1嵌入式Internet及其应用 2389.1.1嵌入式Internet技术的兴起 2389.1.2嵌入式Internet技术 2409.2网络协议栈的定制 2439.2.1Linux的网络代码分布及特点 2439.2.2网络部分内核编译配置 2459.2.3TCP/IP协议的定制 2479.3Linux中TCP/IP协议应用优化技术 2539.3.1实现快速上下文切换的设想 2539.3.2网络服务器 2559.4Linux IP报文转发及防火墙实现分析 2609.4.1IP数据报文流 2609.4.2netfilter框架 2639.4.3netfilter的网络地址转换(NAT)的实现 2679.4.4IPTables: netfilter体系的规则载体 2719.5基于Linux的家庭网关及其优化技术 2739.5.1改变网络设备的工作模式 2749.5.2转发报文不再往上经由IP层 2779.5.3NAT的重写 280第10章嵌入式系统集成开发环境 28610.1综述 28710.1.1集成开发环境 28710.1.2嵌入式软件开发 28810.1.3Python开发环境 29110.2代码编辑模块 29210.2.1代码编辑功能 29210.2.2PygtkScintilla 29310.2.3EideP代码编辑模块的实现 29410.3软件调试模块 29610.3.1软件调试功能简介 29610.3.2gdb前端(front-end)软件分析 29710.3.3gdb图形前端的实现 29810.3.4输出信息提取的实现 30010.3.5功能实现 30110.4JTAG在线调试的实现 30210.4.1标准的JTAG协议 30310.4.2PXA255中JTAG调试接口协议 30510.4.3PXA255中debug相关的寄存器及其访问方式 30710.4.4PXA255中debug相关的JTAG命令 31210.4.5JTAG在线调试实现思想 31410.4.6底层JTAG操作模块 31510.4.7host debugger 31810.4.8Pygdbserver 32610.4.9debug handler 32910.4.10用JTAG调试的例子 33310.5小结 335第11章嵌入式系统案例:机顶盒 33611.1机顶盒需求分析 33611.1.1机顶盒基本概念 33611.1.2所需功能 33711.2机顶盒概要设计 33811.2.1建立需求库 33811.2.2进行需求映射 33911.3机顶盒硬件设计 34011.4机顶盒软件设计 34111.4.1GUI设计 34311.4.2系统裁减和压缩 34811.4.3网络设计 35511.4.4系统启动优化 35811.5小结 359第12章嵌入式系统案例:宽带路由器 36012.1宽带路由器及Nanos操作系统 36012.1.1典型宽带路由器的功能 36012.1.2Nanos操作系统 36112.2操作系统的设计 36112.2.1Nanos操作系统的设计思想 36112.2.2关键部分的设计思想 36212.3任务管理的实现 36312.3.1任务状态 36312.3.2任务控制块和就绪表 36412.3.3任务的创建与删除 36612.3.4任务等待和挂起 36712.3.5任务调度 36812.3.6信号量 36912.4内存管理的实现 37112.4.1内存寻址 37112.4.2伙伴系统算法 37312.4.3Cache与Slab分配器 37512.5中断与异常 37812.6Nanos的PCI总线驱动和8139网卡驱动 38012.6.1PCI总线驱动 38012.6.2设计通用PCI设备驱动接口 38312.6.3rtl8139网卡驱动程序的实现 38412.7操作系统的初始化 38612.7.1系统的引导 38612.7.2内存管理的初始化 38712.7.3其他部分的初始化 38812.8网卡的半轮询工作模式 38912.9网络地址转换:NAT 39112.9.1模块的定义 39112.9.2NAT模块 39212.9.3模块的实现 39312.10小结 406第13章嵌入式系统案例:基于Linux的家用网关 40713.1系统概述 40713.1.1硬件设计 40713.1.2软件设计 40813.1.3准备工作 40813.2搭建基本系统 40913.2.1编译工具链 41013.2.2内核的编译 41113.2.3BusyBox的编译和安装 41213.2.4系统的配置 41313.2.5内核的安装 41413.3创建网络连接 41513.3.1静态IP的设置 41613.3.2动态IP客户端 41713.3.3宽带拨号客户端PPP和PPPoE 41713.4安装和配置网络服务 41813.4.1telnetd服务 41813.4.2网页服务器 41913.4.3iptables的安装 42013.4.4NAT、端口映射和防火墙的实现 42013.4.5其他的网络服务 42213.5文件系统的压缩 422
作者简介
李善平,计算机应用专业博士,浙江大学教授.博士生导师。自1994年起担任浙江大学计算机学院的操作系统教学,开设《操作系统》、《Linux操作系统实验》、《高级操作系统》等课程。同时从事计算机学院本科和研究生的操作系统教学。合著有《Linux操作系统及实验教程》、《Linux24版内核分析大全》、《边干边学:Linux内核指导》等教材。近年的研究方向为分布式计算、信息集成等,分析Linux内核,开发过若干嵌入式系统。本书即反映了作者在此方向的研发工作经历和积累。
目录
第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
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
猜您喜欢