arm7,arm9,arm10,arm11,cortex-r和cortex-a系列是一条比较清晰的延续线路,每一代都有很多种组合,也就是是否有cache,是否mmu/mpu,fpu,dsp,流水线级别,一些内部机制变化(比如SIMD等)以及的指令集更新,这些对于应用级程序员来说基本不可见(某些情况下是否cache需要考虑),但是在arm11和cortex中对应用程序员最大的变化在于不再需要关心对齐问题,cpu已经允许非对齐访问。
而cortex-m系列同上述的路线产生了一个巨大的偏离,cortex-m的定位是mcu,所以cortex-m的灵活性7,就相对差了很多,总线地址上放些什么部件已经被arm规定好。并且cortex-m的异常处理机制和向量表,处理器模式都已经跟其他arm体系的芯片不一致,在发生异常的时候,cortex-m会硬件入栈8个寄存器,而不是依靠软件处理。另外cortex-m只提供一种指令集,thumb2,在m中arm态是非法的。
总之如果你对arm7,9,11,cortex-a,r中的一个很熟悉,学习其他的也不难。但是cortex-m基本上是一个全新的东西。
|