图书介绍
嵌入式Linux系统工程师实训教程【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- 庄严,王光宇,杨海峰编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302280446
- 出版时间:2012
- 标注页数:556页
- 文件大小:197MB
- 文件页数:575页
- 主题词:Linux操作系统-程序设计-教材
PDF下载
下载说明
嵌入式Linux系统工程师实训教程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一篇 开发基础篇3
第1章 嵌入式基础知识3
1.1 知识结构4
1.1.1 应用软件开发4
1.1.2 系统与驱动开发4
1.1.3 硬件开发5
1.2 嵌入式系统5
1.2.1 概念6
1.2.2 构成7
1.2.3 特点7
1.2.4 知识结构8
1.3 嵌入式Linux9
1.3.1 ARMLinux简介10
1.3.2 uCLinux简介12
1.3.3 实时Linux13
1.4 ARM Linux开发需要的知识基础15
1.5 素质培养15
1.6 学习建议17
1.7 本章小结17
1.8 课后习题17
第2章 嵌入式完全实例19
2.1 ARMLinux项目概述20
2.1.1 软硬件环境及其搭建20
2.1.2 嵌入式Linux系统开发20
2.2 ARMLinux项目流程22
2.2.1 整体架构22
2.2.2 启动加载程序Bootloader22
2.2.3 操作系统内核22
2.2.4 根文件系统22
2.2.5 驱动程序22
2.2.6 应用程序22
2.3 完全实例介绍23
2.3.1 搭建交叉开发环境24
2.3.2 烧写Bootloader24
2.3.3 烧写内核24
2.3.4 烧写根文件系统24
2.3.5 发布应用程序24
2.4 技能训练24
2.4.1 完全安装流程24
2.4.2 运行结果25
2.5 本章小结25
2.6 课后习题25
第3章 Linux操作系统27
3.1 Linux的介绍28
3.1.1 概述28
3.1.2 主流版本28
3.1.3 Linux的选择30
3.2 Linux的基本组成与操作30
3.2.1 Linux的基本组成30
3.2.2 Linux的基本操作31
3.3 编辑工具Vi34
3.3.1 Vi的简介34
3.3.2 基本命令34
3.4 命令列表36
3.5 Shell命令38
3.5.1 Shell的介绍38
3.5.2 Shell的常用命令39
3.5.3 Shell的配置文件41
3.5.4 Shell的语法结构41
3.5.5 命令脚本42
3.6 常用主机服务配置43
3.6.1 配置Samba43
3.6.2 配置DHCP44
3.6.3 配置TFTP46
3.6.4 配置NFS47
3.7 技能训练48
3.7.1 Vi使用举例48
3.7.2 压缩和解压缩48
3.7.3 常用服务配置49
3.8 案例特训——Linux启动设置49
3.9 本章小结50
3.10 课后习题50
第4章 Shell程序设计51
4.1 Shell编程概述52
4.1.1 为何要进行Shell编程52
4.1.2 简单Shell程序示例52
4.1.3 Shell的一般结构52
4.1.4 Shell程序的编写和执行过程53
4.1.5 Shell程序除错53
4.2 Shell编程详解53
4.2.1 变量53
4.2.2 运算符54
4.2.3 条件判断54
4.2.4 控制结构55
4.2.5 函数56
4.3 高级Shell命令56
4.3.1 正则表达式56
4.3.2 Grep57
4.3.3 Sed57
4.3.4 Awk58
4.4 技能训练58
4.4.1 Grep使用举例58
4.4.2 Sed使用举例58
4.4.3 Awk使用举例58
4.5 案例特训59
4.5.1 单文件Shell版本计算器实例59
4.5.2 多文件Shell版本计算器实例59
4.6 本章小结60
4.7 课后习题60
第5章 Linux下的程序设计63
5.1 Linux环境软件开发概述64
5.1.1 GNU计划64
5.1.2 GNU Tools65
5.1.3 代码编辑——Vi65
5.2 工程管理——Makefile65
5.2.1 Make命令67
5.2.2 隐含规则69
5.3 编译器集合——GCC的使用69
5.3.1 GCC的用法70
5.3.2 GCC选项71
5.4 工具链——Binutils75
5.4.1 Binutils简介75
5.4.2 Ar命令举例75
5.4.3 Nm命令76
5.4.4 Objcopy命令76
5.4.5 Objdump命令76
5.4.6 Readelf命令76
5.4.7 Gprof命令76
5.5 库文件——Glibc76
5.5.1 库文件命名77
5.5.2 库文件操作77
5.5.3 库文件升级78
5.5.4 库文件的使用79
5.6 调试工具GDB80
5.6.1 Kdb使用80
5.6.2 GDB使用83
5.7 交叉开发工具86
5.7.1 交叉编译86
5.7.2 制作工具链86
5.7.3 安装交叉工具链87
5.7.4 系统配置87
5.7.5 调试程序87
5.8 专业级工具88
5.8.1 UlraEdit88
5.8.2 Source Insight88
5.8.3 SecureCRT89
5.8.4 CuteFTP89
5.8.5 SVN89
5.8.6 仿真器89
5.9 技能训练90
5.9.1 GCC使用90
5.9.2 GDB调试90
5.9.3 Binutils使用90
5.9.4 交叉编译工具链的安装91
5.9.5 交叉编译工具链的使用91
5.10 案例特训92
5.10.1 Linux环境C程序设计举例92
5.10.2 ARMLinux环境C程序设计举例93
5.11 本章小结93
5.12 课后习题93
第二篇 系统开发篇97
第6章 开发基础97
6.1 硬件开发基础98
6.1.1 需求分析98
6.1.2 方案确定99
6.1.3 原理图绘制100
6.1.4 PCB板图绘制107
6.1.5 制板与调试108
6.2 ARM体系结构与编程108
6.2.1 ARM体系结构特点109
6.2.2 ARM体系结构的版本109
6.2.3 ARM存储系统概述111
6.2.4 ARM微处理器工作状态111
6.2.5 ARM处理器模式112
6.2.6 ARM异常中断113
6.2.7 ARM指令集113
6.2.8 AMBA规范114
6.2.9 AAPCS规范115
6.2.10 S3C2410/2240/6410处理器概述116
6.2.11 基于ARM Cortex-A8的S5PC100和S5PV210处理器116
6.3 软件开发基础118
6.3.1 高效的C编程118
6.3.2 软件设计技巧119
6.4 案例特训119
6.4.1 LED驱动系统介绍119
6.4.2 需求分析120
6.4.3 开发板电路原理图分析120
6.4.4 数据手册分析121
6.4.5 编码设计122
6.4.6 调试与测试123
6.4.7 部署123
6.5 本章小结123
6.6 课后习题123
第7章 启动加载Bootloader125
7.1 Bootloader简介126
7.1.1 概念126
7.1.2 功能128
7.2 Bootloader流程128
7.2.1 Stage1:汇编阶段129
7.2.2 Stage2:C语言阶段131
7.3 Vivi移植开发133
7.3.1 工程简介133
7.3.2 目录结构134
7.3.3 Makefile分析135
7.3.4 执行流程分析135
7.3.5 配置编译137
7.3.6 移植开发139
7.3.7 常用命令139
7.4 U-Boot移植开发139
7.4.1 工程简介139
7.4.2 目录结构140
7.4.3 Makefile分析142
7.4.4 流程分析142
7.4.5 配置编译143
7.4.6 移植开发146
7.4.7 调试测试149
7.4.8 常用命令149
7.4.9 环境变量151
7.5 Bootloader的烧写153
7.5.1 Vivi环境烧写根文件系统153
7.5.2 U-Boot环境烧写根文件系统153
7.6 技能训练153
7.6.1 Vivi的Makefile分析153
7.6.2 U-Boot代码执行流程分析158
7.7 案例特训-自制Bootloader159
7.8 本章小结159
7.9 课后习题159
第8章 系统内核161
8.1 系统内核概述162
8.1.1 内核简介162
8.1.2 命名规则162
8.1.3 发展历史163
8.1.4 内核模块163
8.1.5 内核特点165
8.2 嵌入式Linux 2.4移植浅析165
8.2.1 目录结构165
8.2.2 嵌入式ARM Linux 2.4Makefile导读166
8.2.3 执行流程177
8.2.4 配置编译180
8.3 嵌入式Linux 2.6移植浅析182
8.3.1 内核新特点182
8.3.2 Makefile导读184
8.3.3 执行流程185
8.3.4 配置编译186
8.4 Linux内核启动流程分析186
8.4.1 内核启动流程186
8.4.2 内核启动控制脚本187
8.5 系统调用189
8.5.1 原子操作189
8.5.2 系统调用189
8.5.3 进程原理190
8.6 Linux Kernel 3.0概述190
8.6.1 概述190
8.6.2 新特性190
8.6.3 其他191
8.7 技能训练191
8.7.1 嵌入式Linux 2.6编译191
8.7.2 内核烧写193
8.8 案例特训-内核移植实例194
8.9 本章小结194
8.10 课后习题194
第9章 文件系统197
9.1 文件系统概述198
9.1.1 文件系统的概述198
9.1.2 Linux环境文件系统198
9.1.3 基本概念199
9.2 Linux常见文件系统201
9.2.1 Extfs与Ext2fs201
9.2.2 Ext3fs202
9.2.3 Cramfs202
9.2.4 Jffs2203
9.2.5 Yaffs204
9.2.6 其他文件系统205
9.3 文件系统结构206
9.3.1 VFS206
9.3.2 MTD209
9.4 根文件系统211
9.4.1 根文件系统概述211
9.4.2 根文件系统组成211
9.4.3 制作根文件系统212
9.5 “瑞士军刀”Busybox212
9.5.1 Busybox介绍212
9.5.2 代码简要分析213
9.5.3 配置编译213
9.6 根文件系统制作213
9.6.1 制作Ramdisk214
9.6.2 制作Ext2fs214
9.6.3 制作Cramfs215
9.6.4 制作Jffs2215
9.6.5 制作Yaffs2217
9.7 根文件系统烧写217
9.7.1 Vivi环境烧写根文件系统217
9.7.2 U-Boot环境烧写根文件系统217
9.8 技能训练218
9.8.1 用Busybox制作根文件系统218
9.8.2 只读根文件系统Cramfs制作218
9.8.3 Yaffs2根文件系统制作218
9.9 案例特训218
9.9.1 Vivi+ARM Linux 2.4+Cramfs实践218
9.9.2 U-Boot+ARM Linux 2.6+Yaffs实践219
9.10 本章小结219
9.11 课后习题219
第三篇 应用开发篇223
第10章 任务管理223
10.1 进程控制224
10.1.1 Linux进程概述224
10.1.2 Linux进程调度224
10.2 系统调用及例程227
10.2.1 getpid228
10.2.2 fork/vfork/clone229
10.2.3 Exit/_exit230
10.2.4 exec233
10.2.5 wait/waitpid236
10.2.6 sleep237
10.3 进程间通信237
10.3.1 概述237
10.3.2 信号239
10.3.3 管道240
10.3.4 消息队列242
10.3.5 信号灯243
10.3.6 共享内存244
10.4 多线程应用246
10.4.1 线程概述246
10.4.2 POSIX线程库249
10.4.3 线程编程实例265
10.5 技能训练268
10.5.1 多进程管道通信268
10.5.2 多进程共享内存通信270
10.5.3 多进程信号通信272
10.5.4 多进程消息队列通信273
10.6 案例特训276
10.6.1 线程间信号量通信276
10.6.2 多线程编程综合实例277
10.7 本章小结283
10.8 课后习题283
第11章 文件I/O与串口通信编程285
11.1 基本概念286
11.1.1 文件的基本概念286
11.1.2 文件操作基本元素286
11.2 文件I/O286
11.2.1 文件描述符286
11.2.2 系统调用文件I/O287
11.2.3 C库函数文件I/O288
11.2.4 函数选择289
11.2.5 文件属性289
11.3 目录操作API291
11.3.1 遍历目录291
11.3.2 指针定位291
11.3.3 目录项匹配291
11.3.4 目录排序291
11.4 串口通信编程292
11.4.1 串口简介292
11.4.2 常用串口292
11.4.3 串口设备文件293
11.4.4 打开串口294
11.4.5 设置串口294
11.4.6 发送数据295
11.4.7 接收数据295
11.4.8 串口与Modem296
11.5 技能训练296
11.5.1 文件读写综合实例296
11.5.2 目录读写综合实例298
11.6 案例特训-串口转发网络程序301
11.7 本章小结303
11.8 课后习题303
第12章 网络通信编程305
12.1 基于网络的应用开发306
12.1.1 网络概述306
12.1.2 套接字Socket308
12.1.3 套接字类型309
12.2 客户机/服务器(Client/Server)模式309
12.2.1 基于连接的网络通信310
12.2.2 基于无连接的网络通信311
12.2.3 基于Socket的API312
12.3 多路复用编程314
12.3.1 多路复用314
12.3.2 select模型315
12.3.3 pselect模型315
12.3.4 poll模型316
12.3.5 epoll模型316
12.4 技能训练318
12.4.1 TCP程序实例318
12.4.2 UDP协议实例321
12.4.3 select开发实例325
12.5 案例特训-epoll开发实例325
12.6 本章小结325
12.7 课后习题325
第13章 开源软件移植327
13.1 开源工程介绍328
13.1.1 发展历史328
13.1.2 开源特点328
13.2 图形用户界面329
13.2.1 X Window桌面环境329
13.2.2 Qt与KDE330
13.2.3 GTK与GNOME330
13.2.4 MiniGUI331
13.2.5 Microwindows331
13.3 网络开源332
13.3.1 简单网管协议SNMP332
13.3.2 嵌入式浏览器Konqueror334
13.3.3 嵌入式Web服务器GoAhead335
13.3.4 服务器Boa336
13.3.5 WebKit336
13.4 数据库337
13.4.1 MySQL337
13.4.2 SQLite337
13.5 多媒体337
13.5.1 MPlayer337
13.5.2 FFmpeg339
13.6 Google-Android系统340
13.6.1 Android系统介绍340
13.6.2 Android S3C6410移植341
13.7 3G移动通信345
13.7.1 3G移动通信简介345
13.7.2 会话发起协议SIP345
13.8 开源软件移植346
13.8.1 移植简介346
13.8.2 移植过程347
13.9 技能训练347
13.9.1 SQLite移植347
13.9.2 MPlayer及其移植348
13.10 案例特训-Android及其移植348
13.11 本章小结348
13.12 课后习题348
第14章 Qt软件设计349
14.1 Qt及其使用350
14.1.1 简介350
14.1.2 程序库350
14.1.3 界面351
14.1.4 信号与槽351
14.1.5 实践-窗口程序352
14.2 Qt核心技术352
14.2.1 Qt多线程设计352
14.2.2 以Qt实现计算器356
14.2.3 Qt动态曲线程序设计358
14.2.4 Qt网络编程359
14.2.5 Qt数据库编程361
14.2.6 Qt多媒体编程362
14.2.7 Qt中文显示363
14.3 Qtopia及其移植364
14.3.1 简介364
14.3.2 移植365
14.4 技能训练370
14.4.1 FTP应用开发370
14.4.2 Qtopia移植371
14.5 案例特训371
14.5.1 项目背景371
14.5.2 硬件系统371
14.5.3 程序设计372
14.5.4 项目测试372
14.5.5 项目部署373
14.5.6 用户手册编写373
14.6 本章小结373
14.7 课后习题373
第四篇 驱动程序篇377
第15章 驱动基础377
15.1 设备管理378
15.1.1 设备文件379
15.1.2 设备识别379
15.1.3 设备分类381
15.1.4 字符设备382
15.1.5 块设备383
15.1.6 网络设备383
15.1.7 总线设备384
15.2 驱动程序384
15.2.1 驱动概述384
15.2.2 接口关系386
15.2.3 驱动功能387
15.2.4 驱动特点387
15.2.5 驱动架构387
15.3 内核模块LKM389
15.3.1 LKM概述389
15.3.2 LKM编程390
15.4 Linux 2.6驱动模型391
15.4.1 devfs文件系统391
15.4.2 sysfs文件系统392
15.4.3 kobject393
15.4.4 kset393
15.4.5 subsystem394
15.4.6 热插拔的实现394
15.4.7 设备模型元素394
15.4.8 Platform总线396
15.5 系统资源398
15.5.1 内存398
15.5.2 IO端口398
15.5.3 DMA399
15.5.4 中断404
15.5.5 时钟404
15.6 字符设备驱动405
15.6.1 编写流程405
15.6.2 设备号405
15.6.3 注册注销406
15.6.4 数据结构406
15.6.5 驱动实例410
15.7 块设备驱动概述415
15.7.1 block_device_operations415
15.7.2 gendisk415
15.7.3 request416
15.7.4 bio417
15.7.5 注册与注销418
15.7.6 驱动实例418
15.8 网络设备驱动概述418
15.8.1 基本结构418
15.8.2 基本方法420
15.8.3 数据结构422
15.8.4 CS8900A驱动实例427
15.9 USB驱动431
15.9.1 USB体系介绍431
15.9.2 USB体系工作流程432
15.9.3 USB驱动程序框架432
15.9.4 主机驱动结构433
15.9.5 Linux环境USB驱动433
15.9.6 基于USB的WIFI网卡移植434
15.10 技能训练-Linux 2.6内核模块编程435
15.11 案例特训435
15.11.1 Linux 2.6字符设备驱动编程435
15.11.2 Linux 2.6块设备驱动编程436
15.11.3 Linux 2.6网络设备驱动编程436
15.11.4 Linux 2.6环境USB设备驱动编程436
15.12 本章小结436
15.13 课后习题436
第16章 机制与策略437
16.1 概述438
16.2 中断438
16.2.1 中断基础439
16.2.2 ARM中断442
16.2.3 处理架构443
16.2.4 下半部445
16.2.5 软中断447
16.2.6 Tasklet449
16.2.7 工作队列451
16.3 时钟452
16.3.1 定时器452
16.3.2 时钟定时器实现453
16.3.3 看门狗455
16.4 并发456
16.4.1 资源共享规则456
16.4.2 原子操作456
16.4.3 信号量458
16.4.4 互斥量458
16.4.5 自旋锁459
16.5 阻塞与非阻塞461
16.5.1 阻塞与非阻塞461
16.5.2 等待队列461
16.5.3 轮询462
16.6 同步与异步463
16.6.1 信号463
16.6.2 AIO463
16.7 可移植化(Portability)464
16.7.1 自定义数据类型464
16.7.2 字节序466
16.7.3 对齐466
16.8 技能训练468
16.8.1 Tasklet实验468
16.8.2 工作队列实验469
16.9 案例特训-Linux环境多定时器实现469
16.10 本章小结471
16.11 课后习题471
第17章 驱动实例473
17.1 驱动程序开发架构474
17.1.1 需求分析474
17.1.2 详细设计474
17.1.3 编码设计475
17.1.4 调试测试475
17.1.5 结案与归档475
17.2 字符设备LED驱动设计实例475
17.2.1 需求分析475
17.2.2 详细设计475
17.2.3 Linux 2.4驱动编码设计477
17.2.4 Linux 2.6驱动编码设计480
17.2.5 调试与测试483
17.2.6 结案与归档483
17.3 复杂字符设备-触摸屏驱动移植483
17.3.1 需求分析483
17.3.2 S3C2410-Linux2.6详细设计483
17.3.3 调试与测试485
17.3.4 结案与归档485
17.4 复杂字符设备-LCD(DMA)驱动分析485
17.4.1 需求分析485
17.4.2 S3C6410-Linux2.6-LCD详细设计486
17.4.3 S3C2440-Linux2.6-LCD详细设计490
17.4.4 调试与测试492
17.4.5 结案与归档492
17.5 块设备开发-NandFlash驱动移植492
17.5.1 需求分析492
17.5.2 NandFlash驱动移植493
17.5.3 Yaffs2文件系统移植494
17.5.4 调试与测试495
17.5.5 结案与归档495
17.6 网络设备开发-CS8900495
17.6.1 需求分析495
17.6.2 详细设计495
17.6.3 调试与测试499
17.6.4 结案与归档499
17.7 网络设备开发-DM9000499
17.7.1 需求分析499
17.7.2 详细设计499
17.7.3 调试与测试500
17.7.4 结案与归档501
17.8 总线类驱动-USB501
17.8.1 需求分析501
17.8.2 详细设计501
17.8.3 调试与测试503
17.8.4 结案与归档503
17.9 技能训练504
17.9.1 数码管驱动程序移植504
17.9.2 矩阵键盘中断驱动移植506
17.9.3 基于Qtopia的驱动测试程序512
17.10 案例特训-基于QtopiaLCD和触摸屏的驱动移植514
17.11 本章小结514
17.12 课后习题514
第五篇 调试测试篇517
第18章 调试与测试517
18.1 调试技术518
18.2 Bootloader调试518
18.2.1 硬件调试器518
18.2.2 点灯519
18.2.3 串口调试519
18.3 内核调试技术519
18.3.1 printk调试技术520
18.3.2 Kprobe调试技术520
18.3.3 使用KGDB调试技术521
18.3.4 KDB调试技术521
18.3.5 BDI2000仿真器521
18.4 驱动调试方法522
18.4.1 通过DEBUG预处理522
18.4.2 通过/proc系统522
18.4.3 通过ioctl系统调用523
18.4.4 通过strace命令523
18.5 应用调试524
18.5.1 使用网络文件系统(NFS)简化调试过程524
18.5.2 多进程的调试方法525
18.5.3 多线程的调试方法526
18.5.4 运行时错误检查方法527
18.5.5 程序性能的改善527
18.5.6 代码覆盖分析528
18.5.7 Qt软件测试528
18.6 测试技术528
18.6.1 范围528
18.6.2 工具529
18.6.3 白盒测试530
18.6.4 黑盒测试530
18.6.5 压力测试531
18.6.6 交叉测试531
18.6.7 烧入固化测试531
18.6.8 可靠性评估531
18.7 技能训练532
18.7.1 U-Boot调试测试532
18.7.2 Linux测试举例534
18.8 案例特训535
18.8.1 Linux环境多进程调试实例535
18.8.2 Linux环境多线程调试实例535
18.9 本章小结535
18.10 课后习题535
第19章 基于Modbus的嵌入式工业控制系统设计539
19.1 项目概述540
19.2 总体介绍540
19.2.1 Modbus协议介绍540
19.2.2 Modbus协议的特点541
19.3 Modbus协议详细设计542
19.3.1 Modbus通信模型542
19.3.2 Modbus查询示意图543
19.3.3 Modbus的协议模型543
19.3.4 设计思路及流程544
19.3.5 Modbus数据帧结构544
19.3.6 Win32环境服务端重要代码545
19.3.7 程序运行结果547
19.4 嵌入式ARM Linux环境移植547
19.4.1 Linux环境重要的代码548
19.4.2 交叉编译环境构建549
19.4.3 嵌入式ARM Linux开发板介绍550
19.4.4 嵌入式ARM Linux开发板移植551
19.5 程序调试测试552
19.5.1 Windows环境调试552
19.5.2 Linux环境调测553
19.5.3 嵌入式ARMLinux开发板测试555
19.6 本章小结556
19.7 课后习题556
热门推荐
- 3364249.html
- 1884073.html
- 1440233.html
- 1354041.html
- 532318.html
- 3452550.html
- 797464.html
- 2771884.html
- 1509932.html
- 2816685.html
- http://www.ickdjs.cc/book_1719195.html
- http://www.ickdjs.cc/book_1158286.html
- http://www.ickdjs.cc/book_109114.html
- http://www.ickdjs.cc/book_2501068.html
- http://www.ickdjs.cc/book_3249639.html
- http://www.ickdjs.cc/book_751968.html
- http://www.ickdjs.cc/book_1781375.html
- http://www.ickdjs.cc/book_39577.html
- http://www.ickdjs.cc/book_2247482.html
- http://www.ickdjs.cc/book_1121525.html