第1章 快速入门 1
1.1 IAR EWARM V5版本的主要特性与文件格式 1
1.2项目的创建、编译与链接 3
1.2.1创建项目 4
1.2.2编译项目 10
1.2.3链接项目 12
1.3使用IAR C-SPY调试程序 15
1.4使用C与汇编混合编程模式 19
1.5采用C++编程 22
1.6模拟中断仿真 27
1.6.1添加中断句柄 27
1.6.2设置仿真环境 29
1.6.3运行仿真中断 34
1.7使用库模块 35
第2章 ARM处理器编程基础 38
2.1 ARM编程模型 38
2.1.1 ARM的数据类型和存储器格式 38
2.1.2处理器工作状态和运行模式 40
2.1.3寄存器组织 41
2.1.4异常 46
2.2 ARM的寻址方式 50
2.2.1寄存器寻址 50
2.2.2立即寻址 50
2.2.3寄存器偏移寻址 51
2.2.4寄存器间接寻址 51
2.2.5基址寻址 52
2.2.6相对寻址 52
2.2.7多寄存器寻址 52
2.2.8堆栈寻址 53
2.2.9块拷贝寻址 53
2.3 ARM指令集 54
2.3.1 ARM指令的功能与格式 54
2.3.2指令的条件域 55
2.3.3指令分类说明 56
2.3.4 ARM伪指令 71
2.4 Thumb指令集 73
2.5 ARM汇编语言程序设计 74
2.5.1 ARM汇编语言程序规范 74
2.5.2 IAR汇编器支持的伪指令 76
2.5.3简单汇编语言程序设计 85
2.6用汇编语言编写系统启动程序 87
2.6.1编写启动程序的一般规则 88
2.6.2 IAR EWARM软件包提供的系统启动程序 89
第3章 IAR EWARM集成开发环境 93
3.1下拉菜单 93
3.1.1 File菜单 93
3.1.2 Edit菜单 94
3.1.3 View菜单 96
3.1.4 Project菜单 97
3.1.5 Tools菜单 99
3.1.6 Window菜单 100
3.1.7 Help菜单 100
3.2定制IAR EWARM集成开发环境 102
3.3 IAR EWARM的项目管理 104
3.3.1项目的创建与配置 104
3.3.2项目文件导航 105
3.3.3源代码控制 107
3.4应用程序创建 107
3.4.1程序创建 107
3.4.2扩展工具链 109
3.5 IAR EWARM编辑器 110
3.5.1 IAR EWARM编辑器的使用 110
3.5.2定制编辑环境 112
第4章 应用程序仿真调试 115
4.1 IAR C-SPY调试器环境 115
4.2 C-SPY调试器的下拉菜单 120
4.2.1 View菜单 120
4.2.2 Debug菜单 121
4.2.3 Disassembly菜单 125
4.2.4 Simulator菜单 125
4.3用C-SPY调试用户程序 131
4.3.1程序执行方式 131
4.3.2用Call Stack窗口跟踪函数调用 133
4.4变量和表达式 134
4.4.1 C-SPY表达式 134
4.4.2察看变量和表达式 135
4.5断点 136
4.5.1定义断点 137
4.5.2察看断点 138
4.6察看存储器和寄存器 139
4.6.1使用存储器窗口 139
4.6.2使用寄存器窗口 140
4.7 C-SPY宏系统 141
4.7.1宏语言 142
4.7.2使用C-SPY宏 150
4.8利用C-SPY模拟器进行中断仿真 154
4.8.1 C-SPY中断仿真系统 154
4.8.2中断仿真系统的使用 155
4.9应用程序分析 160
4.9.1函数级剖析 160
4.9.2代码覆盖分析 161
4.10 C-SPY硬件仿真系统 162
4.10.1硬件仿真流程 162
4.10.2采用IAR J-Link进行硬件系统仿真调试 163
第5章 IAR C/C++编译器 177
5.1 IAR C/C++编译器的选项配置 177
5.1.1基本选项配置 177
5.1.2 C/C++编译器选项配置 181
5.2数据类型 188
5.2.1基本类型数据 189
5.2.2指针类型数据 191
5.2.3结构体类型数据 192
5.2.4类型限定符 192
5.3数据存储方式 193
5.3.1堆栈与自动变量 194
5.3.2动态存储器与堆 194
5.4扩展关键字 195
5.5函数 200
5.5.1 CPU模式和RAM中运行函数 200
5.5.2用于中断、并发及操作系统编程的基元 201
5.5.3本征函数 204
5.6 Pragma预编译命令 208
5.7 IAR C语言扩展 212
5.7.1重要扩展 212
5.7.2有用扩展 215
5.7.3次要扩展 217
5.8使用C++ 219
5.8.1一般介绍 219
5.8.2 C++特性描述 220
5.8.3 C++语言扩展 222
第6章 IAR ILINK链接器 224
6.1模块与段 224
6.2链接过程 225
6.2.1根据链接器配置文件进行段定位 226
6.2.2系统启动时的初始化 228
6.3链接器配置文件命令 228
6.3.1定义存储器与定义存储区域命令 229
6.3.2存储区域 229
6.3.3段选择命令 231
6.3.4段处理命令 232
6.3.5定义符号命令 235
6.3.6结构命令 236
6.3.7图形化配置工具 236
6.3.8配置命令综合举例 238
6.4链接应用程序 239
6.4.1定义存储器空间 240
6.4.2放置段 241
6.4.3在RAM中保留空间 242
6.4.4保持模块、符号与段 242
6.4.5应用程序入口、建立堆栈与程序出口 243
6.4.6修改默认初始化过程 243
6.4.7其他处理 245
6.5 ILINK链接器的选项配置 246
第7章 DLIB库运行环境 254
7.1运行环境简介 254
7.2使用预编译库 255
7.2.1设置库选项 256
7.2.2替换库模块 257
7.3创建和使用定制库 257
7.4系统启动和终止 258
7.4.1系统启动 258
7.4.2系统终止 260
7.4.3定制系统初始化 261
7.5标准输入/输出 261
7.5.1实现底层输入/输出特性 261
7.5.2配置printf和scanf的符号 262
7.5.3文件输入/输出 263
7.6 locale 264
7.7环境交互及其他 265
7.7.1环境交互 265
7.7.2 C-SPY调试器运行接口 266
7.7.3模块一致性检查 267
7.8库函数 268
7.8.1头文件 268
7.8.2附加C函数 270
第8章 汇编语言接口 272
8.1 C语言与汇编语言混合编程 272
8.1.1 C语言本征函数 272
8.1.2汇编语言程序 272
8.1.3内联汇编 273
8.2 ARM过程调用标准ATPCS 273
8.2.1寄存器使用规则 274
8.2.2堆栈使用规则 274
8.2.3参数传递及函数返回值规则 274
8.3混合编程举例 275
8.3.1汇编语言程序调用C语言函数 275
8.3.2汇编语言程序访问C语言函数的全局变量 276
8.3.3 C语言程序调用汇编语言子程序 277
8.3.4通过C语言程序框架生成汇编语言程序 278
8.3.5 C-+-+程序调用汇编语言子程序 280
8.4调用规则总结 281
第9章 PowerPac实时操作系统 284
9.1 PowerPac RTOS的主要特性 284
9.2 PowerPac RTOS的基础知识 286
9.2.1任务 287
9.2.2任务调度 289
9.2.3任务间通信 290
9.2.4任务切换 290
9.2.5启动OS 292
9.3任务管理 293
9.4软件定时器 294
9.5资源信号量 296
9.6计数信号量 298
9.7邮箱 299
9.8队列 301
9.9任务事件 302
9.10事件对象 302
9.11堆类型内存管理 303
9.12固定块大小的内存池 303
9.13堆栈 304
9.14中断 305
9.14.1中断延时 305
9.14.2中断处理规则 306
9.15临界区 308
9.16系统变量 308
9.17目标系统的配置 309
9.18定时测量 310
9.18.1低分辨率测量 310
9.18.2高分辨率测量 311
9.19实时操作系统调试插件 313
9.20 PowerPac运行错误 317
9.21性能和资源利用率 319
9.21.1使用端口引脚和示波器测量上下文切换时间 320
9.21.2使用高分辨率定时器测量上下文切换时间 321
9.22其他 322
第10章 ARM嵌入式系统应用编程实例 325
10.1嵌入式系统应用编程中的代码优化 325
10.1.1合理使用编译器优化选项 325
10.1.2选择合适的数据类型 327
10.1.3数据与函数在存储器中的定位 329
10.1.4编写高效代码 331
10.2与应用系统相关的注意事项 333
10.2.1 Stack堆栈和Heap堆 333
10.2.2编译、链接工具与应用系统之间的相互作用 334
10.2.3 AEABI依从性 336
10.3 NXP LPC2400应用系统编程 337
10.3.1 LPC2400系列处理器简介 337
10.3.2存储器结构 338
10.3.3存储器重映射 343
10.3.4时钟频率控制 345
10.3.5中断控制 351
10.3.6外部中断应用编程 357
10.3.7 GPIO应用编程 375
10.3.8异步串行口UART应用编程 386
10.3.9定时器应用编程 398
10.3.10实时时钟RTC应用编程 409
10.3.11模数转换器ADC应用编程 420
10.3.12 μC/OS Ⅱ在LPC2468上的移植 430
10.4 STM32应用系统编程 472
10.4.1 Cortex-M3处理器简介 472
10.4.2异常处理 474
10.4.3 STM32系列处理器结构特点 476
10.4.4存储器结构 477
10.4.5通用I/O端口应用编程 480
10.4.6嵌套向量控制器应用编程 487
10.4.7电源控制应用编程 496
10.4.8独立看门狗应用编程 509
10.4.9综合应用编程——MP3播放器 518
10.5 AT91SAM9261应用系统编程 542
10.5.1 AT91SAM9261处理器简介 542
10.5.2并行I/O端口应用编程 546
10.5.3实时定时器应用编程 554
附录1 IAR Embedded Workbench设备支持列表 560
附录2关于随书配套光盘和J-Link仿真器 562
附录3 AK100 ARM仿真器简介 563
附录4 M-Link Cortex-M3仿真器简介 565
参考文献 567