《嵌入式C/C++系统工程师实训教程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:庄严主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302242642
  • 页数:356 页
图书介绍:嵌入式C/C++系统工程师实训教程,ISBN:9787302242642,作者:庄严,王骁,汤建敏 编著

第一篇 基础篇 3

第1章 基础知识 3

1.1 嵌入式系统 4

1.1.1 概念 4

1.1.2 构成 5

1.1.3 特点 5

1.1.4 知识结构 7

1.2 项目流程 7

1.2.1 立项阶段 8

1.2.2 需求阶段 8

1.2.3 设计阶段 8

1.2.4 实现阶段 9

1.2.5 测试阶段 9

1.2.6 部署阶段 9

1.3 开发模型 9

1.3.1 瀑布模型 9

1.3.2 原型模型 10

1.3.3 螺旋模型 10

1.4 项目组成 11

1.4.1 系统设计 11

1.4.2 客户需求 11

1.4.3 产品说明 12

1.4.4 进度表 12

1.4.5 设计文档 13

1.4.6 测试文档 13

1.4.7 项目成员 13

1.5 本章小结 14

1.6 课后习题 14

第2章 程序设计 15

2.1 计算机语言 16

2.1.1 汇编语言 16

2.1.2 C语言 16

2.1.3 C++语言 17

2.1.4 其他语言 18

2.2 开发环境 18

2.2.1 Windows环境 18

2.2.2 Linux环境 19

2.2.3 VxWorks环境 19

2.2.4 单片机环境 19

2.2.5 嵌入式系统 20

2.3 软件质量 21

2.3.1 软件质量 21

2.3.2 质量保证 22

2.3.3 CMMI 22

2.3.4 ISO9001 22

2.3.5 UML 23

2.3.6 SDL 24

2.3.7 流程图 25

2.4 编码规范 26

2.4.1 文件组织结构 26

2.4.2 命名规则 27

2.4.3 代码风格 29

2.4.4 版本控制 29

2.5 实践-HelloWorld 30

2.5.1 设计流程 30

2.5.2 实践概述 31

2.5.3 分析要求 31

2.5.4 准备环境 31

2.5.5 流程图 31

2.5.6 编辑源代码 32

2.5.7 编译运行 32

2.6 本章小结 32

2.7 课后习题 32

第二篇 C语言篇 35

第3章 编程基础 35

3.1 程序结构 36

3.1.1 顺序式计算器实例 36

3.1.2 文件组织结构 37

3.1.3 程序基本要素 37

3.1.4 程序流程控制 37

3.2 基本要素 38

3.2.1 字符与词汇 38

3.2.2 编译预处理 38

3.2.3 常量和变量 38

3.2.4 运算符 39

3.2.5 表达式 39

3.2.6 语句 39

3.2.7 函数 39

3.2.8 输入输出 40

3.2.9 书写规则 40

3.3 流程控制 40

3.3.1 顺序结构 40

3.3.2 选择结构 41

3.3.3 循环结构 41

3.4 数据类型 41

3.4.1 整型 41

3.4.2 实型 42

3.4.3 字符型 42

3.5 运算符 43

3.5.1 算术运算符 43

3.5.2 关系运算符 43

3.5.3 逻辑运算符 43

3.5.4 位运算运算符 43

3.5.5 赋值运算符 44

3.5.6 条件运算符 44

3.5.7 逗号运算符 44

3.5.8 指针运算符 44

3.5.9 求字节数运算符 44

3.5.10 特殊运算符 4

3.5.11 运算符的优先级 44

3.5.12 运算符的结合性 45

3.6 表达式 45

3.6.1 算术表达式 45

3.6.2 逻辑与关系表达式 45

3.6.3 位运算表达式 46

3.6.4 自增自减表达式 46

3.6.5 括号 46

3.7 语句 46

3.7.1 表达式语句 46

3.7.2 函数调用语句 47

3.7.3 控制语句 47

3.7.4 复合语句 47

3.7.5 空语句 47

3.7.6 赋值语句 47

3.7.7 输入输出语句 47

3.7.8 转移语句 49

3.8 main函数详解 50

3.8.1 形式 50

3.8.2 类型 50

3.8.3 参数 51

3.8.4 main执行前后 51

3.9 条件判断 52

3.9.1 布尔变量与零值比较 53

3.9.2 整型变量与零值比较 53

3.9.3 浮点变量与零值比较 53

3.9.4 指针变量与零值比较 53

