Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Research Collaboration and Enablement
    • DesignStart
    • Education Hub
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • SystemReady Certification
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Tools, Software and IDEs blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Arm Community blogs
Arm Community blogs
Architectures and Processors blog Five things you may not know about Arm Cortex-M
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tell us what you think
Tags
  • Processor
  • Cortex-M0
  • Microcontroller (MCU)
  • Cortex-M3
  • Cortex-M
  • Thumb2
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Five things you may not know about Arm Cortex-M

Diya Soubra
Diya Soubra
August 4, 2014
2 minute read time.

Chinese Version 中文版 [原创翻译]关于Cortex-M你可能不了解的5件事

1 - Industry standard

ARM Cortex-M processors are a global microcontroller standard, having been licensed to over 40 ARM partners including leading vendors such as Freescale, NXP, STMicroelectronics, Texas Instruments,Toshiba, Microchip, Analog Devices, Silicon Labs, Spansion... Using a standard processor allows ARM partners to create superior device implementations with a consistent architecture for software developers to suit a large variety of applications.

2 - Instruction set

ARM Cortex-M uses the high density Thumb2 instruction set for an optimal blend of 16/32-bit instructions. As such, applications are smaller in size reducing the required flash memory which reduces power consumption. The Thumb2 instruction set on Cortex-M achieves more per byte than 8/16-bit devices thus delivering more performance per MHz. The processor is a Harvard architecture with a 3 stage pipeline with hardware instructions for divide, multiply and saturated math.


ISA.png

3 - Software infrastructure

ARM Cortex-M was built for creating sophisticated applications in the embedded space. The 4GB memory map is fixed across the product family on purpose in order to simplify software migration. A memory management unit adds reliability to the system by restricting access of each task to its own memory space under system control. A nested vectored interrupt controller (NVIC) handles the low layer software setup necessary to respond to interrupts, thus removing the need for assembly entry and exit routines. The NVIC also handles various levels of pre-emption and priority. The Cortex-M processors support thread and handler modes with privileged and unprivileged access. This is another factor adding to software reliability by giving access to system resources only to authorized software running in a specific state.


SW infrastructure.png

4 - Smart power management

A major concern for embedded applications is power consumption. The most power efficient system is where the software is designed to take advantage of the power saving features of the hardware. The Cortex-M processors have specific instructions that enable smart power management. Wait for Interrupt, Wait for Event, and SleeponExit are the foundation of power aware software design. These instructions are used to create power aware software architecture. There is no longer any need for polling loops that keep the processor awake. Events and interrupts occur; the processor wakes up to respond then goes back to sleep or deep sleep. Average power consumption is then drastically reduced.


Smart power mgmt.png

5 - Software and hardware ecosystem

ARM has an exceptionally broad ecosystem of 3rd parties supporting the Cortex-M processor family. The product line was designed to be coherent across processors to simplify the task for tool developers. Developers have a choice from over 26 Real-time Operating Systems, 13 IDE packages and 21 debuggers.

Real-Time Operating Systems (RTOS)

There is also a connected community with a rich environment to exchange information and an embedded software store to sell products The specified item was not found.

eco system.png

ARM Cortex-M processors were designed to give developers the most advanced software infrastructure while respecting the need for energy efficiency for embedded applications.

In the next episode, we will take a tour of the Cortex-M3.

 
Anonymous
  • Alban Rampon
    Alban Rampon over 9 years ago

    You are correct Boya. The documents are made to be simple rather than pointing out all the specifics. That's why, for instance, it doesn't specify that the ARM Cortex-M0 is an ARMv6-M whereas the ARM Cortex-M3 and Cortex-M4 are ARMv7-M.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Boya Zhao
    Boya Zhao over 9 years ago

    A good overview, but I think the statement may be a little generalizing. For example, the last sentence of the second part "2 - Instruction set":

    "The processor is a Harvard architecture with a 3 stage pipeline with hardware instructions for divide, multiply and saturated math."

    1) Only ARMv7-M cores are of Harvard architecture, while v6-M is Von Neumann architecture.

    2) All but Cortex-M0+ are implemented with a 3-stage pipeline, while Cortex-M0+ has only 2 stages.

    3) Hardware divide instructions only exists on Cortex-M3/M4 (see Divide and Conquer).

    4) Saturation instructions also exists on Cortex-M3/M4 only.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Mayank Sharma
    Mayank Sharma over 10 years ago

    Thanks Diya. Fits in nicely with these short ARM Technical Tutorial videos. You can see a short video on Cortex-M family debug and trace features on here. More videos to be uploaded soon.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Chris Shore
    Chris Shore over 10 years ago

    Thanks, Diya. I like the "Five things..." format. Readers might find my ARMv6-M/ARMv7-M intro guide useful too (ARMv6-M vs ARMv7-M - Unpacking the Microcontrollers)

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Cara Forsythe
    Cara Forsythe over 10 years ago

    Embedded

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
Architectures and Processors blog
  • Profile firmware with Performance Monitor Unit (PMU) in Armv8-A CPU

    Jiaming Guo
    Jiaming Guo
    This blog introduces how to profile firmware with Performance Monitor Unit (PMU) in Armv8-A CPU. It provides a reference implementation of the PMU library.
    • November 8, 2023
  • Views on Relaxed Atomics in C++ from Arm’s technical leadership team

    Richard Grisenthwaite
    Richard Grisenthwaite
    Views from the Arm technical leadership team that it believes that today, the cost implications of tightening C++ relaxed atomics outweigh its benefit.
    • November 3, 2023
  • Part 2: Dev Testing in .NET

    Alan Hayward
    Alan Hayward
    This is the second and final part of the blog series on Dev Testing in .NET. In this part we look at further uses of SuperPMI and fuzzing with Fuzzlyn.
    • October 31, 2023