195 Views

ARM Microcontroller Overview

30/08/2021, hardwarebee

Microcontrollers are everywhere around us, every TV, car, washing machine — all these devices are using a microcontroller. A microcontroller is a very small computer that has a processor and can be embedded into a larger system.

 

 

Microcontrollers are designed to be used in many applications and have different features and capabilities to allow them fit perfectly into various devices and products.

 

Microcontrollers are integrated into many products because they allow engineers to control the system using software. With such software, engineers can enable many features, add flexibility, and automate various functions.

 

Arm Microcontrollers Architecture and Building Blocks

 

In this section, we will explain the architecture of ARMv6-M that has been developed and used in ARM Cortex -M0 and Cortex-M0+ processors.

 

 

The ARM Cortex-M1 Processor was the first ARM Processor based on ARMv6-M architecture, and it is used mainly for FPGA applications.  In the beginning, ARM produced ARM Cortex-M1, and after that ARM produced ARM Cortex-M0+ microprocessors.

After the success of M1 product, many customers asked ARM to provide more processors based on ARMv6-M architecture. In the following diagram, you can find the evolution of the ARMv6-M architecture.

 

 

ARMv6-M Architecture

 

As you can see in the following figure, ARMv6-M architecture can be divided into:

 

  • Two operation modes (Handler mode, Thread mode)
  • Two states (Thumb state, Debug state)

 

Additionally, there are two access levels:

 

  • Privileged
  • Unprivileged

 

The first one allows access all recourses in the processors, on the other hand, the unprivileged access level doesn’t allow to access some memory regions, this access level is not in all Cortex-M processors as an example Cortex-M0.

 

The Thumb state is activated while running the program, and it can be in the handler mode or the threaded mode based on the processor configuration, in some models, there is no difference at all between the two modes. If it is configured to use thread mode, so it may execute the code in privileged access level or in unprivileged access level.

 

ARM Cortex-M0 uses privileged access level since it doesn’t have unprivileged access level option.

 

The Debug state is activated when the processor is not running or executing programs or instructions. And it is only active if the debugger is connected, and it allows us to change the register values, however, we can access the system memory in both states (thumb or debug).

 

The default state of the processor when it is powered on is the Thumb state and privileged access level Thread mode.

ARMv6-M Building Blocks

 

ARMv6-M Registers

 

ARM processor has many registers for processing the data from the memory.  There are some steps to load the data from the memory to the processor.

 

  • Load the data from the memory to the register bank
  • Put the data inside the processor core
  • Write back to the memory
  • Keep the register bank for the next process

 

This process is called the load-store architecture, it is beneficial especially when using c-code since it is very proper and easy for compilers

 

The Cortex-M0/M0+ has a 16/32-bit register bank, but R13 to R15 is used as a special register. In the following figure, you can find more details about the Register bank and Special Registers.

 

R0 to R1 are used as general-purpose Registers.

 

R13 is the Stack Pointer Register, it is used to refer and use the stack memory, it has two operations

  • PUSH
  • POP

 

R14 is the link Register and is mainly used for keeping and saving the return address of the subroutine.

 

R15 is the program counter and its purpose is to return the instruction address or branching. The PC is readable and writeable Register

 

ARMv6M Memory System

 

Most or even all the ARM Cortex-M processors have 4 gigabytes of memory address space. Any space is divided into some reigns and each one of them has its usage.  The following is the memory map of ARM Cortex-M processors.

 

 

It has a built-in block such as NVIC or the interrupt controller and also some debugging modules.

 

ARMv6M interface I/O Cycle

 

In the following figure, you can see the diagram of a single cycle interface of ARMv6M. It is used to connect a short number of peripherals, and it can be connected with the AHB-lite module.

 

 

Memory Protection Unit – MPU

 

In the ARM Cortex M0+ processor there is a great feature which is MPU or Memory Protection Unit, and it is a unit that can be programmed to be used with different states (privileged/unprivileged). It is very useful in multitasking systems to switch between tasks.

 

ARMv6M Debug System

 