3.10 数据类型转换 54

3.10.1 混合运算 54

3.10.2 隐式转换 54

3.10.3 强制转换 54

3.10.4 函数转换 54

3.10.5 构造转换 54

3.11 技能训练 55

3.11.1 选择式计算器 55

3.11.2 循环式计算器 57

3.11.3 函数式计算器 58

3.11.4 多文件计算器 60

3.12 案例特训 62

3.12.1 类型转换(Ⅰ) 62

3.12.2 类型转换(Ⅱ) 63

3.12.3 进制转换 63

3.12.4 多参main 65

3.12.5 Linux环境移植 68

3.13 本章小结 69

3.14 课后习题 69

第4章 编译运行 71

4.1 编译原理 72

4.1.1 编译阶段 72

4.1.2 预处理器 72

4.1.3 源程序分析 72

4.1.4 符号表 73

4.1.5 编译器 73

4.1.6 链接器 73

4.1.7 程序的形成 73

4.1.8 目标文件 73

4.2 运行系统 75

4.2.1 动态连接 75

4.2.2 加载执行 75

4.3 预处理 78

4.3.1 预处理 78

4.3.2 宏定义 78

4.3.3 无参宏 78

4.3.4 带参宏 79

4.3.5 文件包含 80

4.3.6 条件编译 80

4.3.7 断言assert 81

4.3.8 标准预定义宏 82

4.4 技能训练 83

4.4.1 宏练习 83

4.4.2 条件编译 83

4.4.3 Assert练习 83

4.5 案例特训 83

4.5.1 防止多重包含 83

4.5.2 标准预定义宏 83

4.6 本章小结 84

4.7 课后习题 84

第5章 调试测试 85

5.1 概念 86

5.1.1 调试 86

5.1.2 测试 86

5.1.3 调试与测试的区别 86

5.2 调试 86

5.2.1 调试步骤 86

5.2.2 调试工具 87

5.2.3 调试设置 87

5.2.4 断点设置 87

5.2.5 进程控制 87

5.2.6 条件断点 87

5.2.7 数据断点 88

5.2.8 消息断点 88

5.2.9 变量观察watch 88

5.2.10 内存观察memory 88

5.2.11 汇编观察Disassembly 88

5.2.12 寄存器观察Registers 88

5.2.13 函数调用栈Call Stack 88

5.2.14 多线程调试Threads 88

5.2.15 异常响应Exceptions 89

5.2.16 插桩调试 89

5.2.17 追踪TRACE 89

5.2.18 断言ASSERT 89

5.2.19 验证VERIFY 89

5.2.20 函数返回值 89

5.2.21 诊断信息转储Dump 90

5.3 测试 90

5.3.1 内容 90

5.3.2 分类 90

5.3.3 实施流程 90

5.3.4 测试过程 91

5.3.5 单元测试 91

5.3.6 集成测试 92

5.3.7 确认测试 92

5.3.8 系统测试 92

5.3.9 测试工具 92

5.3.10 测试用例 93

5.3.11 举例 93

5.4 技能训练 94

5.4.1 调试综合实例 94

5.4.2 测试综合实例 94

5.5 本章小结 96

5.6 课后习题 96

第6章 数组 97

6.1 数组 98

6.1.1 概述 98

6.1.2 实例 98

6.1.3 表示 99

6.2 字符数组 99

6.2.1 字符数组 99

6.2.2 字符串 99

6.3 多维数组 100

6.3.1 初始化 100

6.3.2 实例 100

6.4 技能训练 101

6.4.1 数组练习 101

6.4.2 字符串 101

6.4.3 多维数组 101

6.5 案例特训 101

6.5.1 字符串排序 101

6.6 本章小结 102

6.7 课后习题 102

第7章 指针 105

7.1 指针 106

7.1.1 指针 106

7.1.2 变量 106

7.1.3 实例 106

7.1.4 类型含义 107

7.1.5 赋值 107

7.1.6 运算 108

7.1.7 使用 108

7.1.8 参数 109

7.1.9 多级指针 109

7.1.10 字符串指针 109

7.2 指针与数组 109

7.2.1 辨析 109

7.2.2 指针数组与数组指针 109

7.2.3 实例 110

7.3 指针与函数 110

7.3.1 指针函数 110

7.3.2 函数指针 111

7.3.3 辨析 112

7.4 技能训练 112

7.4.1 指针数组与数组指针 112

