当前位置:首页 > 工业技术
嵌入式ARM系统工程师实训教程
嵌入式ARM系统工程师实训教程

嵌入式ARM系统工程师实训教程PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:庄严,周建明,廖炜编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302380788
  • 页数:497 页
图书介绍:基于ARM处理器的嵌入式系统是当前最流行的嵌入式系统。本书内容突出重点明确方便学员阅读。不仅可供学习还是一套常备的不可多得的参考资料。本书最大的特色是实践性强,所有的案例都是完整的可以得到验证的。本书分为6篇:嵌入式ARM基础篇、硬件系统设计、ARM体系结构与编程、硬件接口及驱动系统设计、综合项目篇。
《嵌入式ARM系统工程师实训教程》目录

第一篇 嵌入式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

相关图书
作者其它书籍
返回顶部