网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 ARM嵌入式LINUX系统开发详解(第3版)
分类 计算机-操作系统
作者 弓雷
出版社 清华大学出版社
下载
简介
内容推荐
"《ARM嵌入式Linux系统开发详解(第3版)》是获得大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第3版。本书由浅入深,全面、系统地介绍基于ARM体系结构的嵌入式Linux系统开发涉及的方方面面知识,并给出53个典型实例和5个综合案例供读者实战演练。本书提供707分钟配套教学视频、程序源代码、思维导图、教学PPT、习题参考答案和软件工具等超值配套资源,帮助读者高效、直观地学习。
本书共25章,分为4篇。第1篇基础知识,包括嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境搭建、第一个Linux应用程序;第2篇应用开发,包括Linux应用程序开发基础、多进程和多线程开发、网络通信应用、串口通信编程、嵌入式GUI程序开发、软件项目管理;第3篇系统分析,包括ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux的启动流程、Linux文件系统、交叉编译工具、强大的命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术;第4篇项目实战,包括Linux设备驱动开发基础知识、网络设备驱动程序开发、Flash设备驱动开发和USB驱动开发。
本书内容丰富,实用性强,适合ARM嵌入式Linux系统开发的初学者、从业者、研究者和爱好者等相关人员阅读,也适合IT培训机构和高等院校的相关专业作为教材。
"
目录
第1篇 基础知识
第1章 嵌入式系统入门\t2
1.1 什么是嵌入式系统\t2
1.2 嵌入式系统的应用领域\t2
1.2.1 家用电器和电子类产品\t2
1.2.2 交通工具\t3
1.2.3 公共电子设施\t3
1.3 嵌入式系统的发展\t4
1.3.1 嵌入式微控制器\t4
1.3.2 嵌入式微处理器\t5
1.3.3 嵌入式系统的发展方向\t5
1.4 典型嵌入式系统的组成\t6
1.5 小结\t6
1.6 习题\t7
第2章 嵌入式软硬件系统\t8
2.1 电路基础知识\t8
2.1.1 什么是模拟电路\t8
2.1.2 什么是数字电路\t8
2.1.3 数制转换\t9
2.2 计算机基础知识\t10
2.2.1 计算机体系结构的发展\t10
2.2.2 中央处理器\t10
2.2.3 存储系统\t11
2.2.4 总线系统\t11
2.2.5 输入与输出系统\t12
2.3 软件基础知识\t12
2.3.1 什么是软件\t12
2.3.2 软件的开发流程\t13
2.3.3 常见的软件开发模型\t13
2.3.4 计算机编程语言\t14
2.3.5 数据结构\t15
2.4 操作系统基础知识\t15
2.4.1 什么是操作系统\t15
2.4.2 操作系统的发展历史\t15
2.4.3 操作系统的组成\t16
2.4.4 几种操作系统的设计思路\t16
2.4.5 操作系统的分类\t17
2.5 小结\t17
2.6 习题\t17
第3章 ARM处理器\t19
3.1 微处理器和微控制器\t19
3.2 ARM处理器简介\t19
3.2.1 ARM微处理器的应用领域\t20
3.2.2 ARM处理器的优点\t20
3.3 ARM指令集\t21
3.3.1 算术运算指令\t21
3.3.2 逻辑运算指令\t22
3.3.3 分支指令\t23
3.3.4 数据传送指令\t23
3.4 ARM体系结构\t24
3.4.1 ARM体系结构的命名方法\t24
3.4.2 处理器的划分\t25
3.4.3 处理器的工作模式\t25
3.4.4 存储系统\t26
3.4.5 寻址方式\t27
3.5 ARM的功能选型\t29
3.5.1 ARM的选型原则\t29
3.5.2 几种常见的ARM核处理器选型参考\t31
3.6 小结\t32
3.7 习题\t33
第4章 嵌入式Linux\t34
4.1 常见的嵌入式操作系统\t34
4.1.1 VxWorks简介\t34
4.1.2 Windows CE简介\t35
4.1.3 PalmOS简介\t35
4.1.4 Android简介\t35
4.2 嵌入式Linux操作系统\t36
4.2.1 什么是Linux\t36
4.2.2 Linux与UNIX的不同——GPL版权协议简介\t36
4.2.3 Linux发行版\t37
4.2.4 常见的嵌入式Linux系统\t38
4.3 小结\t38
4.4 习题\t39
第5章 软件开发环境搭建\t40
5.1 安装Linux系统\t40
5.1.1 安装Ubuntu Linux\t40
5.1.2 安装和卸载软件\t43
5.1.3 配置系统服务\t43
5.1.4 安装主要的开发工具\t44
5.1.5 安装其他开发工具\t45
5.2 运行在Windows上的Linux系统\t45
5.2.1 什么是Cygwin\t45
5.2.2 安装Cygwin\t46
5.2.3 安装开发环境\t49
5.3 Linux的常用工具\t49
5.3.1 Linux Shell及其常用命令\t50
5.3.2 文本编辑工具vi\t51
5.3.3 搜索工具find和grep\t52
5.3.4 FTP工具\t56
5.3.5 串口工具minicom\t57
5.4 Windows的常用工具\t58
5.4.1 代码编辑管理工具Source Insight\t59
5.4.2 串口工具Xshell\t64
5.5 ARM的集成开发环境ADS\t66
5.5.1 ADS集成开发环境简介\t66
5.5.2 配置ADS调试环境\t67
5.5.3 建立自己的工程\t68
5.6 小结\t70
5.7 习题\t70
第6章 第一个Linux应用程序\t71
6.1 向世界问好——Hello,World! \t71
6.1.1 用vi编辑源代码文件\t71
6.1.2 用gcc命令编译程序\t72
6.1.3 执行程序\t72
6.2 程序背后做了什么\t73
6.2.1 程序执行的过程\t73
6.2.2 窥视程序执行中的秘密\t73
6.2.3 动态库的作用\t75
6.3 程序如何来的——编译的全过程\t75
6.3.1 编译源代码\t76
6.3.2 链接目标文件到指定的库\t77
6.4 更简单的办法——用Makefile管理工程\t77
6.4.1 什么是Makefile\t77
6.4.2 Makefile是如何工作的\t78
6.4.3 如何使用Makefile\t78
6.4.4 好的源代码管理习惯\t79
6.5 小结\t79
6.6 习题\t79
第2篇 应用开发
第7章 Linux应用程序开发基础\t82
7.1 内存管理和使用\t82
7.1.1 堆和栈的区别\t82
7.1.2 内存管理函数malloc()和free()\t84
7.1.3 实用的内存分配函数calloc()和realloc()\t85
7.1.4 内存管理编程实例\t86
7.2 ANSI C文件管理\t89
7.2.1 文件指针和流\t89
7.2.2 存储方式\t90
7.2.3 标准输入、标准输出和标准错误\t90
7.2.4 缓冲\t90
7.2.5 打开和关闭文件\t91
7.2.6 读写文件\t92
7.2.7 文件流定位\t94
7.2.8 ANSI C文件编程实例\t95
7.3 POSIX文件I/O编程\t96
7.3.1 底层的文件I/O操作\t96
7.3.2 文件描述符\t96
7.3.3 创建、打开和关闭文件\t97
7.3.4 读写文件内容\t100
7.3.5 文件内容定位\t101
7.3.6 修改已打开文件的属性\t102
7.3.7 POSIX文件编程实例\t102
7.4 小结\t103
7.5 习题\t104
第8章 多进程和多线程开发\t105
8.1 多进程开发\t105
8.1.1 什么是进程\t105
8.1.2 进程环境和属性\t106
8.1.3 创建进程\t107
8.1.4 等待进程结束\t109
8.1.5 退出进程\t110
8.1.6 常用进程间的通信方法\t112
8.1.7 进程编程实例\t116
8.2 多线程开发\t117
8.2.1 线程的概念\t117
8.2.2 进程和线程对比\t117
8.2.3 创建线程\t118
8.2.4 取消线程\t119
8.2.5 等待线程\t120
8.2.6 使用pthread库实现多线程操作实例\t121
8.3 小结\t122
8.4 习题\t122
第9章 网络通信应用\t124
9.1 网络通信基础\t124
9.1.1 TCP/IP簇\t124
9.1.2 IP简介\t125
9.1.3 TCP简介\t126
9.1.4 UDP简介\t127
9.1.5 网络协议分析工具Wireshark\t127
9.2 Socket通信的基本概念\t128
9.2.1 创建Socket对象\t128
9.2.2 面向连接的Socket通信\t129
9.2.3 面向连接的echo服务编程实例\t131
9.2.4 无连接的Socket通信\t135
9.2.5 无连接的时间服务编程实例\t136
9.3 Socket高级应用\t139
9.3.1 Socket超时处理\t139
9.3.2 使用Select机制处理多连接\t140
9.3.3 使用poll机制处理多连接\t141
9.3.4 多线程环境Socket编程\t143
9.4 小结\t143
9.5 习题\t144
第10章 串口通信编程\t145
10.1 串口简介\t145
10.1.1 什么是串口\t145
10.1.2 串口的工作原理\t145
10.1.3 串口的流量控制\t146
10.2 开发串口应用程序\t147
10.2.1 操作串口需要用到的头文件\t147
10.2.2 串口操作方法\t148
10.2.3 串口属性设置\t148
10.2.4 与Windows串口终端通信\t152
10.3 串口应用案例——发送手机短信\t154
10.3.1 PC与手机连接发送短信的物理结构\t154
10.3.2 AT指令简介\t155
10.3.3 GSM AT指令集\t155
10.3.4 PDU编码方式\t156
10.3.5 建立与手机的连接\t157
10.3.6 使用AT指令发送短信\t158
10.4 小结\t161
10.5 习题\t161
第11章 嵌入式GUI程序开发\t163
11.1 Linux GUI简介\t163
11.1.1 Linux GUI的发展\t163
11.1.2 常见的嵌入式GUI\t164
11.2 开发图形界面程序\t165
11.2.1 安装Qt开发环境\t165
11.2.2 建立简单的Qt程序\t167
11.2.3 Qt库编程结构\t170
11.3 深入Qt编程\t170
11.3.1 使用Widget\t170
11.3.2 对话框程序设计\t172
11.3.3 信号与槽系统\t176
11.4 将Qt移植到ARM开发板上\t177
11.4.1 tslib的移植\t177
11.4.2 Qt的移植\t178
11.4.3 安装Qt Creator编译环境\t179
11.4.4 设置Qt Creator编译环境\t184
11.4.5 配置开发板的环境变量\t187
11.5 模拟器QEMU\t188
11.5.1 使用QEMU搭建ARM嵌入式Linux开发环境\t188
11.5.2 使用Qt程序进行测试\t191
11.6 小结\t191
11.7 习题\t191
第12章 软件项目管理\t193
12.1 源代码管理\t193
12.1.1 软件的版本\t193
12.1.2 版本控制的概念\t194
12.2 版本控制系统Git\t195
12.2.1 在Linux系统中使用Git\t195
12.2.2 在Windows系统中使用Git\t198
12.3 常见的开发文档\t202
12.3.1 可行性研究报告\t202
12.3.2 项目开发计划\t202
12.3.3 软件需求说明书\t202
12.3.4 概要设计\t203
12.3.5 详细设计\t203
12.3.6 用户手册\t203
12.3.7 其他文档\t203
12.4 文档维护工具\t203
12.4.1 Sphinx工具\t203
12.4.2 GitHub工具\t206
12.5 Bug跟踪系统\t210
12.5.1 Bug管理的概念和作用\t210
12.5.2 使用Bugzilla跟踪Bug\t211
12.6 小结\t214
12.7 习题\t214
第3篇 系统分析
第13章 ARM体系结构及开发实例\t216
13.1 ARM体系结构\t216
13.1.1 ARM体系结构简介\t216
13.1.2 ARM指令集简介\t217
13.2 编程模型\t218
13.2.1 数据类型\t218
13.2.2 处理器模式\t218
13.2.3 寄存器\t219
13.2.4 通用寄存器\t219
13.2.5 程序状态寄存器\t221
13.2.6 异常处理\t221
13.2.7 内存及其I/O映射\t222
13.3 内存管理单元\t223
13.3.1 内存管理简介\t223
13.3.2 内存访问顺序\t224
13.3.3 地址翻译过程\t224
13.3.4 内存访问权限\t225
13.4 常见的接口和控制器\t225
13.4.1 GPIO简介\t225
13.4.2 中断控制器\t226
13.4.3 RTC控制器\t226
13.4.4 看门狗定时器\t227
13.4.5 使用GPIO点亮LED实例\t227
13.5 小结\t228
13.6 习题\t228
第14章 深入Bootloader\t230
14.1 初识Bootloader\t230
14.1.1 PC的Bootloader\t230
14.1.2 什么是嵌入式系统的Bootloader\t231
14.1.3 嵌入式系统常见的Bootloader\t231
14.2 U-Boot分析\t232
14.2.1 获取U-Boot\t232
14.2.2 U-Boot工程结构分析\t232
14.2.3 U-Boot的工作流程\t233
14.3 U-Boot的启动流程分析\t234
14.3.1 _start标号\t234
14.3.2 reset标号\t237
14.3.3 cpu_init_crit标号\t238
14.3.4 lowlevel_init标号\t239
14.3.5 main标号\t240
14.3.6 board_init_f()函数\t243
14.3.7 relocate_code()函数\t243
14.3.8 board_init_r()函数\t245
14.3.9 main_loop()函数\t245
14.4 U-Boot移植\t246
14.4.1 U-Boot移植的一般步骤\t246
14.4.2 将U-Boot移植到目标开发板上\t247
14.4.3 U-Boot移植的常见问题\t249
14.5 小结\t249
14.6 习题\t249
第15章 解析Linux内核\t251
15.1 基础知识\t251
15.1.1 什么是Linux内核\t251
15.1.2 Linux内核的版本\t252
15.1.3 如何获取Linux内核代码\t252
15.1.4 编译内核\t252
15.2 Linux内核的子系统\t258
15.2.1 系统调用接口\t259
15.2.2 进程管理子系统\t260
15.2.3 内存管理子系统\t261
15.2.4 虚拟文件系统\t261
15.2.5 网络堆栈\t262
15.2.6 设备驱动\t263
15.2.7 内核体系结构代码分离设计解析\t264
15.3 Linux内核代码的工程结构\t264
15.3.1 源代码目录布局\t264
15.3.2 几个重要的Linux内核文件\t266
15.4 内核编译系统\t267
15.4.1 内核编译系统的基本架构\t267
15.4.2 内核的顶层Makefile文件分析\t268
15.4.3 内核编译文件分析\t270
15.4.4 目标文件清除机制\t273
15.4.5 编译辅助程序\t273
15.4.6 Kbuild变量\t274
15.5 小结\t275
15.6 习题\t275
第16章 嵌入式Linux的启动流程\t277
16.1 Linux内核的初始化流程\t277
16.2 PC的初始化流程\t278
16.2.1 PC BIOS的功能和作用\t279
16.2.2 磁盘的数据结构\t279
16.2.3 PC的完整初始化流程\t280
16.3 嵌入式系统的初始化\t280
16.4 Linux内核的初始化\t282
16.4.1 解压缩内核映像\t282
16.4.2 进入内核代码\t284
16.5 启动init内核进程\t287
16.6 根文件系统的初始化\t288
16.6.1 根文件系统简介\t288
16.6.2 挂载虚拟文件系统\t290
16.7 内核交出权限\t295
16.8 systemd进程\t295
16.8.1 systemd的Unit\t295
16.8.2 配置文件\t295
16.8.3 常用命令\t297
16.9 初始化RAM Disk\t298
16.9.1 RAM Disk简介\t298
16.9.2 如何使用RAM Disk\t299
16.9.3 使用RAM Disk作为根文件系统实例\t299
16.10 小结\t300
16.11 习题\t301
第17章 Linux文件系统\t302
17.1 Linux文件管理\t302
17.1.1 文件和目录的概念\t302
17.1.2 文件的结构\t303
17.1.3 文件的类型\t303
17.1.4 文件系统的目录结构\t305
17.1.5 文件和目录的存取权限\t307
17.1.6 文件系统管理\t308
17.2 Linux文件系统的原理\t309
17.2.1 非日志文件系统\t309
17.2.2 日志文件系统\t310
17.3 常见的Linux文件系统\t311
17.3.1 Ext2文件系统\t311
17.3.2 Ext3文件系统\t313
17.3.3 ReiserFS文件系统\t314
17.3.4 JFFS文件系统\t315
17.3.5 CRAMFS文件系统\t317
17.4 其他文件系统\t317
17.4.1 网络文件系统\t317
17.4.2 /proc影子文件系统\t319
17.5 小结\t321
17.6 习题\t322
第18章 交叉编译工具\t323
18.1 什么是交叉编译\t323
18.2 交叉编译产生的原因\t324
18.3 安装交叉编译工具的条件\t324
18.4 如何安装交叉编译工具\t324
18.4.1 手动安装\t324
18.4.2 使用apt工具安装\t326
18.4.3 测试\t326
18.5 小结\t326
18.6 习题\t327
第19章 强大的命令系统BusyBox\t328
19.1 BusyBox简介\t328
19.1.1 简单易懂的BusyBox\t328
19.1.2 BusyBox的工作原理\t329
19.1.3 安装BusyBox\t330
19.2 交叉编译BusyBox\t333
19.3 在目标板上安装BusyBox\t335
19.4 小结\t337
19.5 习题\t337
第20章 Linux内核移植\t338
20.1 Linux内核移植的要点\t338
20.2 Linux内核的平台代码结构\t339
20.3 实现交叉编译\t340
20.3.1 加入编译菜单项\t342
20.3.2 实现编译\t343
20.4 小结\t344
20.5 习题\t344
第21章 内核和应用程序调试技术\t345
21.1 使用gdb调试应用程序\t345
21.2 基本的调试技术\t345
21.2.1 列出源代码\t348
21.2.2 断点管理\t350
21.2.3 执行程序\t352
21.2.4 显示程序变量\t352
21.2.5 信号管理\t353
21.2.6 调试实例\t354
21.3 多进程调试\t354
21.4 调试意外终止的程序\t357
21.5 内核调试方法\t359
21.5.1 printk打印调试信息\t359
21.5.2 动态输出\t360
21.5.3 BUG_ON()和WARN_ON()宏\t360
21.5.4 使用/proc虚拟文件系统\t363
21.6 小结\t364
21.7 习题\t364
第4篇 项目实战
第22章 Linux设备驱动开发基础知识\t366
22.1 设备驱动简介\t366
22.2 Linux内核模块简介\t367
22.2.1 内核模块速览\t367
22.2.2 内核模块的结构\t367
22.2.3 内核模块的加载和卸载\t368
22.2.4 编写一个基本的内核模块\t369
22.2.5 编译内核模块\t370
22.2.6 为内核模块添加参数\t371
22.3 Linux设备驱动工作方式简介\t372
22.3.1 PCI局部总线简介\t372
22.3.2 Linux设备驱动的基本概念\t373
22.3.3 字符设备\t374
22.3.4 块设备\t376
22.3.5 网络设备\t377
22.4 字符设备驱动开发案例\t377
22.4.1 开发一个基本的字符设备驱动\t377
24.4.2 测试字符设备\t380
22.5 小结\t381
22.6 习题\t381
第23章 网络设备驱动程序开发\t382
23.1 网络基础知识\t382
23.1.1 OSI网络参考模型\t382
23.1.2 Linux系统内核与TCP/IP\t383
23.2 以太网基础\t385
23.2.1 工作原理\t386
23.2.2 常见的以太网标准\t386
23.2.3 拓扑结构\t387
23.2.4 工作模式\t387
23.3 网卡的工作原理\t388
23.4 内核网络分层结构\t389
23.4.1 内核网络结构\t389
23.4.2 与网络有关的数据结构\t390
23.4.3 内核网络部分的全局变量\t391
23.5 内核网络设备驱动框架\t392
23.5.1 net_device结构\t392
23.5.2 数据包的接收流程\t394
23.5.3 数据包的发送流程\t395
23.6 DM9000网卡驱动分析案例\t396
23.6.1 DM9000芯片简介\t396
23.6.2 网卡驱动程序框架\t396
23.6.3 DM9000网卡驱动的数据结构\t397
23.6.4 加载驱动程序\t398
23.6.5 停止和启动网卡\t402
23.6.6 发送数据包\t403
23.6.7 接收数据包\t404
23.6.8 中断的处理\t405
23.7 小结\t406
23.8 习题\t406
第24章 Flash设备驱动开发\t407
24.1 Linux Flash驱动结构\t407
24.1.1 什么是MTD\t407
24.1.2 MTD系统结构\t408
24.2 Flash设备基础\t409
24.2.1 存储原理\t409
24.2.2 性能比较\t410
24.3 内核MTD层\t411
24.3.1 mtd_info结构\t411
24.3.2 mtd_part结构\t415
24.3.3 mtd_partition结构\t415
24.3.4 map_info结构\t416
24.3.5 nand_chip结构\t418
24.4 Flash设备框架\t419
24.4.1 NOR Flash设备驱动框架\t419
24.4.2 NAND Flash设备驱动框架\t420
24.5 NAND Flash设备驱动分析案例\t421
24.5.1 S3C2440 NAND控制器简介\t421
24.5.2 数据结构\t423
24.5.3 注册驱动\t424
24.5.4 驱动卸载\t427
24.5.5 初始化NAND控制器\t427
24.5.6 设置芯片操作\t429
24.5.7 电源管理\t431
24.6 小结\t432
24.7 习题\t432
第25章 USB驱动开发\t433
25.1 USB体系概述\t433
25.1.1 USB的设计目标\t433
25.1.2 USB体系简介\t434
25.1.3 USB体系的工作流程\t435
25.2 USB驱动程序框架\t435
25.2.1 Linux内核USB驱动框架简介\t435
25.2.2 主机驱动结构\t438
25.2.3 设备驱动结构\t442
25.2.4 USB驱动程序框架\t445
25.3 USB驱动案例剖析\t447
25.3.1 USB串口驱动\t447
25.3.2 USB键盘驱动\t449
25.4 小结\t452
25.5 习题\t452
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/2/22 16:32:34