ARM Microprocessor Basics
Introduction
- ARM: Advance RISC Machine.
- ARM was established as a joint venture between Acorn, Apple and VLSI in November 1990.
- ARM is the industry’s leading provider of 16/32-bit embedded RISC microprocessor solutions.
- The company licenses its high-performance, low-cost, power-efficient RISC processors, peripherals, and system-chip designs to leading international electronics companies.
- ARM provides comprehensive support required in developing a complete system.
Role of ARM Holdings
- ARM Holdings is a technology company headquartered in Cambridge, England, UK.
- The company is best known for its processors, although it also designs, licenses and sells software development tools under the RealView and KEIL brands, systems and platforms, system-on-a-chip infrastructure and software.
- Important: ARM does not manufacture ICs!
- ARM grants licenses of its core to different silicon vendors like ATMEL, NXP, Cirrus Logic, etc.
- These companies then manufacture the ICs.
- Examples include: LPC2148 from NXP, AT91RM9200 from ATMEL.
Where are ARM processors used?
- ARM processors can be used in any domain.
- Mainly, ARM processors are used in Handheld devices, Robotics, Automation, and Consumer Electronics.
- However, ARM processors are available for almost every domain.
ARM Based Products
Apple iPhone (ARM 11)
Motorola Z8 Smartphone (ARM11)
Blackberry (ARM11)
Nokia E90 Communicator (ARM11)
Processors Inside ARM-Based Products
SAMSUNG processor
ST Microelectronics processor
Texas Instruments : OMAP and DaVinci processor
Key Features of ARM Processors
- RISC Architecture: ARM processors are based on RISC (Reduced Instruction Set Computation).
Note: ARM is not 100% RISC; it includes amendments to meet the requirements of Embedded Systems.
- Large Register File: Features a large set of registers (R0 to R16), which is a deviation from pure RISC.
- Load and Store Architecture: Data processing operations only use register contents.
- Instruction Set: Uniform and fixed-length instructions.
- 32-bit Processor.
- Efficiency: Good speed-to-power consumption ratio.
- High Code Density.
- Execution Speed: Mostly single-cycle execution, with speeds from 1MHz to 1.25GHz.
- Java Support: JAVA Jezelle DBX (Direct Byte code execution).
- DSP Enhanced Instructions.
- Security: Support for TrustZone technology for an additional security core.
- Conditional Execution: All instructions can be conditionally executed (a deviation from RISC).
- 32-bit Barrel Shifter (a deviation from RISC).
- In-built Debugging Circuits.
ARM Processor Family
- ARM7TDMI (Entry Point)
- StrongARM
- ARM9 / ARM9TDMI / ARM9E
- ARM10E
- ARM11
- Cortex
- XScale
ARM Nomenclature: ARMxyzTDMIEJFS
| Code | Meaning | Description |
|---|---|---|
| x | Series | e.g., 7, 9, 11 |
| y | MMU | Memory Management Unit |
| z | Cache | Size of the cache |
| T | Thumb | Support for 16-bit Thumb instruction set |
| D | Debugger | JTAG debug support |
| M | Multiplier | Hardware multiplier (fast multiplication) |
| I | EmbeddedICE | Embedded In-Circuit Emulator for advanced debugging |
| E | Enhanced Instructions | Enhanced instruction set, often for DSP |
| J | Jazelle | Hardware acceleration for Java byte code |
| F | Vector Floating-point | Hardware support for floating-point operations |
| S | Synthesizable Version | A soft-core version that can be modified before synthesis |
Examples:
- ARM7TDMI: An ARM7 family processor with Thumb, Debug, Multiplier, and EmbeddedICE. This is a very common basic core.
- ARM946E-S: An ARM9 series core with a cache, enhanced DSP instructions, and is synthesizable.
ARM Processor Architecture Versions
| Version | Key Features |
|---|---|
| ARMv1 – v3 | Obsolete. Progressively added 32-bit instructions and coprocessor support. |
| ARMv4 / v4T | Added signed load/store instructions. The ‘T’ variant added the Thumb (16-bit) instruction set. |
| ARMv5TEJ | Added support for DSP algorithms and the Jazelle Java byte code engine. |
| ARMv6 | Support for SIMD (Single Instruction, Multiple Data), Thumb-2 ISA, and TrustZone security. Ideal for audio/video applications. |
| ARMv7 | Introduced NEON technology for media processing, optimized Thumb-2, and enhanced floating-point for 3D graphics. Has three profiles: Cortex-A, Cortex-R, and Cortex-M. |
ARMv7 Profiles (Cortex)
- Cortex-A (Application): For complex OS and user applications. Features an MMU (Memory Management Unit) and optional NEON support.
- Cortex-R (Real-time): For real-time applications requiring high determinism. Implements a protected memory system with an MPU (Memory Protection Unit).
- Cortex-M (Microcontroller): Designed for fast interrupt processing and cost-sensitive devices. Minimal gate count and highly deterministic behavior.
ARM in a Nutshell
- ARM processors are widely used in Embedded Systems.
- Excellent support for RTOS like Linux, QNX, VxWorks, FreeRTOS, etc.
- Known for their low power consumption and high-end processing capabilities.
- The ARM7TDMI core is their most successful, with over 1 billion devices shipping every quarter.
ARM Development Tools
A complete development environment includes:
- IDE (Integrated Development Environment)
- Compiler Suite
- Debugger
- Simulator
- JTAG Debugging Probe (Hardware)
- Development Board (Hardware)
Both open-source and proprietary tools are available.
Popular Development Toolchains
Proprietary Tools
- Keil MDK for ARM (includes uVision IDE, ARMCC compiler)
- IAR Embedded Workbench for ARM
- Wind River Workbench
- Green Hills MULTI
- Sourcery G++ (from CodeSourcery)
Free & Open Source Tools
- GNU ARM Embedded Toolchain (GCC for ARM)
- Eclipse IDE with plugins
- YAGARTO (Another GNU ARM toolchain)
- OpenOCD (for debugging)
JTAG Debugging Probes
These are hardware interfaces used for in-circuit debugging and programming.
SEGGER J-Link: A popular USB-powered JTAG emulator compatible with IAR, Keil, etc.
Olimex ARM-USB-OCD: A cost-effective JTAG emulator.
RTOS for ARM
Proprietary RTOS
- VxWorks from Wind River
- ThreadX from Express Logic (now part of Microsoft Azure RTOS)
- uC/OS-II from Micrium
- MontaVista Linux
- QNX
Free and Open Source RTOS
- Linux (with real-time patches like PREEMPT_RT)
- uClinux (for MMU-less processors)
- eCos
- FreeRTOS
- CooCox
Where to Start?
The LPC214x series is a great starting point for learning ARM.
- Core: Based on the popular ARM7TDMI family.
- Features: Excellent feature set for beginners.
- Tools: Free development toolchains are widely available.
- Hardware: Development boards are easily available and affordable.
- RTOS Support: Good support for RTOS like uClinux and FreeRTOS.