7.4.2 指针函数与函数指针 112

7.5 案例特训 113

7.5.1 多级指针练习 113

7.6 本章小结 113

7.7 课后习题 113

第8章 函数 115

8.1 函数 116

8.1.1 函数的用途 116

8.1.2 模块 116

8.1.3 函数分类 117

8.1.4 函数定义 117

8.1.5 调用 119

8.1.6 参数 119

8.1.7 函数的值 121

8.1.8 嵌套 121

8.2 作用域 121

8.2.1 全局变量 121

8.2.2 局部变量 122

8.2.3 存储类别 122

8.2.4 内部函数 123

8.2.5 外部函数 123

8.3 参数传递 123

8.3.1 C参数传递机制 123

8.3.2 普通变量参数 124

8.3.3 指针变量参数 124

8.3.4 数组变量参数 124

8.3.5 引用参数传递 124

8.4 库函数 126

8.4.1 C标准库 126

8.4.2 Win32标准库 127

8.4.3 Linux标准库 127

8.5 字符串库函数 127

8.5.1 处理函数 127

8.5.2 strcpy详解 128

8.6 技能训练 129

8.6.1 函数调用 129

8.6.2 参数入栈顺序 129

8.6.3 参数传递单向性 129

8.7 案例特训 129

8.7.1 交换两个数完整版 129

8.7.2 mystrcpy函数实现 129

8.8 本章小结 129

8.9 课后习题 129

第9章 构造 131

9.1 结构 132

9.1.1 特点 132

9.1.2 变量 132

9.1.3 大小 132

9.1.4 使用 132

9.1.5 初始化 132

9.1.6 数组 133

9.1.7 指针 133

9.1.8 函数 133

9.1.9 内存分配 134

9.2 联合 135

9.2.1 概念 135

9.2.2 使用 135

9.3 枚举 137

9.3.1 概念 137

9.3.2 赋值 137

9.4 位域 138

9.4.1 位与字节 138

9.4.2 数值表示 138

9.4.3 位运算 138

9.4.4 位域 141

9.4.5 位域的使用 141

9.5 类型定义 143

9.5.1 typedef 143

9.6 技能训练 143

9.6.1 结构体 143

9.6.2 共用体 143

9.6.3 枚举 143

9.7 案例特训 143

9.7.1 结构 143

9.8 本章小结 144

9.9 课后习题 144

第10章 文件 147

10.1 文件 148

10.1.1 普通文件 148

10.1.2 设备文件 148

10.1.3 ASCII文件 148

10.1.4 二进制文件 148

10.2 文件读写 149

10.2.1 文件指针 149

10.2.2 打开文件 149

10.2.3 关闭文件 150

10.2.4 字符读写 150

10.2.5 字符串读写 151

10.2.6 数据块读写 152

10.2.7 格式化读写 153

10.2.8 随机读写 154

10.2.9 文件检测 156

10.3 技能训练 156

10.3.1 字符串读写 156

10.3.2 文件追加 156

10.3.3 文件数据块 156

10.3.4 格式化读写 156

10.4 案例特训 156

10.4.1 随机读写 156

10.5 本章小结 157

10.6 课后习题 157

第11章 内存管理 159

11.1 内存空间 160

11.1.1 C存储区 160

11.1.2 栈 160

11.1.3 堆 160

11.1.4 全局与静态区 160

11.1.5 常量区 161

11.1.6 代码区 161

11.1.7 C++存储区 161

11.1.8 操作系统内存 161

11.1.9 举例 161

11.2 堆与栈 162

11.2.1 概述 162

11.2.2 申请方式 162

11.2.3 分配方式 163

11.2.4 分配效率 163

11.2.5 空间大小 163

11.2.6 生长方向 163

11.2.7 管理方式 163

11.2.8 存储内容 163

11.2.9 碎片问题 163

11.2.10 总结 164

11.3 存储模型 164

11.3.1 变量属性 164

11.3.2 变量作用域 164

11.3.3 变量链接 164

11.3.4 变量存储期 165

11.3.5 自动变量 165

11.3.6 外部变量 166

11.3.7 静态变量 166

11.3.8 寄存器变量 167

11.3.9 volatile 168

11.4 动态内存 168

11.4.1 静态分配 168

11.4.2 动态分配 168

11.4.3 堆内存 169

11.4.4 野指针 169

11.4.5 malloc/calloc/realloc 170

11.4.6 规则 170

11.4.7 应用 170