There are many debugging features in ARM Cortex-M processors (M0/M0+) such as register access, Breakpoint Unit which is used for 4 hardware breakpoints support. In the following figure, you can see debugging process using JTAG and other protocols.

 

ARM Microcontroller Applications

 

ARM microcontrollers are dominating many industries such as the industrial, automotive, aerospace, semiconductors and more. Here are a few applications that are based on ARM microcontroller:

 

  • Washing machines
  • Motor control systems
  • Flight control systems
  • Medical MRI machines
  • Mobile Phone

ARM Cortex

 

This type of ARM core is used mainly in microcontrollers, such as ARM Cortex M4.  Technologies like ASSPs, SOC and ASICs also can have ARM Cortex sore inside them. But in most cases, you can find ARM Cortex microprocessor inside microcontrollers.

 

In the last decades, ARM has produced many types of microprocessors. ARM processors are mostly 32 bits, but ARM has been producing 64-bit architectures as well. As an example, the ARM7TDMI processor was very popular and widely used in the market, it has a lot of advantages such as low power consumption, this processor uses Thumb that supports a 16-bit instruction set. It has been deployed and used in many mobile phones and also microcontrollers. After that, ARM has produced ARM9, ARM9E, and ARM11 processor families, these products produce more and higher performance.

 

The following image shows an overview of the ARM microprocessor family since 2003:

 

 

 

Cortex-A Microprocessors

 

This ARM model is designed to produce sufficient performance to handle operating systems like Windows, Linux, iOS, etc. This type of processor has a very long processor pipeline and can execute high clock frequency, for example, more than 1 gigahertz.

 

Advantages

  • This type has MMU or memory management unit for virtual memory support
  • It has also a secure program execution environment or Trust Zone

 

Applications

  • Mobile phones, tablets, TVS and servers

 

Disadvantages

  • ARM Cortex-A processors don’t support real-time applications.

 

Cortex-R Microprocessors

 

This type is designed mainly for real-time applications since it provides high performance and support crunching data. It operates at 500 megahertz to 1 gigahertz.

 

Advantages

  • Efficient in responding to hardware events
  • It contains cash memories and very small, coupled memories are mainly used for ISRs
  • It has an error correction code or ECC which is mainly used for memory support

 

Applications

  • HDDs or hard drives, wireless applications (base band), automotive microcontrollers, and industrial controllers.

 

Disadvantages

  • Complex design architecture and very high-power consumption

 

Cortex-M Microprocessors

 

This type is used mainly for interrupt responses. And that’s why this processor has a coupled built in interrupt controller or Nested Vectored Interrupt Controller “NVIC”.  It has short pipeline processor and that makes it a proper choice as the mainstream microcontroller in the market especially for non-critical systems.

 

Advantages

  • Very easy to use
  • low power consumption

 

Applications

  • Sensors, Mixed Signal ICs
  • ASICS, Wireless Communications systems

 

Disadvantages

  • Not the best choice for very high-performance

 

ARM Microcontroller Availability

 

Arm microcontrollers are very available as standalone IP cores but are used by many 3-partry vendors that used ARM inside their microcontrollers. Since we cannot cover all ARM microcontrollers in the market, the following links are examples of ARM microcontrollers that are developed by different manufactures. You will find the specifications and block diagrams for each product.

 

Analog Devices (general purpose applications)

https://www.analog.com/en/products/processors-microcontrollers/microcontrollers/arm7-core-products.html

 

 

Microchip Technology Inc (general purpose)

https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/32-bit-mpus/sama5/sama5d2-series

 

 

NXP Semiconductors (Automotive applications)

https://www.nxp.com/products/automotive-products:MC_50802

 

 

Renesas Electronics (lower power wireless transmission)

https://www.renesas.com/us/en/products/microcontrollers-microprocessors/renesas-synergy-platform-mcus

 

 

STMicroelectronics (general purpose)

https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html

 

 

Toshiba America Electronic Components (general purpose)

https://toshiba.semicon-storage.com/ap-en/semiconductor/product/microcontrollers/detail.TMPM3H2FSDUG.html

 

Recent Stories