Let’s see some brief introductions about Arm Cortex-M4 to understand the reason I choose it!
1. ARM Cortex-M4 processors?
ARM Cortex-M4 processors are one of of the products in the ARM Cortex-M processors family.
You can see in above figure, Cortex-M4 processors are based on ARMv7-M architecture, which are high- performance processors with SIMD, fast MAC and saturate arithmetic instructions to carry out digital signal processing applications also.
2. The capabilities of Arm Cortex-M4 processors
Cortex-M4 processors use a 32-bit architecture, then their internal registers in the register bank, the data path, and the bus interface are all 32 bits wide.
Below are what Arm Cortex-M4 has:
- Three-stage pipeline design
- Harvard bus architecture with unified memory space: instructions and data use the same address space
- 32-bit addressing, support 4GB of memory space
- On-chip bus interface based on ARM AMBA (Advanced Microcontroller Bus Architecture) Technology, which allow pipelined bus operation for higher throughput
- An interrupt controller called NVIC (Nested Vectored Interrupt Controller) supporting up to 240 interrupt requests and from 8 to 256 interrupt priority levels (depend on the actual device implementation)
- Support for various features for OS (Operation System) implementation such as a system tick timer, shadowed stack pointer
- Sleep mode support and various low power features
- Support for an optional MPU (Memory Protection Unit) to provide memory protection features like programmable memory , or access permission control
- Support for bit data accesses in two specific memory regions using a feature called Bit Band
- The option of being used in single processor or multi processor designs
All things seem difficult to understand at the first read. However keep continue reading and studying, we can understand them all.
3. What are Arm Cortex-M4 processors advantages?
Based on its capabilities, I will show you some advantages of using Arm Cortex-M4:
- Low power: many Cortex-M microcontrollers have power consumption of less than 200 µA/MHz, with some of them well under 100 µA/MHz. This thing allow Cortex-M4 processors to be used in various ultra-low power microcontroller products
- Performance: The Cortex-M4 processors can deliver over 3 CoreMark/MHz and 1.25 DMIPS/MHz. This allows Cortex-M4 microcontrollers to handle many complex and demanding applications
- Energy efficiency: Combining low power and high-performance characteristics, the Cortex-M4 processors can do a lot of processing, with a limited supply of energy.
- Code density: the Thump ISA provide excellent code density. This mean to archive the same tasks, you need a smaller program size. Then you can reduce cost by using a microcontroller with smaller flash memory size.
- Interrupts: The Cortex-M4 processors have a configurable interrupt controller design, which can support up to 240 vectored interrupts and multiple levels of interrupt priorites (from 8 to 256 levels). Nesting interrupt is automatically handled by hardware, and the interrupt latency is only 12 clock cycles for system with zero wait state memory. This make Arm Cortex-M4 very suitable for many real-time control applications.
- Ease of use, C friendly: Cortex-M4 processors have a simple, linear memory map, and there is no special architectural restrictions. It helps you to program almost everything in C easier including the interrupt handler.
- OS support: The Cortex-M4 processors are designed with OS application in mind. Currently there are over 30 embedded OSs available for Cortex-M processors.
4. Why ARM Cortex-M4?
Now you can see, with a bunch of advantages and capabilities, ARM Cortex-M4 will be the idea processors family for us to study Microcontroller Programming as much as possible. And as a bit disclosure, I will use STM32F411 Discovery kit for all my post about Microcontroller Programming, which is built by a STM32F411VET chip – an Arm Cortex-M4 family line.
In next post, I will show you some essential things to start the Microcontroller programming. See you there.
The content in this post is triggered from The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors.
Thanks author Joseph Yiu very much for a great book.