This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

what is difference between Arm7 and Arm cortex-m series??

what is difference between Arm7 and Arm cortex-m series??

Parents
  • The two are quite different, though they can share code, if the code is written for this.

    The name Cortex comes from Core and Texas

    Arm7 (1994-2001) uses the Armv4T architecture, which supports two instruction sets: The old Arm instruction set and Thumb

    Arm Cortex-M0 uses the Armv6-M (only supports 16-bit thumb instructions).

    Arm Cortex-M3 and later uses the Armv7-M which supports the Thumb2 instruction set (16-bit + 32-bit instructions).

    Apart from the instructions, there are other differences in the architecture.

    For instance, the interrupt handling is different. On Cortex-M, you can write an interrupt routine directly in C like any other subroutine, without adding any special attribute keywords.

    On Arm7, your compiler need to add a special prologue/epilogue.

    The prologue/epilogue mainly saves and restores registers on the stack.

    There are many other differences, which I cannot answer in detail; for this, you'll need an answer from an expert.

    Personally, I find both architectures great.

    There is no FIQ interrupt on Cortex-M, on the other hand, Interrupts are very easy on this one.

    Thumb instructions are slightly limited from the older Arm instructions.

    You cannot use LSR in a load or store instruction. This means you can't have an index in the top N bits of a register and use it directly. In such cases, you'll need an extra instruction to extract those bits.

    You cannot subtract an index register from the base register in a load or store instruction.

    There are some other limits as well.

    -But most of the functionality exist in the Thumb2 instruction set, so normally you won't miss any features.

Reply
  • The two are quite different, though they can share code, if the code is written for this.

    The name Cortex comes from Core and Texas

    Arm7 (1994-2001) uses the Armv4T architecture, which supports two instruction sets: The old Arm instruction set and Thumb

    Arm Cortex-M0 uses the Armv6-M (only supports 16-bit thumb instructions).

    Arm Cortex-M3 and later uses the Armv7-M which supports the Thumb2 instruction set (16-bit + 32-bit instructions).

    Apart from the instructions, there are other differences in the architecture.

    For instance, the interrupt handling is different. On Cortex-M, you can write an interrupt routine directly in C like any other subroutine, without adding any special attribute keywords.

    On Arm7, your compiler need to add a special prologue/epilogue.

    The prologue/epilogue mainly saves and restores registers on the stack.

    There are many other differences, which I cannot answer in detail; for this, you'll need an answer from an expert.

    Personally, I find both architectures great.

    There is no FIQ interrupt on Cortex-M, on the other hand, Interrupts are very easy on this one.

    Thumb instructions are slightly limited from the older Arm instructions.

    You cannot use LSR in a load or store instruction. This means you can't have an index in the top N bits of a register and use it directly. In such cases, you'll need an extra instruction to extract those bits.

    You cannot subtract an index register from the base register in a load or store instruction.

    There are some other limits as well.

    -But most of the functionality exist in the Thumb2 instruction set, so normally you won't miss any features.

Children
No data