关于 CORTEX-M0+ 架构随笔
时间:07-03
来源:互联网
点击:
P.S, ARM7/9/11 is dead?
似乎不能完全确认, 尽管今天我们称呼 ARM7/9/11 为陈旧概念, 但是在 ARMv7-AR 架构中, 还特别给出章节, 讲解 ARM11 中较新的 ARMv6 的版本.
我们大胆猜测, 这或许是尊重已经投放市场的产品线的继续延续?
还是说, ARMv6 (通常 ARM11 实现的是v6 架构) 处于研发历史阶层的上下衔接阶段? 因为 ARMv6 在通称的 ARMv5 文档中, 以及在 ARMv7-AR 文档中, 都被提及.
ARMv7
Cortex A 与 cortex R 似乎被 ARM 统一对待, 它们两者的指令集架构被放在了一个文档中, ARMv7-AR RM. 我们可以合理想见其架构的相似性.
还有就是, 我们这里重视的基础类型的 application 中常用的 Cortex M 系列实现的架构: ARMv7-M. 而 ARMv7-M 指令集架构一般由 Cortex-M3 实现.
ARMv7-M 仅支持 Thumb-2
任何阅读过 ARMv7-M A-RM document 的同行诸君, 都会如我们般, 立即注意到 ARM 指令集章节消失, 只存在 Thumb 指令集章节.
显然的, ARMv7-M 只支持 Thumb instruction set. 因为全部的 ARMv7 都支持 Thumb-2(包括大量32-bit 指令), 故 ARMv7-M 仅仅支持 Thumb-2 ISA, 而不支持 ARM ISA.
ARMv7类型特点
A, 具备内存管理模块的虚拟地址 -- 我们毫不犹豫将它与影音应用化等号.
R, 有一个实时的 profile -- 我们似乎感觉到路由器转发器之类的应用在招手. 而且我们似乎也对 R 的来由知道了些什么```
M, 至于M -- 我们想忠实翻译出 M 的介绍, "仅仅支持 Thumb, 这里整个儿的 size 和实现操作的确认性, 比纯粹的能力表现来得更重要"... 与闪闪发光 AR 比较, 这个推广似乎有点让人垂头丧气,``` 不过似乎也非常符合 cortex M 的市场策略``` ^&^
对于我们感兴趣的 ARMv7-M 的特性之一是: 异常句柄仅仅用 c/c+ funcitons 就可以实现, 标准调用即可.
我们猜测这可能说明, 类似处理中断之类的 job, 我们或者说 compiler 不需要汇编的代码的参与.
什么是"高度确定性的操作"(Highly deteerministic operation)?
在 ARMv7M A-TM 中, ARM 试图向我们解释, Cotex M series(比如实现 v7M 的 cortex M3), 一个强调的优点就是高度确定性操作, 这可能包括下列优点:
(1) single or low cycle count execution
(2) minimal interrupt latency, with short pipeline
(3) cacheless operation
ARMv7E-M
如果在 ARMv7-M 架构中, 加入 ARM DSP 指令, 可以实现 ARMv7E-M. Cortex M4 实现该架构而为我们所知.
v5 与 v7M Registers
如果要在通称 ARMv5 与 ARMv7M 的 Register 进行一番比较, 我们能够发现一些显著的不同:
ARM registers(通称 v5) 共 37pcs, 包括: 16pcs 通用registers + 15 pcs(异常加速处理专用 registers) + 6pcs 状态 registers(CPSR, 5-SPSR)
这 16pcs 通用 registers 中有 3pcs 是特殊的, 它们是: R13(SP), R14(LP), R15(PC)
ARMv7-M core registers (我们没有提及 v7M 新的 SCS registers 与 CPUID registers, 它们属于 memory mapped system registers)
在 application level 上, (16 + 1)pcs core register, 包括: 13pcs 通用registers + 3pcs specail registers(SP, LR, PC) 以及 application statue register APSR.
在 system level 上, 则增加了 xPCR, MASK, CONTROL registers
如果说 ARMv7-M 的不同特性, 它们或许暗示着:
(1) SP, LP, PC currently is specail register for v7M instead of using as general purpose registers sometimes under v5 Architecture.
(2) xPCR only manage APSR, IRSP and EPSR, which is different from v5 (it will save any PSR with every proess mode).
(3) Add MASK and CONTROL registers. About Control register, we found it should be specail for us to know the privilege mode, sp mode and fp extension.
尽管有这两者我们总结出的上述不同, 但是也让我们感觉到了 arm architecture 的继承性.
另外, 我们隐约意识到, 因为 SCS 与 CPUID registers 的存在, 我们很可能对 ARMv7-M 的实现者(我指 M0 ~ M4) 将有一个更加清晰的了解与支配手段```
Cortex M0/M0+ 实现的架构
Cortex M0/M0+ 实现的架构是 ARMv6-M
ARMv6-M 架构
ARMv6-M 是 ARMv7-M 的一个子集(subset)
ARMv6-M 架构仅支持 Thumb 指令集
ARMv7-M 架构支持Thumb-2(该指令集在 v6T2中引入).
作为 ARMv7-M 的 subset, v6M 支持全部的来自 ARMv7-M 的 16-bit Thumb instructions(不包括 CBZ, CBNZ, and IT).
此外还支持 32-bit 的 Thumb Instraction 中的 BL, DMB, DSB, ISB, MRS, MSR.
要提及的就是, 作为 v7-M的 subset, 也同样的, 并不支持 ARM 指令集
因此, 在上述角度下, Cortex-M0+ 应该称为 Thumb 支持更合适(实际上, 后面的 ARM info 的 Architecture 框图也说明了此点).
ARM NXP Cortex DSP Cortex-M0 MCU 相关文章:
- 基于ARM的除法运算优化策略(01-14)
- 基于ARM的CAN总线智能节点的设计(01-24)
- ARM基础知识教程五 (02-08)
- ARM基础知识教程六(02-08)
- ARM基础知识教程七(02-08)
- ARM基础知识教程八(02-08)