1 ARC嵌入式系统概述 1
1.1 ARC嵌入式系统简介 1
1.2 ARC处理器介绍 2
1.2.1 两种指令集体系结构 3
1.2.2 ARC处理器系列产品 3
1.2.3 ARC处理器的主要特点 4
1.3 ARC EM处理器系列产品 4
1.3.1 ARC EM4处理器 5
1.3.2 ARC EM6处理器 6
1.3.3 ARC EM SEP处理器 7
1.3.4 ARC EM DSP处理器 8
1.4 ARC EM处理器开发环境 8
1.4.1 ARChitect软件 9
1.4.2 MetaWare开发套件 9
1.4.3 embARC软件平台 10
1.4.4 操作系统支持 10
1.4.5 ARC EM Starter Kit FPGA开发板 10
1.5 小结 10
2 ARC EM处理器介绍 11
2.1 ARC EM处理器的特点 11
2.2 可配置性及可扩展性 13
2.2.1 可配置性 13
2.2.2 用户可扩展性 15
2.3 ARC EM处理器结构 15
2.3.1 接口信号 15
2.3.2 内核结构 17
2.3.3 存储系统 19
2.3.4 存储保护机制 27
2.3.5 调试 28
2.4 小结 29
3 ARC EM编程模型 30
3.1 概述 30
3.2 寻址空间划分 31
3.3 数据类型 31
3.3.1 32位数据 32
3.3.2 16位数据 32
3.3.3 8位数据 33
3.3.4 1位数据 33
3.4 寻址方式 33
3.5 寄存器组 34
3.5.1 核心寄存器组 34
3.5.2 辅助寄存器组 39
3.6 工作模式 45
3.7 指令操作类型 46
3.7.1 算术逻辑指令 46
3.7.2 数据传输指令 46
3.7.3 控制流指令 47
3.7.4 特殊指令 47
3.7.5 扩展指令集 47
3.8 指令格式 48
3.8.1 32位指令格式 48
3.8.2 16位指令格式 48
3.8.3 指令存储方式 48
3.8.4 条件执行 49
3.9 指令集应用实例 50
3.9.1 数据传输指令MOV 51
3.9.2 算术运算指令 51
3.9.3 比较指令 53
3.9.4 逻辑运算指令 53
3.9.5 跳转指令 54
3.9.6 加载/存储指令 54
3.9.7 其他指令 55
3.10 DSP扩展 56
3.10.1 ARCv2 DSP ISA的关键特性 56
3.10.2 DSP相关配置选项 57
3.10.3 DSP数据类型 58
3.10.4 核心寄存器组扩展 60
3.10.5 辅助寄存器组扩展 61
3.10.6 DSP指令类别 62
3.11 小结 63
4 中断及异常处理 64
4.1 概述 64
4.2 工作模式和权限 64
4.2.1 特权指令 65
4.2.2 特权寄存器 65
4.2.3 工作模式切换 65
4.3 中断 66
4.3.1 中断单元特性 66
4.3.2 配置中断单元 67
4.3.3 中断单元编程 68
4.3.4 中断处理 72
4.4 异常 74
4.4.1 异常精确性 74
4.4.2 异常向量及异常原因寄存器 75
4.4.3 异常类型与优先级 76
4.4.4 检测异常 79
4.4.5 进入异常 79
4.4.6 退出异常 79
4.4.7 异常与延迟槽指令 80
4.5 中断或异常服务程序返回指令 80
4.6 小结 82
5 汇编语言程序设计 83
5.1 ARC汇编语言 83
5.2 ARC汇编语言伪指令 84
5.2.1 汇编语言伪指令简介 84
5.2.2 汇编语言伪指令 84
5.3 ARC汇编语言语句格式 88
5.3.1 汇编语言格式与示例 88
5.3.2 汇编语言的字符集与标识符 91
5.3.3 汇编语言符号 92
5.3.4 汇编语言标号 94
5.3.5 汇编语言的常量 96
5.3.6 表达式 97
5.3.7 宏 98
5.4 ARC汇编语言程序设计 99
5.4.1 汇编语言编程步骤 99
5.4.2 程序设计类型 100
5.5 ARC汇编语言程序实例 103
5.6 ARC汇编语言与C/C+++语言的混合编程 104
5.6.1 C/C+++程序调用汇编程序 104
5.6.2 ARC汇编程序调用C/C+++函数 106
5.6.3 C/C+++模块和汇编模块交叉调用实例 107
5.7 ARC DSP编程 108
5.7.1 简介 108
5.7.2 API参考 109
5.7.3 底层(XY)API参考 109
5.7.4 示例 111
5.8 小结 112
6 ARC EM处理器的开发及调试环境 113
6.1 MetaWare开发套件 113
6.1.1 MetaWare mcc编译器和ccac编译器 114
6.1.2 MetaWare ELF汇编器 115
6.1.3 MetaWare ELF链接器 115
6.1.4 MetaWare运行时库 116
6.1.5 MetaWare调试器 119
6.1.6 MetaWare仿真器 119
6.1.7 MetaWare IDE 120
6.2 MetaWare IDE开发指南 121
6.2.1 创建与管理工程 121
6.2.2 配置工程 125
6.2.3 编译工程 127
6.2.4 调试工程 127
6.3 使用MetaWare调试器进行性能分析 130
6.4 MetaWare命令行模式 133
6.4.1 MetaWare C/C+++编译命令 133
6.4.2 MetaWare调试器调试命令 135
6.5 ARC GNU简介 135
6.6 小结 136
7 MQX实时操作系统 137
7.1 实时操作系统介绍 137
7.2 MQX内核组件 138
7.3 MQX任务管理 140
7.3.1 任务调度 141
7.3.2 任务同步与通信 143
7.4 MQX存储管理 147
7.4.1 可变大小内存块管理 147
7.4.2 固定大小内存块管理 148
7.4.3 高速缓存控制 149
7.5 中断处理 149
7.5.1 中断处理初始化 150
7.5.2 装载应用程序定义的ISR 150
7.5.3 针对ISR的限制 151
7.5.4 修改默认ISR 152
7.5.5 异常处理 153
7.5.6 ISR异常处理 153
7.5.7 任务异常处理 153
7.5.8 ISR装载实例 154
7.6 MQX配置 155
7.6.1 配置选项 155
7.6.2 MQX创建任务实例 157
7.7 小结 160
8 ARC EM Starter Kit FPGA开发板 161
8.1 概述 161
8.2 ARC EM FPGA系统设计 162
8.2.1 FPGA系统概述 162
8.2.2 EM内核配置 163
8.2.3 外设控制器 167
8.2.4 FPGA系统时钟 171
8.2.5 FPGA系统中断分配 171
8.3 开发板的使用 171
8.3.1 开发板上接口介绍 171
8.3.2 Pmod的使用 173
8.3.3 操作模式 179
8.3.4 软件包介绍 181
8.4 实例 184
8.5 小结 186
9 开发实例:温度监测与显示 187
9.1 系统简介 187
9.2 系统硬件设计 188
9.2.1 EM内核设置 188
9.2.2 Pmod外设介绍 189
9.2.3 Pmod与开发板的硬件连接 190
9.3 系统软件实现 190
9.3.1 软件设计 190
9.3.2 代码实现 192
9.3.3 系统代码详解 196
9.4 调试与运行 200
9.4.1 选择FPGA映像 200
9.4.2 编译和运行代码 200
9.4.3 运行结果 200
9.5 小结 202
10 ARC EM可配置性 203
10.1 可配置性优点 203
10.2 基准模板 204
10.3 配置模块 206
10.3.1 添加/删除模块 206
10.3.2 配置模块属性 207
10.3.3 与固定配置处理器比较 208
10.4 可选模块 213
10.4.1 可选模块 213
10.4.2 Cache实例 213
10.5 软硬件一致性 215
10.5.1 软硬件一致性简述 215
10.5.2 乘法器使用实例 217
10.6 小结 218
11 APEX扩展 219
11.1 APEX综述 219
11.2 为何添加APEX扩展 221
11.3 识别订制指令 221
11.4 创建APEX扩展 223
11.4.1 为扩展命名 223
11.4.2 配置扩展内容 225
11.4.3 编辑选项 226
11.4.4 编写逻辑 229
11.4.5 编写测试代码 231
11.5 验证APEX扩展 233
11.6 使用APEX扩展 234
11.7 小结 237
附录A 常用辅助寄存器快速参考 238
附录B ARC指令速查表 264
附录C 术语及缩略语 268
附录D Synopsys ARC杯电子设计竞赛优秀作品 270
参考文献 281