11.5 动态内存传递 170

11.5.1 问题 170

11.5.2 操作流程 171

11.5.3 分析 171

11.5.4 解决方案 171

11.6 技能训练 174

11.6.1 变量存储 174

11.6.2 register变量 174

11.7 案例特训 174

11.7.1 动态内存传递 174

11.8 本章小结 174

11.9 课后习题 174

第12章 实践-学生管理系统 175

12.1 项目概述 176

12.2 需求分析 176

12.3 详细设计 176

12.3.1 系统模块图 176

12.3.2 组织结构图 176

12.3.3 执行流程图 177

12.3.4 数据结构 178

12.3.5 全局函数 178

12.4 实验结果 179

第三篇 提高篇 183

第13章 数据结构 183

13.1 数据结构概述 184

13.1.1 数据元素 184

13.1.2 数据结构 184

13.2 线性结构 185

13.2.1 概念 185

13.2.2 特征 185

13.2.3 存储 185

13.2.4 操作 185

13.2.5 线性顺序表实践 186

13.3 链表 188

13.3.1 构造 188

13.3.2 分类 188

13.3.3 遍历 188

13.3.4 插入 188

13.3.5 删除 189

13.3.6 单链表实践 189

13.4 栈 192

13.4.1 定义 192

13.4.2 图解 193

13.4.3 操作 193

13.4.4 实践 193

13.4.5 应用 196

13.5 队列 196

13.5.1 定义 196

13.5.2 图解 196

13.5.3 操作 196

13.5.4 实践 197

13.5.5 应用 200

13.6 二叉树 200

13.6.1 树结构 200

13.6.2 二叉树 201

13.6.3 转换 201

13.6.4 构造 202

13.6.5 遍历 202

13.6.6 线索树 202

13.6.7 实践 202

13.6.8 应用 207

13.7 图结构 207

13.7.1 定义 207

13.7.2 术语 207

13.7.3 存储 208

13.7.4 深先与广先 208

13.7.5 实践 208

13.7.6 应用 213

13.8 实践-图书管理系统 213

13.8.1 背景分析 213

13.8.2 项目概述 214

13.8.3 详细设计 214

13.8.4 调试测试 217

13.8.5 总结 217

13.9 本章小结 217

13.10 课后习题 218

第14章 常用算法 219

14.1 算法概述 220

14.1.1 算法概念 220

14.1.2 算法描述 220

14.1.3 评价标准 220

14.1.4 时间效率 221

14.1.5 空间效率 221

14.2 查找 221

14.2.1 线性查找 221

14.2.2 二叉树查找法 222

14.2.3 哈希查找 222

14.3 排序 226

14.3.1 插入排序 226

14.3.2 交换排序 227

14.3.3 选择排序 228

14.4 常用算法 228

14.4.1 递归算法 228

14.4.2 贪婪法 229

14.4.3 分治法 229

14.4.4 穷举法 229

14.5 算法实践 229

14.5.1 递归实践-八皇后问题 229

14.5.2 贪婪法实践-换零钱 232

14.5.3 分治实践-象棋比赛 234

14.5.4 穷举法实践-打印质数 236

14.6 实践-循环冗余校验CRC实现 238

14.6.1 项目概述 238

14.6.2 详细设计 239

14.6.3 运行结果 239

14.6.4 总结 240

14.7 本章小结 240

14.8 课后习题 240

第四篇 C++篇 243

第15章 C++基础 243

15.1 程序结构 244

15.1.1 Hello_world 244

15.1.2 程序结构 244

15.1.3 面向对象 244

15.2 面向对象 245

15.2.1 类 245

15.2.2 属性 246

15.2.3 方法 246

15.2.4 封装 246

15.2.5 继承 247

15.2.6 多态 250

15.2.7 对象 251

15.2.8 构造函数 252

15.2.9 析构函数 253

15.2.10 内联函数 253

15.2.11 静态成员 254

15.2.12 重载 255

15.2.13 重写 257

15.2.14 引用 257

15.2.15 内存管理 258

15.2.16 异常处理 258

15.2.17 命名空间 259

15.3 技能训练 259

15.3.1 封装 259

15.3.2 重载 260

15.3.3 友元 260

15.3.4 字符串类设计 262

15.4 案例特训 267

15.4.1 需求分析 267

15.4.2 详细设计 267

15.4.3 执行结果 269

15.4.4 总结 269

15.5 本章小结 270

15.6 课后习题 270

