嵌入式ARM系统工程师实训教程PDF电子书下载
- 电子书积分:15 积分如何计算积分?
- 作 者:庄严,周建明,廖炜编著
- 出 版 社:北京:清华大学出版社
- 出版年份:2015
- ISBN:9787302380788
- 页数:497 页
第一篇 嵌入式ARM基础 3
第1章 基础知识 3
1.1 嵌入式系统 4
1.1.1 概念 4
1.1.2 构成 5
1.1.3 特点 5
1.2 知识结构 7
1.2.1 嵌入式基础 7
1.2.2 微处理器与接口 8
1.2.3 嵌入式操作系统 8
1.2.4 嵌入式程序设计 9
1.2.5 开发与维护 9
1.2.6 嵌入式系统设计 9
1.3 项目流程 10
1.4 本章小结 10
1.5 本章习题 11
第2章 开发环境 13
2.1 硬件实验环境 14
2.1.1 ARM参考板 14
2.1.2 硬件仿真器 14
2.2 ADS集成开发环境 16
2.2.1 ADS介绍 16
2.2.2 命令行开发工具 17
2.2.3 armcc用法详解 18
2.2.4 armlink用法详解 20
2.2.5 ARM运行时库 26
2.2.6 库路径的结构 27
2.2.7 CodeWarrior 27
2.2.8 ADS调试器 29
2.2.9 实用程序 30
2.2.10 支持的软件 30
2.3 ADS开发流程 30
2.3.1 创建工程 30
2.3.2 编译与连接 34
2.3.3 代码调试 39
2.4 RealView集成开发环境 42
2.4.1 使用介绍 42
2.4.2 实例分析 46
2.5 嵌入式HelloARM实例入门 50
2.5.1 实验目的 50
2.5.2 实验设备 50
2.5.3 实验原理 50
2.5.4 实验步骤 55
2.6 本章小结 59
2.7 本章习题 59
第二篇 硬件系统设计 63
第3章 硬件设计基础 63
3.1 常用ARM处理器概述 64
3.1.1 ARM应用系统设计概述 64
3.1.2 S3C2410A功能简介 65
3.1.3 S3C2410A CPU内核概述 69
3.1.4 S3C2410A特殊功能寄存器 70
3.1.5 S3C2440概述 70
3.1.6 S3C6410概述 71
3.1.7 S5PV210概述 71
3.1.8 Exynos 4212概述 72
3.1.9 性能对比 73
3.2 硬件电路设计基础 73
3.2.1 需求分析 73
3.2.2 方案确定 75
3.2.3 原理图绘制 76
3.2.4 PCB板图绘制 82
3.2.5 制板与调试 83
3.3 本章小结 84
3.4 本章习题 84
第三篇 ARM体系结构与编程 87
第4章 微处理器概述 87
4.1 常用微处理器概述 88
4.1.1 ARM 88
4.1.2 PowerPC 88
4.1.3 MIPS 89
4.1.4 DSP 89
4.1.5 x86 89
4.1.6 FPGA/CPLD 89
4.2 ARM概述 90
4.2.1 ARM微处理器的特点 91
4.2.2 ARM微处理器的应用领域 91
4.3 ARM版本与命名方法 92
4.3.1 ARM版本介绍 92
4.3.2 ARM体系的变种 93
4.3.3 ARM体系版本的命名格式 94
4.4 常用的ARM微处理器系列介绍 95
4.4.1 经典系列ARM处理器 96
4.4.2 Cortex-A系列 97
4.4.3 Cortex-R系列 97
4.4.4 Cortex-M系列 98
4.4.5 ARM-SecurCore系列 98
4.4.6 ARM-FPGA Cores系列 99
4.5 ARM微处理器的结构 99
4.6 ARM微处理器的应用选型 100
4.6.1 ARM微处理器内核的选择 101
4.6.2 系统的工作频率 101
4.6.3 芯片内存储器的容量 101
4.6.4 内外围电路的选择 101
4.7 新技术扩展 102
4.7.1 ARMv8 102
4.7.2 Thumb-2 102
4.7.3 Thumb执行环境(ThumbEE) 102
4.7.4 高级SIMD(NEON) 102
4.7.5 VFP 103
4.7.6 安全性扩充(TrustZone) 103
4.7.7 Cortex-A50系列 103
4.8 本章小结 104
4.9 本章习题 104
第5章 编程模型 105
5.1 ARM微处理器的工作状态 106
5.2 ARM微处理器的工作模式 106
5.3 寄存器组织 107
5.3.1 ARM状态下的寄存器组织 108
5.3.2 Thumb状态下的寄存器组织 110
5.3.3 程序状态寄存器 111
5.4 ARM数据存储格式 113
5.5 指令长度及数据类型 114
5.6 AMBA规范 115
5.6.1 AMBA片上总线 115
5.6.2 基于AMBA的片上系统 116
5.6.3 AHB简介 116
5.6.4 APB简介 116
5.7 AAPCS规范 116
5.8 异常(Exceptions) 117
5.8.1 异常 117
5.8.2 对异常的响应 118
5.8.3 从异常返回 118
5.9 本章小结 119
5.10 本章习题 119
第6章 指令系统 121
6.1 ARM微处理器的指令集概述 122
6.1.1 指令的分类与格式 122
6.1.2 指令的条件域 122
6.2 ARM指令的寻址方式 123
6.2.1 立即寻址 123
6.2.2 寄存器寻址 124
6.2.3 寄存器间接寻址 124
6.2.4 基址变址寻址 124
6.2.5 多寄存器寻址 125
6.2.6 相对寻址 125
6.2.7 堆栈寻址 125
6.3 ARM指令实验指导 126
6.3.1 汇编基本框架 126
6.3.2 编译链接调试 127
6.3.3 编译工程 129
6.3.4 调试程序 130
6.4 ARM指令集 131
6.4.1 跳转指令 132
6.4.2 数据处理指令 134
6.4.3 乘法指令与乘加指令 139
6.4.4 程序状态寄存器访问指令 142
6.4.5 加载/存储指令 143
6.4.6 批量数据加载/存储指令 145
6.4.7 数据交换指令 146
6.4.8 移位指令 146
6.4.9 协处理器指令 148
6.4.10 异常产生指令 150
6.5 Thumb指令及应用 151
6.6 本章小结 152
6.7 本章习题 152
第7章 程序设计基础 155
7.1 程序设计概述 156
7.1.1 符号定义(Symbol Definition)伪指令 156
7.1.2 数据定义(Data Definition)伪指令 158
7.1.3 汇编控制(Assembly Control)伪指令 161
7.2 汇编语言的程序结构 167
7.2.1 汇编语言程序的基本结构 167
7.2.2 汇编语言的子程序调用 168
7.2.3 汇编语言程序示例 169
7.3 本章小结 172
7.4 本章习题 172
第8章 混合编程 175
8.1 ATPCS介绍 176
8.1.1 寄存器的使用规则 176
8.1.2 数据栈的使用规则 177
8.1.3 参数的传递规则 178
8.1.4 子程序结果返回规则 179
8.1.5 其他特定规则 179
8.1.6 AAPCS扩展 181
8.2 内嵌汇编器的使用 182
8.2.1 内嵌的汇编指令用法 182
8.2.2 内嵌的汇编器和armasm的区别 183
8.2.3 在C/C++程序中使用内嵌的汇编指令 184
8.2.4 内嵌汇编指令的应用举例 186
8.2.5 从汇编程序中访问C变量 188
8.3 在汇编程序中调用C/C++程序 189
8.3.1 在汇编程序中调用C程序 189
8.3.2 在汇编程序中调用C++程序 189
8.3.3 汇编程序完成初始化功能 190
8.3.4 在C/C++程序中调用汇编程序 191
8.4 本章小结 192
8.5 本章习题 192
第9章 异常处理 193
9.1 ARM异常处理概述 194
9.1.1 ARM体系中的异常种类 194
9.1.2 中断向量与异常优先级 195
9.1.3 各种异常状态下使用的寄存器 195
9.2 进入和退出异常的过程 196
9.2.1 ARM处理器对异常的响应过程 196
9.2.2 在应用程序中安装异常处理程序 197
9.2.3 在系统复位时安装异常处理程序 197
9.2.4 在C程序中安装异常处理程序 198
9.3 各类异常的具体描述 200
9.3.1 FIQ和IRQ中断 200
9.3.2 复位异常 205
9.3.3 未定义指令异常 205
9.3.4 指令预取中止异常 205
9.3.5 数据访问中止异常 206
9.3.6 SWI异常 206
9.4 本章小结 206
9.5 本章习题 207
第10章 基本的ATPCS规则及其实践 209
10.1 寄存器的使用规则 210
10.2 数据栈的使用规则 210
10.3 参数传递的规则 211
10.4 子程序结果返回规则 211
10.5 ARM汇编指令编程实验 211
10.5.1 实验目的 211
10.5.2 实验设备 212
10.5.3 实验原理 212
10.5.4 实验步骤 214
10.6 C语言调用汇编语言编程 217
10.6.1 实验目的 217
10.6.2 实验设备 217
10.6.3 实验原理 217
10.6.4 实验步骤 218
10.6.5 实验思考 221
10.7 汇编语言调用C语言编程 221
10.7.1 实验目的 221
10.7.2 实验设备 221
10.7.3 实验原理 221
10.7.4 实验步骤 221
10.7.5 实验思考 224
第四篇 硬件接口及驱动系统设计 227
第11章 嵌入式软件编程基础 227
11.1 学习目标 228
11.2 本章要点 228
11.3 整体设计 228
11.3.1 开发背景 228
11.3.2 整体设计 228
11.3.3 硬件平台 228
11.3.4 交叉环境 229
11.3.5 硬件驱动 229
11.3.6 任务管理 229
11.3.7 面向对象 230
11.4 内存管理 230
11.4.1 数据指针 230
11.4.2 函数指针 231
11.4.3 内存申请 231
11.4.4 关键字const 231
11.4.5 关键字volatile 233
11.4.6 字长与位宽 233
11.4.7 字节对齐 233
11.4.8 字节顺序 236
11.5 人机界面 238
11.5.1 LED 238
11.5.2 按键 238
11.5.3 LCD 238
11.5.4 通信接口 238
11.6 性能优化 238
11.6.1 死循环 238
11.6.2 延时 239
11.6.3 使用宏 239
11.6.4 关键字register 240
11.6.5 内嵌汇编 240
11.6.6 位操作 240
11.6.7 define/typedef 241
11.7 实践:LED驱动系统 242
11.7.1 需求分析 242
11.7.2 详细设计 242
11.7.3 编码设计 244
11.7.4 调试与测试 245
11.7.5 部署 245
11.8 本章小结 245
11.9 本章习题 245
第12章 嵌入式系统的常用接口 247
12.1 学习目标 248
12.2 本章要点 248
12.3 嵌入式系统常用接口概述 248
12.3.1 嵌入式系统的程序设计方法 248
12.3.2 嵌入式测试测量 249
12.3.3 通用I/O口的工作原理与编程示例 250
12.4 串口工作原理与编程示例 256
12.4.1 异步串行通信及其协议 256
12.4.2 串行通信的物理层标准 257
12.4.3 S3C2410内置的UART控制器 258
12.4.4 UART编程举例 260
12.5 中断控制器工作原理与编程示例 267
12.5.1 中断源状态寄存器 267
12.5.2 中断模式寄存器 267
12.5.3 中断屏蔽寄存器 268
12.5.4 优先级寄存器 268
12.5.5 中断状态寄存器 268
12.5.6 中断偏移寄存器 268
12.6 DMA的工作原理与编程示例 272
12.6.1 DMA的工作原理 272
12.6.2 I/O接口到存储器 274
12.6.3 存储器到I/O接口 274
12.6.4 存储器到存储器 274
12.6.5 S3C2410A的DMA控制器 274
12.6.6 编程举例 276
12.7 实时时钟的工作原理与编程示例 282
12.7.1 实时时钟的工作原理 282
12.7.2 S3C2410A实时时钟寄存器介绍 283
12.7.3 实时时钟计数器 283
12.7.4 告警控制寄存器 284
12.7.5 告警时间寄存器 285
12.8 RTC循环复位寄存器 285
12.8.1 实时时钟寄存器 285
12.8.2 S3C2410A实时时钟编程举例 286
12.9 看门狗的工作原理与编程示例 288
12.9.1 看门狗的工作原理 288
12.9.2 S3C2410A的看门狗定时器寄存器 289
12.9.3 看门狗编程举例 290
12.10 I2C工作原理与编程示例 292
12.10.1 I2C工作原理 292
12.10.2 I2C总线的基本结构 292
12.10.3 双向传输的接口特性 292
12.10.4 I2C总线上的时钟信号 293
12.10.5 数据的传送 293
12.10.6 总线竞争的仲裁 294
12.10.7 I2C总线的一次典型工作流程 295
12.10.8 S3C2410A的I2C寄存器 295
12.10.9 I2C总线控制寄存器 296
12.10.10 I2C总线控制/状态寄存器 296
12.10.11 I2C总线地址寄存器 297
12.10.12 移位数据寄存器 297
12.10.13 I2C编程举例 298
12.11 本章小结 302
12.12 本章习题 302
第13章 通用I/O口的应用:跑马灯实验 303
13.1 实验目的 304
13.2 实验设备 304
13.3 实验原理 304
13.3.1 S3C2440A的多功能I/O口 304
13.3.2 端口选择 309
13.3.3 端口控制寄存器 309
13.4 实验步骤 311
13.4.1 设置寄存器 311
13.4.2 跑马灯的实现 311
13.4.3 编译工程 312
13.4.4 建立实验环境 312
13.4.5 下载程序运行 312
13.5 实验思考 313
第14章 中断处理程序设计 315
14.1 实验目的 316
14.2 实验设备 316
14.3 实验原理 316
14.3.1 概述 316
14.3.2 中断模式 316
14.3.3 PSR的F位和I位 316
14.3.4 Pending寄存器 317
14.3.5 INTMSK中断屏蔽寄存器 317
14.3.6 中断源 317
14.3.7 中断优先级产生模块 319
14.3.8 控制中断的寄存器 319
14.4 实验步骤 320
14.4.1 设置I/O口 320
14.4.2 中断寄存器设置 321
14.4.3 中断服务程序的编写 321
14.4.4 编译工程 322
14.4.5 建立实验环境 323
14.4.6 下载程序运行 323
14.5 实验思考 323
第15章 定时器的应用 325
15.1 实验目的 326
15.2 实验设备 326
15.3 实验原理 326
15.3.1 概述 326
15.3.2 定时器操作 327
15.3.3 定时器寄存器 331
15.4 实验步骤 331
15.4.1 打开定时器中断 331
15.4.2 设置定时器中断服务程序的入口地址 332
15.4.3 设置定时器寄存器并启动定时器 332
15.4.4 定时器中断服务子程序 332
15.4.5 判断定时器中断情况 333
15.4.6 编译工程 334
15.4.7 建立实验环境 334
15.4.8 下载程序并运行 334
15.5 实验思考 335
第16章 ADC接口的应用 337
16.1 实验目的 338
16.2 实验设备 338
16.3 实验原理 338
16.3.1 概述 338
16.3.2 S3C2440A具备的ADC 338
16.3.3 ADC转换时间的计算 339
16.3.4 ADC分辨率的计算 339
16.3.5 采样保持器 339
16.3.6 ADC的相关寄存器 340
16.4 实验步骤 340
16.4.1 硬件连接 340
16.4.2 得到预分频值 340
16.4.3 读取A/D转换数值子程序 340
16.4.4 编译工程 341
16.4.5 建立实验环境 341
16.4.6 下载程序并运行 342
16.5 实验思考 342
第17章 LCD接口的编程 343
17.1 实验目的 344
17.2 实验设备 344
17.3 实验原理 344
17.3.1 概述 344
17.3.2 S3C2440A的内部LCD控制器介绍 344
17.3.3 LCD控制器的外部接口信号 345
17.3.4 LCD控制器的操作 346
17.3.5 LCD控制器专用寄存器 348
17.4 实验步骤 352
17.4.1 I/O口LCD功能设置 352
17.4.2 LCD初始化程序 352
17.4.3 LCD测试程序 353
17.4.4 编译工程 354
17.4.5 建立实验环境 355
17.4.6 下载程序并运行 355
17.5 实验思考 355
第18章 触摸屏的应用 357
18.1 实验目的 358
18.2 实验设备 358
18.3 实验原理 358
18.3.1 概述 358
18.3.2 触摸屏的基本原理 358
18.3.3 触摸屏的相关寄存器 359
18.4 实验步骤 361
18.4.1 硬件连接 361
18.4.2 寄存器的设置 362
18.4.3 触摸屏中断服务程序 362
18.4.4 编译工程 363
18.4.5 建立实验环境 363
18.4.6 下载程序并运行 364
18.5 实验思考 364
第19章 I2C接口的编程 365
19.1 实验目的 366
19.2 实验设备 366
19.3 实验原理 366
19.3.1 概述 366
19.3.2 I2C总线通用传输格式 366
19.3.3 S3C2440A的12C接口 368
19.4 实验步骤 371
19.4.1 硬件连接 371
19.4.2 I/O端口I2C功能设置 372
19.4.3 中断使能 372
19.4.4 初始化I2C接口 372
19.4.5 写入数据子程序 372
19.4.6 读出数据子程序 373
19.4.7 中断处理子程序 374
19.4.8 编译工程 375
19.4.9 建立实验环境 375
19.4.10 下载程序运行 375
19.5 实验思考 376
第20章 UART异步串行接口的应用 377
20.1 实验目的 378
20.2 实验设备 378
20.3 实验原理 378
20.3.1 概述 378
20.3.2 UART操作 379
20.3.3 UART寄存器 382
20.4 实验步骤 383
20.4.1 电路连接和I/O口设置 383
20.4.2 UART的初始化 384
20.4.3 串口0发送中断测试 385
20.4.4 串口0接收中断测试 385
20.4.5 编译工程 386
20.4.6 建立实验环境 386
20.4.7 下载程序运行 386
20.5 实验思考 387
第21章 CAN总线通信实验 389
21.1 实验目的 390
21.2 实验设备 390
21.3 实验原理 390
21.3.1 概述 390
21.3.2 CAN总线的技术特点 390
21.3.3 CAN的分层结构 391
21.4 实验步骤 392
21.4.1 电路连接 392
21.4.2 初始化函数 392
21.4.3 MCP2510写函数 393
21.4.4 MCP2510读函数 393
21.4.5 指定地址寄存器修改函数 394
21.4.6 CAN通信主体函数 394
21.4.7 编译工程 395
21.4.8 建立实验环境 395
21.4.9 下载程序并运行 395
21.5 实验思考 396
第五篇 嵌入式系统启动应用分析与设计 399
第22章 ARM系统启动应用分析与设计 399
22.1 Cortex-M3-STM32启动代码分析 400
22.1.1 STM32概述 400
22.1.2 启动代码分析 400
22.2 ARM9-S3C2440-U-Boot移植开发 408
22.2.1 U-Boot工程简介 408
22.2.2 目录结构 409
22.2.3 Makefile分析 410
22.2.4 流程分析 410
22.2.5 配置编译 411
22.2.6 移植开发 414
22.2.7 调试测试 418
22.2.8 常用命令 418
22.2.9 环境变量 420
22.3 ARM-Cortex-A8-S5PV210-uboot分析 421
22.3.1 源码目录结构 421
22.3.2 启动代码start.s分析 423
22.3.3 启动代码lowlevel.s分析 439
22.3.4 启动代码汇编部分总结 453
22.3.5 硬件启动过程 454
22.3.6 内存分配 455
22.4 ARM-Cortex-A9-多核介绍 456
22.4.1 Samsung Exynos 4412 456
22.4.2 Nvidia Tegra 2介绍 457
22.4.3 ARM-Cortex-A9多核启动流程 457
22.4.4 Linux Kemel对多核心的支持 457
22.4.5 软件识别目前所在的处理器 458
22.4.6 多核心的开机 458
22.4.7 Boot Rom 458
22.4.8 多核U-Boot 459
22.5 本章小结 471
22.6 本章习题 471
第六篇 综合项目篇 475
第23章 基于ARM的嵌入式工业控制系统设计 475
23.1 总体需求 476
23.1.1 部署结构 476
23.1.2 主机业务需求 477
23.1.3 终端业务需求 478
23.2 主机设计 479
23.2.1 主机工作流程 480
23.2.2 设置终端模块 480
23.2.3 打开端口模块 481
23.2.4 相关业务模块 482
23.2.5 主机相关任务描述 483
23.2.6 相关定时器举例 486
23.3 通信协议分层 486
23.3.1 物理层 486
23.3.2 数据链路层 486
23.3.3 应用层 488
23.4 PDU集 490
23.4.1 主机召唤终端状态 491
23.4.2 终端返回本机状态 491
23.4.3 主机设置终端状态 492
23.4.4 终端返回设置后的结果 492
23.4.5 终端发送自身状态 492
23.4.6 主机确认收到终端返回 493
23.4.7 主机获得终端的设置值 493
23.4.8 终端返回设置后的结果 494
23.4.9 确认网络状态 494
23.4.10 确认网络状态返回 495
23.5 应用层异常控制 495
23.6 大小端控制 495
23.7 数据字典 496
23.8 项目总结 496
23.9 本章小结 497
23.10 本章习题 497
- 《市政工程基础》杨岚编著 2009
- 《工程静力学》王科盛主编 2019
- 《中央财政支持提升专业服务产业发展能力项目水利工程专业课程建设成果 设施农业工程技术》赵英编 2018
- 《名医教你练走颈肩腰腿痛》许学猛 2018
- 《化学反应工程》许志美主编 2019
- 《绿色过程工程与清洁生产技术 张懿院士论文集精选 上》《绿色过程工程与清洁生产技术》编写组编 2019
- 《软件工程》齐治昌,谭庆平,宁洪编著 2019
- 《化学工程与工艺专业实验指导》郭跃萍主编 2019
- 《博士教你识中药》(中国)黄汉超 2019
- 《物联网与嵌入式技术及其在农业上的应用》马德新 2019
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019