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.
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.
3rd Party Cookies
This website uses Google Analytics to collect anonymous information such as the number of visitors to the site, and the most popular pages.
Keeping this cookie enabled helps us to improve our website.
Please enable Strictly Necessary Cookies first so that we can save your preferences!
Additional Cookies
This website uses the following additional cookies:
(List the cookies that you are using on the website here.)
Please enable Strictly Necessary Cookies first so that we can save your preferences!