第16章 泛型编程 271

16.1 模板 272

16.1.1 函数模板 272

16.1.2 模板函数 273

16.1.3 类模板 273

16.1.4 模板类 275

16.2 泛型编程 275

16.2.1 抽象 275

16.2.2 STL 276

16.3 STL 277

16.3.1 容器 277

16.3.2 算法 278

16.3.3 迭代器 278

16.4 设计模式 279

16.4.1 框架 279

16.4.2 常用模式 279

16.5 技能训练 279

16.5.1 模板 279

16.5.2 List 279

16.5.3 Vector 280

16.5.4 Map 283

16.6 案例特训 283

16.6.1 求素数 283

16.7 本章小结 284

16.8 课后习题 284

第17章 应用开发 285

17.1 概述 286

17.1.1 C++标准库 286

17.1.2 软件开发包SDK 286

17.1.3 应用程序接口API 286

17.2 常用库 287

17.2.1 STL 287

17.2.2 Boost 288

17.2.3 MFC 288

17.2.4 WTL 288

17.2.5 ATL 288

17.2.6 OWL 288

17.2.7 GTK 288

17.2.8 WxWidgets 289

17.2.9 Qt 289

17.2.10 ACE 289

17.3 VC编程基础 289

17.3.1 MFC编程 289

17.3.2 简单类 291

17.3.3 消息机制 291

17.3.4 绘图系统 296

17.3.5 对话框 297

17.3.6 控件 298

17.3.7 高级主题 299

17.3.8 实践-窗口程序 300

17.4 Qt编程基础 300

17.4.1 简介 300

17.4.2 程序库 301

17.4.3 界面 301

17.4.4 信号与槽 302

17.4.5 实践-窗口程序 302

17.5 技能训练 303

17.5.1 以VC实现计算器 303

17.5.2 以Qt实现计算器 303

17.5.3 科学计算器 304

17.6 案例特训 304

17.6.1 VC-STL学生成绩评价系统 304

17.7 小结 305

17.8 课后习题 305

第18章 实践-通信 307

18.1 网络通信 308

18.1.1 背景分析 308

18.1.2 项目概述 308

18.1.3 网络专业知识 308

18.1.4 详细设计 310

18.1.5 调试测试 311

18.2 串口通信 311

18.2.1 背景分析 311

18.2.2 项目概述 311

18.2.3 串口专业知识 312

18.2.4 详细设计 316

18.2.5 调试测试 318

第五篇 综合篇 323

第19章 实践-嵌入式编程 323

19.1 整体设计 324

19.1.1 开发背景 324

19.1.2 整体设计 324

19.1.3 硬件平台 324

19.1.4 交叉环境 324

19.1.5 硬件驱动 324

19.1.6 任务管理 325

19.1.7 面向对象 326

19.2 内存管理 326

19.2.1 数据指针 326

19.2.2 函数指针 326

19.2.3 内存申请 327

19.2.4 关键字const 327

19.2.5 关键字volatile 328

19.2.6 字长与位宽 329

19.2.7 字节对齐 329

19.2.8 字节顺序 332

19.3 人机界面 334

19.3.1 LED 334

19.3.2 按键 334

19.3.3 LCD 334

19.3.4 通信接口 334

19.4 性能优化 334

19.4.1 死循环 334

19.4.2 延时 335

19.4.3 使用宏 335

19.4.4 关键字register 336

19.4.5 内嵌汇编 336

19.4.6 位操作 336

19.4.7 define/typedef 337

19.5 实践-LED驱动系统 337

19.5.1 需求分析 337

19.5.2 详细设计 338

19.5.3 编码设计 339

19.5.4 调试与测试 340

19.5.5 部署 341

19.6 本章小结 341

19.7 课后习题 341

第20章 通信协议管理机实现 343

20.1 需求阶段 344

20.1.1 拓 扑结构 344

20.1.2 节点组件图 344

20.1.3 用例图 345

20.2 设计阶段 346

20.2.1 控制协议 346

20.2.2 分层结构 346

20.2.3 帧结构 346

20.2.4 传输过程 347

20.2.5 数据结构 349

20.2.6 关键函数 349

20.3 实现阶段 350

20.3.1 Windows环境 350

20.3.2 Linux环境 351

20.3.3 嵌入式移植 352

20.3.4 远程控制 353

20.4 测试阶段 353

20.5 部署阶段 353

20.6 本章小结 353

20.7 课后习题 353