再上一篇:16.8 ROM 表
上一篇:第17章
主页
下一篇:17.3 Cortex-M3 修订版1 与修订版 2 的区别
再下一篇:17.4 开发工具
文章列表

17.2 Cortex-M3 修订版0 与修订版 1 的区别

《Cortex-M3 权威指南》,嵌入式处理器开发教程。

早期的Cortex-M3产品是基于Cortex-M3处理器修订版0的。在2006年第 3季度之后的CM3 产品可以使用修订版 1。在本书出版之时,所有的新CM3器件应该都是基于修订版 1的。了解自己 使用的芯片基于哪个修订版是很重要的,因为在修订版 1中作出了许多重要的改变和改进。在本书 前面章节中,都是按新的修订版 1来叙述的。

在翻译本书时,有两个 CM3 芯片生产商,分别是 Luminary 和 ST。译者查看了它们的资料,判定它们都是使 用修订版 1的处理器的。后续会有更多的 CM3芯片生产商,但它们肯定不会使用老的修订版0了。

在编程模型中可以看见的改变包括如下内容:
 从修订版 1开始,响应异常时的寄存器操作可以被配置成强制对齐到双字边界,这可以通 过置位 NVIC_CCR.STKALIGN来启用。
 因为刚才的理由,NVIC_CCR中加入了 STKALIGN位
 修订版 1的修订版中引入了新的 AUXFAULT(辅助 fault)状态寄存器(可选)
 DWT中添加了诸如数值匹配的新功能
 ID寄存器的值因修订版号位段而改变 在编程模式中看不见的改变更多,它们是: 代码存储空间的存储器属性被硬线连接到可缓存,已分配(allocated),不可缓冲,不可共享。
这会影响 I-Code AHB和 D-Code AHB,但是不会影响系统总线接口。
支持在 I-Code AHB和 D-Code AHB间的总线复用操作。在此操作模式下,可以使用一个简单 的总线复用器来把 I-Code 和 D-Code 归并(merge),这可以降低总门数,旧修订版的则必须使用 ADK总线矩阵组件。
新添加了用于连接AHB跟踪单元(HTM)的输出端口。AHB是一个CoreSight中定义的调试组件, 服务于复杂的数据跟踪操作。
调试组件或调试寄存器可以在系统复位期间访问,只有在上电复位时才无法访问。 在修订版1中,NVIC_ICSR.VECTPENDING 位段可以受 NVIC_DHCSR.C_MASKINTS 位的影响:
当 C_MASKINTS置位时,如果掩蔽了一个悬起的中断,会使 VECTPENDING的值为零。

JTAG-DP 调试接口被 SWJ-DP 模块取代。但是仍然允许芯片厂商使用 JTAG-DP,因为它也是

CoreSight家庭中的成员。

因为修订版 0的 CM3在响应异常时没有双字对齐堆栈的功能,有些编译器,如 ARM的 RVDS和 Keil的 RVMDK ,都提供了特殊的编译选项以决定是否允许软件调整入栈,以使开发出来的产品是 EABI兼容的,当软件需要与其它 EABI-兼容开发工具时,这还是相当重要的。
为了判定使用的单片机使用了哪个修订版的 CM3 内核,可以使用 NVIC 中的 CPUID 寄存器,

revison和变种位段指出了具体使用的 CM3修订版。如表 17.1所示: 表 17.1 CPUID基寄存器

表 17.1 CPUID 基寄存器(地址:0xE000_ED00)

实现者

[31:24]

变种

[23:20]

常数

[19:16]

PartNo

[15:4]

Revision

[3:0]

修订版 0(r0p0)

0x41

0x0

0xF

0xC23

0

修订版 1(r1p0)

0x41

0x0

0xF

0xC23

1

修订版 1 (r1p1)

0x41

0x1

0xF

0xC23

1

修订版 2(r2p0)

0x41

0x2

0xF

0xC32

0

译者查看了ST的STM32系列使用的内核,得到的结果是r1p1。

17.2.1 修订版 1:从 JTAG-DP到 SWJ-DP

串行线 JTAG 调试端口(SWJ-DP)把 SW-DP 和 JTAG-DP 的功能合二为一,并且支持自动协议 检测。使用这个组件,CM3 设备可以支持 both SW 和 JTAG 接口。(目前可以使用的,由 LM 和 ST 所提供的芯片都是使用了 SWJ-DP——译者注)。

图 17.1 SWJ-DP:合并了 JTAG-DP 和 SW-DP 的功能