第1章 ARC嵌入式系统概述 1
1.1 嵌入式系统简介 1
1.2 ARC处理器简介 2
1.3 ARC EM处理器系列 4
1.4 ARC EM处理器开发环境 9
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开发板 10
1.5 小结 11
第2章 ARC EM处理器介绍 12
2.1 ARC EM处理器特点 12
2.2 可配置性及可扩展性 14
2.2.1 可配置性 14
2.2.2 用户可扩展性 15
2.3 ARC EM处理器结构 16
2.3.1 接口信号 16
2.3.2 内核结构 18
2.3.3 存储系统 20
2.3.4 存储保护机制 24
2.3.5 调试 25
2.4 小结 27
第3章 ARC EM编程模型 28
3.1 概述 28
3.2 寻址空间划分 30
3.3 数据类型 30
3.3.1 32位数据 31
3.3.2 16位数据 31
3.3.3 8位数据 32
3.3.4 1位数据 32
3.4 寻址方式 32
3.5 寄存器组 32
3.5.1 核心寄存器组 33
3.5.2 辅助寄存器组 38
3.6 工作模式 46
3.7 指令类型 46
3.7.1 算术逻辑运算指令 46
3.7.2 数据传输指令 47
3.7.3 控制流指令 47
3.7.4 特殊指令 47
3.7.5 扩展指令集 48
3.8 指令格式 48
3.8.1 32位指令格式 48
3.8.2 16位指令格式 48
3.8.3 指令存储方式 49
3.8.4 条件执行 50
3.9 指令集应用实例 51
3.9.1 数据传输指令 52
3.9.2 算术运算指令 52
3.9.3 比较指令 54
3.9.4 逻辑运算指令 54
3.9.5 跳转指令 54
3.9.6 加载/存储指令 55
3.9.7 其他指令 56
3.10 小结 57
第4章 中断及异常处理 58
4.1 概述 58
4.2 工作模式和权限 58
4.3 中断 60
4.3.1 中断单元特性 61
4.3.2 配置中断单元 61
4.3.3 中断单元编程 62
4.3.4 中断处理 66
4.4 异常 69
4.4.1 异常精确性 69
4.4.2 异常向量及异常原因寄存器 70
4.4.3 异常类型与优先级 72
4.4.4 异常检测 74
4.4.5 异常进入 75
4.4.6 异常退出 75
4.4.7 异常与延迟槽指令 75
4.5 中断或异常服务程序返回指令RTIE 75
4.6 小结 77
第5章 汇编语言程序设计 78
5.1 ARC汇编语言 78
5.2 ARC汇编语言伪指令 78
5.2.1 汇编语言伪指令简介 78
5.2.2 汇编语言伪指令 79
5.3 ARC汇编语言语句格式 82
5.3.1 汇编语言格式与例子 82
5.3.2 汇编语言的字符集与标识符 85
5.3.3 汇编语言符号 86
5.3.4 汇编语言标号 88
5.3.5 汇编语言的常量 90
5.3.6 表达式 91
5.3.7 宏 92
5.4 ARC汇编语言程序设计 93
5.4.1 汇编语言编程步骤 93
5.4.2 程序设计类型 94
5.5 ARC汇编语言程序实例 97
5.6 ARC汇编语言与C/C++的混合编程 98
5.6.1 ARCC/C++调用汇编程序 98
5.6.2 ARC汇编调用C/C++ 101
5.6.3 ARC C/C++和汇编交叉调用实例 101
5.7 小结 103
第6章 ARC EM处理器的开发及调试环境 104
6.1 MetaWare开发套件 104
6.1.1 MetaWare mcc编译器和ccac编译器 105
6.1.2 MetaWare ELF汇编器 106
6.1.3 MetaWare ELF链接器 106
6.1.4 MetaWare运行时库 107
6.1.5 MetaWare调试器 110
6.1.6 MetaWare仿真器 110
6.1.7 MetaWare IDE 111
6.2 MetaWare IDE开发指南 112
6.2.1 创建与管理工程 112
6.2.2 配置工程 116
6.2.3 编译工程 118
6.2.4 调试工程 118
6.3 使用MetaWare调试器进行性能分析 122
6.4 MetaWare命令行模式 126
6.4.1 MetaWare C/C++编译命令 126
6.4.2 MetaWare调试器调试命令 127
6.5 ARCG NU介绍 128
6.6 小结 128
第7章 MQX实时操作系统 129
7.1 实时操作系统介绍 129
7.2 MQX内核组件 130
7.3 MQX任务管理 132
7.3.1 任务调度 133
7.3.2 任务同步与通信 135
7.4 MQX存储管理 139
7.4.1 可变大小存储块管理 139
7.4.2 固定大小存储块管理 140
7.4.3 高速缓存控制 142
7.5 中断处理 142
7.5.1 中断处理初始化 143
7.5.2 装载应用程序定义的ISR 143
7.5.3 针对ISR的限制 144
7.5.4 修改默认ISR 146
7.5.5 异常处理 146
7.5.6 ISR异常处理 146
7.5.7 任务异常处理 147
7.5.8 ISR装载实例 147
7.6 MQX配置 148
7.6.1 配置选项 149
7.6.2 MQX创建任务实例 150
7.7 小结 153
第8章 ARC EM Starter Kit FPGA开发板 154
8.1 概述 154
8.2 ARC EM FPGA系统设计 155
8.2.1 FPGA系统概述 155
8.2.2 EM内核配置 156
8.2.3 外围设备控制 160
8.2.4 FPGA系统时钟 164
8.2.5 FPGA系统中断分配 164
8.3 开发板的使用 165
8.3.1 开发板上接口介绍 165
8.3.2 Pmod的使用 166
8.3.3 操作模式 173
8.3.4 软件包介绍 175
8.4 实例 178
8.5 小结 181
第9章 开发实例:温度监测与显示 182
9.1 系统简介 182
9.2 系统硬件设计 183
9.2.1 EM内核设置 183
9.2.2 Pmod外设介绍 184
9.2.3 Pmod与开发板的硬件连接 185
9.3 系统软件实现 186
9.3.1 软件设计 186
9.3.2 代码实现 187
9.3.3 系统代码详解 191
9.4 调试与运行 194
9.4.1 选择FPGA映像 194
9.4.2 编译和运行代码 195
9.4.3 运行结果 195
9.5 小结 197
第10章 ARC EM可配置性 198
10.1 可配置性优点 198
10.2 基准模板 199
10.3 配置模块 201
10.3.1 添加/删除模块 201
10.3.2 配置模块属性 203
10.3.3 与固定配置处理器比较 203
10.4 可选模块 205
10.4.1 可选模块简介 205
10.4.2 Cache实例 206
10.5 软硬件一致性 208
10.5.1 什么是软硬件一致性 208
10.5.2 乘法器使用实例 209
10.6 小结 211
第11章 APEX扩展 212
11.1 APEX综述 212
11.2 为何添加APEX扩展 214
11.3 识别定制指令 214
11.4 创建APEX扩展 216
11.4.1 APEX扩展命名 216
11.4.2 配置扩展内容 217
11.4.3 编辑选项 219
11.4.4 编写逻辑 222
11.4.5 编写测试代码 224
11.5 验证APEX扩展 226
11.6 使用APEX扩展 228
11.7 小结 230
附录A 常用辅助寄存器快速参考 231
附录B ARC指令速查表 258
附录C 术语及缩略语 262
参考文献 264