《Cortex-M处理器设计指南》是一本基础开发教程,主要介绍了在基于Cortex-M的处理器中使用C语言进行编程开发的关键技术。该书首先概述了Cortex-M系列产品并详细介绍了实际例程中所支持的架构描述,以便工程师在Cortex-M0/M0+/M3和Cortex-M4中更加容易地开发基于C语言的程序;接着阐述了更多Cortex-M处理器架构的先进特性和软件技术,例如存储保护、操作模式和双栈操作。最后介绍了Cortex-M处理器RTOS和CMSIS DSP库的使用、如何设计实时DSP应用程序,以及CoreSight调试系统的实时特性。
核心内容
Cortex-M0/M0+/M3和Cortex-M4之间的主要不同点;
如何编写运行在基于Cortex-M处理器上的C语言程序;
如何进行RTOS开发和使用CoreSight调试系统;
如何优化Cortex-M4的DSP代码以及建立实时DSP系统。
关键特性
Cortex微控制器软件界面标准(CMSIS),以及基于Cortex-M微控制器的通用架构;
Cortex-M3和Cortex-M4的CMSIS DSP库覆盖范围;
集成开发环境IDE和调试器在PC中仿真或者在低成本硬件中运行。
出版者的话
译者序
序
前言
第1章 Cortex-M处理器家族简介 1
1.1 Cortex系列概述 1
1.2 Cortex-M3 2
1.3 先进的架构特性 5
1.4 Cortex-M0 6
1.5 Cortex-M0+ 9
1.6 Cortex-M4 10
1.7 DSP指令 12
第2章 为Cortex-M处理器家族开发软件 14
2.1 引言 14
2.2 Keil微控制器开发套件 14
2.3 教程练习 15
2.4 安装 15
2.5 练习:建立第一个程序 16
2.6 Blinky项目 16
2.6.1 寄存器窗口 21
2.6.2 反汇编窗口 21
2.7 项目配置 29
2.8 硬件调试 38
第3章 Cortex-M架构 41
3.1 引言 41
3.2 Cortex-M指令集 41
3.3 编程器的模型与CPU寄存器 42
3.4 程序状态寄存器 43
3.5 Q位和饱和运算指令 43
3.6 中断和多周期指令 44
3.7 条件执行——IF THEN块 44
3.8 练习:饱和运算和条件执行 46
3.9 Cortex-M内存映射和总线 50
3.10 写缓冲器 51
3.11 内存屏障指令 52
3.12 系统控制模块 52
3.13 位操作 53
3.14 练习:位段 55
3.15 专用位操作指令 55
3.16 系统时钟定时器 56
3.17 嵌套向量中断控制器 56
3.18 操作模式 57
3.19 中断处理之输入 57
3.20 中断处理之退出 58
3.21 中断处理之退出(重要) 59
3.22 练习:系统时钟中断 59
3.23 Cortex-M处理器异常 62
3.23.1 使用故障 63
3.23.2 总线故障 63
3.23.3 存储管理器故障 63
3.23.4 硬故障 63
3.23.5 启用故障异常 64
3.24 优先级和抢占 64
3.25 组与子组 64
3.26 运行时间优先级控制 65
3.27 异常模式 66
3.27.1 NVIC尾链 66
3.27.2 NVIC迟到 67
3.27.3 NVIC POP抢占 67
3.28 练习:多中断工作 68
3.29 引导加载程序支持 71
3.30 练习:引导加载程序 72
3.31 功率管理 75
3.31.1 进入低功耗模式 76
3.31.2 配置低功耗模式 76
3.31.3 练习:低功耗模式 77
3.32 Cortex-M3 78
3.33 Cortex-M4 79
3.34 Cortex-M0 79
3.35 Cortex-M0+ 80
第4章 Cortex微控制器软件接口标准 82
4.1 引言 82
4.2 CMSIS规范 83
4.3 CMSIS内核 84
4.4 CMSIS RTOS 84
4.5 CMSIS DSP 85
4.6 CMSIS SVD和DAP 85
4.7 CMSIS基础 85
4.8 编码规则 86
4.9 MISRA C 86
4.10 CMSIS内核结构 88
4.11 启动代码 88
4.12 系统代码 89
4.13 设备头文件 89
4.14 CMSIS内核头文件 91
4.15 中断与异常 91
4.16 练习:CMSIS和用户代码对比 94
4.17 CMSIS内核寄存器访问 95
4.18 CMSIS内核CPU内在指令 96
4.19 练习:内部位操作 97
4.20 CMSIS SIMD内部指令 98
4.21 CMSIS内核调试函数 98
4.22 练习:简单ITM 98
第5章 先进的架构特性 100
5.1 引言 100
5.2 Cortex处理器操作模式 100
5.3 练习:堆栈配置 102
5.4 系统服务调用 103
5.5 练习:SVC 104
5.6 Pend_SVC异常 107
5.7 例子:Pend_SVC 108
5.8 处理器之间的事件 110
5.9 独占访问 110
5.10 练习:独占访问 111
5.11 存储保护单元 112
5.12 配置MPU 114
5.13 练习:MPU配置 116
5.14 MPU子区间 120
5.15 MPU的局限性 120
5.16 AHB Lite总线接口 120
第6章 使用CMSIS RTOS进行开发 122
6.1 引言 122
6.2 入门 122
6.3 创建一个项目 122
6.4 使用CMSIS RTOS的第一步 123
6.5 线程 123
6.6 从RTOS开始 125
6.7 练习:第一个CMSIS RTOS项目 126
6.8 创建线程 127
6.9 练习:创建和管理线程 128
6.10 线程管理和优先级 130
6.11 练习:创建和管理线程Ⅱ 130
6.12 多个实例 132
6.13 练习:多个线程实例 132
6.14 构建代码并启动调试器 132
6.15 时间管理 133
6.16 时间延迟 133
6.17 等待事件 134
6.18 练习:时间管理 134
6.19 虚拟定时器 134
6.20 练习:虚拟定时器 135
6.21 空闲的守护进程 136
6.22 练习:空闲的线程 137
6.23 线程间的通信 138
6.24 练习:信号 139
6.25 练习:中断信号 140
6.26 练习:CMSIS RTX和SVC异常 141
6.27 练习:信号量发信号 144
6.27.1 使用信号量 145
6.27.2 发信号 145
6.27.3 多路复用 145
6.27.4 练习:多路复用 146
6.27.5 会合 146
6.28 练习:会合 147
6.29 练习:信号量隔离 148
6.29.1 信号量注意事项 148
6.29.2 互斥 148
6.29.3 练习:互斥 149
6.29.4 互斥注意事项 150
6.29.5 数据交换 150
6.30 消息队列 151
6.31 练习:消息队列 152
6.32 内存池 152
6.33 邮箱队列 153
6.34 练习:邮箱 154
6.34.1 配置 155
6.34.2 线程定义 155
6.34.3 系统定时器配置 156
6.34.4 时间片配置 156
6.34.5 调度选项 156
6.34.6 优先级反转 158
6.34.7 练习:优先级反转 158
第7章 基于Cortex-M4的实用DSP 160
7.1 引言 160
7.2 Cortex-M4硬件浮点单元 160
7.3 FPU整体 161
7.4 FPU寄存器 161
7.5 启用FPU 162
7.6 异常与FPU 162
7.7 使用FPU 163
7.8 练习:浮点单元 163
7.9 Cortex-M4 DSP和SIMD指令 166
7.10 练习:SIMD指令 169
7.11 练习:优化DSP算法 171
7.12 CMSIS DSP库 176
7.13 CMSIS DSP库函数 176
7.14 练习:使用DSP库 177
7.15 DSP数据处理技术 180
7.16 练习:使用块处理的FIR滤波器 181
7.17 具有Q数的定点DSP 183
7.18 练习:定点FFT 184
7.19 实时处理设计 185
7.20 缓冲技术:双缓冲器或环形缓冲器 185
7.21 缓冲技术:FIFO消息队列 186
7.22 平衡加载 188
7.23 练习:RTX ⅡR 189
7.24 负责加载和直接存储访问的控制器 191
第8章 使用CoreSight进行调试 193
8.1 引言 193
8.2 CoreSight硬件 194
8.3 调试器硬件 195
8.4 CoreSight调试架构 195
8.5 练习:CoreSight调试 196
8.6 硬件配置 196
8.7 软件配置 197
8.8 调试局限性 201
8.9 指令追踪 201
8.10 练习:建立ITM 201
8.11 使用RTX RTOS的ITM进行软件测试 204
8.12 错误任务 204
8.13 软件测试任务 205
8.14 练习:使用ITM进行软件测试 205
8.15 使用ETM进行指令追踪 208
8.16 练习:使用ETM追踪 209
8.17 系统控制模块的调试支持 212
8.18 故障追踪 213
8.19 练习:处理器故障异常 214
8.20 CMSIS SVD 216
8.21 练习:CMSIS SVD 217
8.22 CMSIS DAP 220
8.23 Cortex-M0+ MTB 221
8.24 练习:MTB 221
8.25 调试特性总结 223
附录 224
书籍 226