图书介绍
ARM嵌入式Linux系统开发详解 第2版PDF|Epub|txt|kindle电子书版本网盘下载
![ARM嵌入式Linux系统开发详解 第2版](https://www.shukui.net/cover/9/35031720.jpg)
- 弓雷等编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302340522
- 出版时间:2014
- 标注页数:466页
- 文件大小:168MB
- 文件页数:486页
- 主题词:Linux操作系统
PDF下载
下载说明
ARM嵌入式Linux系统开发详解 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1篇 Linux嵌入式开发基础篇2
第1章 嵌入式系统入门2
1.1 什么是嵌入式系统2
1.2 嵌入式系统应用领域2
1.2.1 家用电器和电子类产品2
1.2.2 交通工具3
1.2.3 公共电子设施3
1.3 嵌入式系统发展4
1.3.1 嵌入式微控制器4
1.3.2 嵌入式微处理器5
1.3.3 未来嵌入式系统发展的方向5
1.4 典型的嵌入式系统组成6
1.5 小结6
第2章 嵌入式软硬件系统7
2.1 电路基本知识7
2.1.1 什么是模拟电路7
2.1.2 什么是数字电路7
2.1.3 数制转换8
2.2 计算机组成原理9
2.2.1 计算机体系的发展9
2.2.2 中央处理器9
2.2.3 存储系统10
2.2.4 总线系统10
2.2.5 输入输出系统11
2.3 软件基础知识11
2.3.1 什么是软件11
2.3.2 软件开发流程12
2.3.3 常见的软件开发模型12
2.3.4 计算机编程语言13
2.3.5 数据结构13
2.4 操作系统知识14
2.4.1 什么是操作系统14
2.4.2 操作系统的发展历史14
2.4.3 操作系统由什么组成15
2.4.4 几种操作系统的设计思路15
2.4.5 操作系统分类16
2.5 小结16
第3章 ARM处理器17
3.1 微处理器和微控制器17
3.2 ARM处理器介绍17
3.2.1 ARM微处理器的应用领域18
3.2.2 ARM的功能特点18
3.3 ARM指令集19
3.3.1 算术运算指令19
3.3.2 逻辑运算指令20
3.3.3 分支指令21
3.3.4 数据传送指令21
3.4 ARM的结构22
3.4.1 ARM体系结构的命名方法22
3.4.2 处理器系列划分23
3.4.3 处理器工作模式23
3.4.4 存储系统24
3.4.5 寻址方式25
3.5 ARM的功能选型27
3.5.1 ARM的选型原则27
3.5.2 几种常见的ARM核处理器选型参考29
3.6 小结30
第4章 嵌入式Linux31
4.1 常见的嵌入式操作系统31
4.1.1 VxWorks31
4.1.2 Windows CE32
4.1.3 PalmOS32
4.1.4 Symbian32
4.2 嵌入式Linux操作系统32
4.2.1 什么是Linux33
4.2.2 Linux与UNIX的不同——GPL版权协议介绍33
4.2.3 Linux发行版34
4.2.4 常见的嵌入式Linux系统35
4.3 小结35
第5章 建立软件开发环境36
5.1 独立的Linux系统36
5.1.1 安装Ubuntu Linux36
5.1.2 怎样安装、卸载软件45
5.1.3 怎样配置系统服务45
5.1.4 安装主要的开发工具45
5.1.5 安装其他的开发工具和文档46
5.2 运行在Windows上的Linux系统46
5.2.1 什么是Cygwin47
5.2.2 如何安装Cygwin47
5.2.3 安装开发环境50
5.3 Linux常用工具51
5.3.1 Linux shell和常用命令51
5.3.2 文本编辑工具vi52
5.3.3 搜索工具find和grep53
5.3.4 FTP工具57
5.3.5 串口工具minicom59
5.4 Windows常用工具61
5.4.1 代码编辑管理工具Source Insight61
5.4.2 串口工具XShell67
5.5 ARM集成开发环境ADS68
5.5.1 ADS集成开发环境介绍69
5.5.2 配置ADS调试环境69
5.5.3 建立自己的工程71
5.6 小结73
第6章 第一个Linux应用程序74
6.1 向世界问好——Hello,World!74
6.1.1 用vi编辑源代码文件74
6.1.2 用gcc编译程序75
6.1.3 执行程序75
6.2 程序背后做了什么76
6.2.1 程序执行的过程76
6.2.2 窥视程序执行中的秘密77
6.2.3 动态库的作用78
6.3 程序如何来的——编译的全部过程78
6.3.1 编译源代码79
6.3.2 连接目标文件到指定的库80
6.4 更简单的办法——用Makefile管理工程81
6.4.1 什么是Makefile81
6.4.2 它是如何工作的82
6.4.3 如何使用Makefile82
6.4.4 好的源代码管理习惯82
6.5 小结83
第2篇 Linux嵌入式开发应用篇86
第7章 Linux应用程序编程基础86
7.1 内存管理和使用86
7.1.1 堆和栈的区别86
7.1.2 内存管理函数malloc()和free()89
7.1.3 实用的内存分配函数calloc()和realloc()89
7.1.4 内存管理编程实例90
7.2 ANSI C文件管理93
7.2.1 文件指针和流93
7.2.2 存储方式94
7.2.3 标准输入、标准输出和标准错误94
7.2.4 缓冲94
7.2.5 打开、关闭文件95
7.2.6 读写文件96
7.2.7 文件流定位98
7.2.8 ANSI C文件编程实例99
7.3 POSIX文件I/O编程100
7.3.1 底层的文件I/O操作100
7.3.2 文件描述符100
7.3.3 创建/打开/关闭文件101
7.3.4 读写文件内容103
7.3.5 文件内容定位105
7.3.6 修改已打开文件的属性105
7.3.7 POSIX文件编程实例106
7.4 小结107
第8章 开发多进程/线程程序108
8.1 多进程开发108
8.1.1 什么是进程108
8.1.2 进程环境和属性109
8.1.3 创建进程110
8.1.4 等待进程结束112
8.1.5 退出进程113
8.1.6 常用进程间通信的方法115
8.1.7 进程编程实例119
8.2 多线程开发120
8.2.1 线程的概念120
8.2.2 进程和线程对比121
8.2.3 创建线程121
8.2.4 取消线程123
8.2.5 等待线程124
8.2.6 使用pthread库线程操作实例124
8.3 小结125
第9章 网络通信应用126
9.1 网络通信基础126
9.1.1 TCP/IP协议族126
9.1.2 IP协议127
9.1.3 TCP协议128
9.1.4 UDP协议129
9.1.5 学习分析协议的方法129
9.2 Socket通信基本概念131
9.2.1 创建socket对象131
9.2.2 面向连接的Socket通信实现132
9.2.3 面向连接的echo服务编程实例134
9.2.4 无连接的Socket通信实现138
9.2.5 无连接的时间服务编程实例139
9.3 Socket高级应用142
9.3.1 Socket超时处理142
9.3.2 使用Select机制处理多连接143
9.3.3 使用poll机制处理多连接144
9.3.4 多线程环境Socket编程146
9.4 小结146
第10章 串口通信编程147
10.1 串口介绍147
10.1.1 什么是串口147
10.1.2 串口工作原理147
10.1.3 串口流量控制148
10.2 开发串口应用程序149
10.2.1 操作串口需要用到的头文件149
10.2.2 串口操作方法149
10.2.3 串口属性设置150
10.2.4 与Windows串口终端通信154
10.3 串口应用实例——手机短信发送156
10.3.1 PC与手机连接发送短信的物理结构156
10.3.2 AT指令介绍157
10.3.3 GSM AT指令集157
10.3.4 PDU编码方式158
10.3.5 建立与手机的连接159
10.3.6 使用AT指令发送短信160
10.4 小结163
第11章 嵌入式GUI程序开发164
11.1 Linux GUI介绍164
11.1.1 Linux GUI的发展164
11.1.2 常见的嵌入式GUI165
11.2 开发图形界面程序166
11.2.1 安装Qt开发环境166
11.2.2 建立简单的Qt程序167
11.2.3 Qt库编程结构170
11.3 深入Qt编程171
11.3.1 使用Widget171
11.3.2 对话框程序设计172
11.3.3 信号与槽系统176
11.4 移植Qtopia到ARM开发板177
11.4.1 需要的资源177
11.4.2 准备工作177
11.4.3 编译主机Qt工具178
11.4.4 交叉编译qtopia179
11.5 小结180
第12章 软件项目管理181
12.1 源代码管理181
12.1.1 什么是软件的版本181
12.1.2 版本控制的概念182
12.2 版本控制系统Subversion183
12.2.1 在Linux系统下使用Subversion服务端183
12.2.2 在Windows系统下使用TortoiseSVN客户端185
12.3 开发文档管理——常见的开发文档190
12.3.1 可行性研究报告191
12.3.2 项目开发计划191
12.3.3 软件需求说明书191
12.3.4 概要设计191
12.3.5 详细设计191
12.3.6 用户手册191
12.3.7 其他文档192
12.4 使用trac管理软件开发文档192
12.4.1 安装trac192
12.4.2 配置trac基本设置192
12.4.3 配置trac全局脚本195
12.4.4 设置trac的Web界面196
12.5 Bug跟踪系统199
12.5.1 Bug管理的概念和作用199
12.5.2 使用Bugzilla跟踪Bug199
12.6 小结202
第3篇 Linux系统篇204
第13章 ARM体系结构及开发实例204
13.1 ARM体系结构介绍204
13.1.1 ARM体系结构204
13.1.2 ARM指令集介绍205
13.2 编程模型206
13.2.1 数据类型206
13.2.2 处理器模式206
13.2.3 寄存器207
13.2.4 通用寄存器207
13.2.5 程序状态寄存器208
13.2.6 异常处理209
13.2.7 内存和内存I/O映射210
13.3 内存管理单元211
13.3.1 内存管理介绍211
13.3.2 内存访问顺序211
13.3.3 地址翻译过程212
13.3.4 访问权限212
13.4 常见接口和控制器213
13.4.1 GPIO接口213
13.4.2 中断控制器213
13.4.3 RTC控制器214
13.4.4 看门狗定时器214
13.4.5 试验:使用GPIO点亮LED215
13.5 小结216
第14章 深入Bootloader217
14.1 初识Bootloader217
14.1.1 PC(个人电脑)上的Bootloader217
14.1.2 什么是嵌入式系统的Bootloader217
14.1.3 嵌入式系统常见的Bootloader218
14.2 U-Boot分析219
14.2.1 获取U-Boot219
14.2.2 U-Boot工程结构分析219
14.2.3 U-Boot总体工作流程220
14.3 U-Boot启动流程分析221
14.3.1 start标号222
14.3.2 reset标号224
14.3.3 cpu_init_crit标号225
14.3.4 lowlevel_init标号227
14.3.5 relocate标号227
14.3.6 start_armboot()函数229
14.3.7 main_loop()函数232
14.4 移植U-Boot到开发板237
14.4.1 U-Boot移植的一般步骤237
14.4.2 移植U-Boot到目标开发板238
14.4.3 移植U-Boot的常见问题239
14.5 小结239
第15章 解析Linux内核240
15.1 基本知识240
15.1.1 什么是Linux内核240
15.1.2 Linux内核版本241
15.1.3 如何获取Linux内核代码241
15.1.4 编译内核241
15.2 Linux内核的子系统248
15.2.1 系统调用接口248
15.2.2 进程管理子系统250
15.2.3 内存管理子系统250
15.2.4 虚拟文件系统251
15.2.5 网络堆栈251
15.2.6 设备驱动253
15.2.7 依赖体系结构的代码254
15.3 Linux内核代码的工程结构254
15.3.1 源代码目录布局254
15.3.2 几个重要的Linux内核文件255
15.4 内核编译系统256
15.4.1 内核编译系统基本架构257
15.4.2 内核项层Makefile分析257
15.4.3 内核编译文件分析262
15.4.4 目标文件清除机制266
15.4.5 编译辅助程序267
15.4.6 KBuild变量269
15.5 小结270
第16章 嵌入式Linux启动流程271
16.1 Linux内核初始化流程271
16.2 PC的初始化流程272
16.2.1 PC BIOS功能和作用272
16.2.2 硬盘的数据结构273
16.2.3 完整的初始化流程274
16.3 嵌入式系统的初始化274
16.4 Linux内核初始化275
16.4.1 解压缩内核映像275
16.4.2 进入内核代码277
16.5 启动init内核进程279
16.6 根文件系统初始化280
16.6.1 根文件系统介绍280
16.6.2 挂载虚拟文件系统282
16.7 内核交出权限288
16.8 init进程288
16.9 初始化RAM Disk289
16.9.1 RAM Disk介绍289
16.9.2 如何使用RAM Disk289
16.9.3 实例:使用RAM Disk作为根文件系统290
16.10 小结291
第17章 Linux文件系统292
17.1 Linux文件管理292
17.1.1 文件和目录的概念292
17.1.2 文件的结构292
17.1.3 文件的类型293
17.1.4 文件系统的目录结构294
17.1.5 文件和目录的存取权限296
17.1.6 文件系统管理298
17.2 Linux文件系统原理298
17.2.1 非日志文件系统299
17.2.2 日志文件系统299
17.3 常见的Linux文件系统300
17.3.1 ext2文件系统300
17.3.2 ext3文件系统302
17.3.3 ReiserFS文件系统303
17.3.4 JFFS文件系统304
17.3.5 cramfs文件系统306
17.4 其他文件系统306
17.4.1 网络文件系统307
17.4.2 /proc影子文件系统308
17.5 小结311
第18章 建立交叉编译工具链312
18.1 什么是交叉编译312
18.2 需要哪些东西313
18.3 手工创建工具链313
18.3.1 准备工作——获取源代码314
18.3.2 开始了——建立工作环境314
18.3.3 建立Linux内核头文件315
18.3.4 编译安装binutils318
18.3.5 编译安装gcc的C编译器319
18.3.6 编译安装glibc库320
18.3.7 编译安装gcc的C、C++编译器321
18.3.8 最后的工作321
18.4 使用脚本创建工具链322
18.5 更简便的方法——获取已编译好的交叉编译环境324
18.6 小结324
第19章 强大的命令系统BusyBox325
19.1 BusyBox简介325
19.1.1 简单易懂的BusyBox325
19.1.2 BusyBox工作原理326
19.1.3 安装BusyBox327
19.2 交叉编译BusyBox329
19.3 使用BusyBox331
19.3.1 BusyBox初始化332
19.3.2 目标板BusyBox安装334
19.4 小结336
第20章 Linux内核移植337
20.1 Linux内核移植要点337
20.2 平台相关代码结构338
20.3 建立目标平台工程框架339
20.3.1 加入编译菜单项340
20.3.2 设置宏与代码文件的对应关系340
20.3.3 测试工程框架341
20.4 建立目标平台代码框架342
20.4.1 ARM处理器相关结构342
20.4.2 建立machine desc结构344
20.4.3 加入处理函数344
20.4.4 加入定时器结构345
20.4.5 测试代码结构345
20.5 构建目标板代码345
20.5.1 处理器初始化345
20.5.2 端口映射347
20.5.3 中断处理349
20.5.4 定时器处理349
20.5.5 编译最终代码349
20.6 小结349
第21章 内核和应用程序调试技术350
21.1 使用gdb调试应用程序概述350
21.2 基本的调试技术350
21.2.1 列出源代码353
21.2.2 断点管理355
21.2.3 执行程序357
21.2.4 显示程序变量357
21.2.5 信号管理358
21.2.6 调试实例358
21.3 多进程调试359
21.4 调试意外终止的程序361
21.5 内核调试技术363
21.5.1 printk打印调试信息364
21.5.2 使用/proc虚拟文件系统364
21.5.3 使用KDB调试工具367
21.5.4 KDB调试指令369
21.6 小结371
第4篇 Linux嵌入式驱动开发篇374
第22章 Linux设备驱动374
22.1 设备驱动介绍374
22.2 Linux内核模块375
22.2.1 内核模块简介375
22.2.2 内核模块的结构375
22.2.3 内核模块的加载和卸载376
22.2.4 编写一个基本的内核模块377
22.2.5 编译内核模块378
22.2.6 为内核模块添加参数379
22.3 Linux设备驱动380
22.3.1 PCI局部总线介绍380
22.3.2 Linux设备驱动基本概念381
22.3.3 字符设备381
22.3.4 块设备384
22.3.5 网络设备385
22.4 字符设备驱动开发实例385
22.4.1 开发一个基本的字符设备驱动385
24.4.2 测试字符设备驱动387
22.5 小结388
第23章 网络设备驱动程序389
23.1 网络基础知识389
23.1.1 ISO/OSI网络参考模型389
23.1.2 TCP/IP协议390
23.2 以太网基础392
23.2.1 工作原理393
23.2.2 常见以太网标准393
23.2.3 拓扑结构394
23.2.4 工作模式394
23.3 网卡工作原理394
23.4 内核网络分层结构396
23.4.1 内核网络结构396
23.4.2 与网络有关的数据结构396
23.4.3 内核网络部分的全局变量398
23.5 内核网络设备驱动框架399
23.5.1 net_device结构399
23.5.2 数据包接收流程401
23.5.3 数据包发送流程402
23.6 实例:DM9000网卡驱动分析403
23.6.1 DM9000芯片介绍403
23.6.2 网卡驱动程序框架404
23.6.3 DM9000网卡驱动主要数据结构404
23.6.4 加载驱动程序405
23.6.5 停止和启动网卡411
23.6.6 发送数据包412
23.6.7 接收数据包415
23.6.8 中断和定时器处理417
23.7 小结419
第24章 Flash设备驱动420
24.1 Linux Flash驱动结构420
24.1.1 什么是MTD420
24.1.2 MTD系统结构421
24.2 Flash设备基础422
24.2.1 存储原理422
24.2.2 性能比较423
24.3 内核MTD层424
24.3.1 mtd_info结构424
24.3.2 mtd_part结构427
24.3.3 mtd_partition结构428
24.3.4 map_info结构428
24.3.5 nand_chip结构430
24.4 Flash设备框架431
24.4.1 NOR Flash设备驱动框架431
24.4.2 NAND Flash设备驱动框架432
24.5 Flash设备驱动实例——NOR Flash设备驱动剖析433
24.5.1 数据结构433
24.5.2 驱动初始化434
24.5.3 驱动卸载435
24.6 Flash设备驱动实例——NAND Flash设备驱动分析436
24.6.1 S3C2440 NAND控制器介绍436
24.6.2 数据结构437
24.6.3 驱动初始化438
24.6.4 驱动卸载442
24.6.5 初始化NAND控制器443
24.6.6 设置芯片操作444
24.6.7 电源管理446
24.7 小结447
第25章 USB驱动开发448
25.1 USB体系介绍448
25.1.1 USB设计目标448
25.1.2 USB体系概述449
25.1.3 USB体系工作流程450
25.2 USB驱动程序框架450
25.2.1 Linux内核USB驱动框架450
25.2.2 主机驱动结构453
25.2.3 设备驱动结构456
25.2.4 USB驱动程序框架458
25.3 USB驱动实例剖析461
25.3.1 USB串口驱动461
25.3.2 USB键盘驱动463
25.4 小结466