Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Architectures and Processors blog Whitepaper - ARMv8-M Architecture Technical Overview
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tell us what you think
Tags
  • AMBA
  • Architecture
  • White Paper
  • Cortex-M23
  • Technical Support
  • Cortex-M35P
  • Cortex-M
  • TrustZone
  • Cortex-M33
  • Armv8-M
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Whitepaper - ARMv8-M Architecture Technical Overview

Joseph Yiu
Joseph Yiu
November 11, 2016
3 minute read time.

The next generation of ARM Cortex-M processors will be powered by a new architecture version called ARMv8-M architecture. This document provides a technical overview of various enhancements in the new architecture, as well as an introduction to the security technology, called TrustZone for ARMv8-M. This document also introduces AMBA 5 AHB5 which enables security management at a system level, and covers various use cases of the new technology.

ARMv8-M Architecture

  • ARMv8-M Architecture Technical Overview
  • ARMv8-M Architecture Reference manual

Information on ARMv8-M and TrustZone

  • The Next Steps in the Evolution of Embedded Processors for the Smart Connected Era
  • ARMv8-M architecture: what’s new for developers - YouTube

Cortex-M23, Cortex-M33 and Cortex-M35P processors information

  • Cortex-M | Introduction to ARM Cortex-M23 and Cortex-M33
  • Cortex-M23 processor product page
  • Cortex-M33 processor product page
  • Cortex-M35P processor product page
  • Cortex-M23 and Cortex-M33 - Security foundation for billions of devices
  • Five key features of the ARM Cortex-M23 Processor
  • Five key features of the ARM Cortex-M33 Processor
  • Cortex-M35P: multi-layered security at the heart of your device
  • Security principles for TrustZone for ARMv8-M (Webinar)

For details of Armv8.1-M processors (Cortex-M55, Cortex-M85), please visit:

      https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/cortex-m-resources

Resources for software developers

  • Documents on developer.arm.com

Topics

Document

Introduction

Introduction to the ARMv8‑M Architecture

TrustZone

TrustZone technology for ARMv8‑M Architecture

ARM C Language Extension (ACLE)

ACLE Extensions for ARMv8‑M

Secure software

Secure software guidelines for ARMv8‑M based platforms

System Design 

System Design for ARMv8-M

Exceptions and Interrupts

ARMv8‑M Exception Handling

Fault exception

Fault Handling and Detection

Power management and sleep modes

ARMv8-M processor power management secure state protection

Debug

ARMv8‑M Processor Debug

Memory model, MPU

Armv8-M Memory Model and MPU User Guide (doc, example codes)

MPU

Memory Protection Unit for ARMv8‑M based platforms

OS

RTOS design considerations for ARMv8‑M based platforms

ARMv8-M software development with ARM Compiler 6

Chapter 9 : Building Secure and Non-secure Images Using ARMv8-M Security Extensions

TrustZone software development in Keil MDK

Keil Application Note 291: Using TrustZone on ARMv8-M

Security extension details for compiler vendors

ARMv8-M Security Extension: Requirements on Development Tools (latest)

(v1.1)

ARMv8-M software development

EW2017 - Software Development on ARMv8-M Architecture

mbed(TM)OS deployment on Armv8-M

EW2017 - High-End Security Features for Low-End Microcontrollers

RTOS design

EW2019 - How RTOS should work in a TrustZone for Armv8-M environment

TrustZone Secure software

Stack sealing and why it is needed in TrustZone for Armv8-M

TrustZone Secure software Armv8-M processor Secure software Stack Sealing vulnerability
  • A few intricacies of writing ARMv8-M Secure code
  • Three ARM development tools to help you pioneer the IoT market
  • Security Extensions and Privilege Levels

Resources for silicon designers

  • Enhanced Security and Energy Efficiency of Microcontrollers and SoCs (AHB5 and Q channel introduction)
  • System Design for ARMv8-M
  • ARM AMBA 5 AHB Protocol Specification
  • AMBA APB Protocol Specification
  • AMBA Low Power Interface Specification
  • AMBA 4 ATB Protocol Specification
  • Corstone Foundation IP (Contains CoreLink SSE-200, CoreLink SIE-200 and more).
  • Webinar on secure system design
  • The six things you need to know about ARM CoreLink SSE-200 subsystem & ARM CoreLink SIE-200 system IP
  • CoreLink Interconnect | ARM CoreLink SIE-200 – ARM Developer
  • System Design | CoreLink SSE-200 subsystem – ARM Developer
  • Cortex-M Prototyping System+ (FPGA board)
Whitepaper - ARMv8-M Architecture Technical Overview.pdf
Anonymous
  • Yasuhiko Koumoto
    Yasuhiko Koumoto over 8 years ago

    Hello Joseph Yiu,

    thank you very much for the detailed explanations.

    I understood well.

    Best regards,

    Yasuhiko Koumoto.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Joseph Yiu
    Joseph Yiu over 8 years ago

    Sorry for the delay of my reply, I am travelling in Asia (holiday) at the moment.

    Lazy stacking feature is enabled by default, and is controlled  by FPCCR.LSPEN (no change from Cortex-M4).

    Software can switch it off if it need to.

    The challenging part would be what is being pushed to the stack:

    - R0-R3, R12, LR, PC, xPSR : always push to the stack in exception entry

    - S0-S15, FPSCR : stack frame always allocate the space for them if FPU is enabled and floating point context is active (CONTROL.FPCA==1), but the push might be deferred by lazy stacking.

    - R4-R11 : push to Secure stack if Non-secure exception occurred running Secure code execution.

    - S16-S31: stack frame allocate space for them if Non-secure exception occurred running Secure code execution, and FPCCR_S.TS is 1, and FPU enabled and is active (CONTROL.FPCA=1), but the push might be deferred by lazy stacking.

    Hope this helps.

    regards,

    Joseph

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • daith
    daith over 8 years ago

    I am not exactly sure what you mean. The state of the stack after an exception for various combinations of secure and non-secure state or floating point are shown in section B4.20 of the ARMv8-M Architecture Reference manual

    Lazy stacking only applies to the floating point registers. If an exception occurs in secure state taking it to a non-secure state then all the general registers are saved and zeroed, and then restored on return to secure state.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Yasuhiko Koumoto
    Yasuhiko Koumoto over 8 years ago

    Hello daith ,

    thank you for your detailed reply.

    I understood your comments as that the FPU lazy stacking was always enabled, and the stacking (if needed) would be done as the normal general registers. Also in the case of change from Secure to Non-Secure world, all the regsisters would be cleared.

    Is my understanding correct?

    Best regards,

    Yasuhiko Koumoto.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • daith
    daith over 8 years ago

    That statement in the Overview is more a description about the intent and effect rather than anything about the mechanism. The ARMv8-M Architecture Reference Manual goes into more detail - and the bits about what happens to the floating point registers with lazy stacking do not make for easy reading.

    As far as I can make out and assuming the secure state has used floating point then on a non-secure interrupt with lazy stacking enabled:-

    Space is left on the secure stack for all the floating point registers, not just s0-s15 and a lazy saving state bit is set and  a bit saying the floating point has been used cleared.

    The interrupt routine is entered

    If the interrupt routine does not use floating point then on return the floating point registers need never have been saved and they are certainly not restored - the bits will be set saying lazy saving not in use and floating point registers have been used just like it was before the interrupt.

    if the interrupt routine uses floating point then the processor will ensure that all the registers are saved on the secure stack and the lazy saving state ended and mark that floating point registers have been used. All the floating point registers will be zeroed before first use in the interrupt.. On return it will see that floating point has been used and will restore the floating point registers from the stack.

    The strong imperative they had was to ensure floating point use in secure state does not slow down interrupts which don't use floating point What they came up with should be easy to use and ensure security by not leaking floating point register values - it is most certainly not trivial though and I bet they've had to really sweat over checking it all out..

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
>
Architectures and Processors blog
  • Introducing GICv5: Scalable and secure interrupt management for Arm

    Christoffer Dall
    Christoffer Dall
    Introducing Arm GICv5: a scalable, hypervisor-free interrupt controller for modern multi-core systems with improved virtualization and real-time support.
    • April 28, 2025
  • Getting started with AARCHMRS Features.json using Python

    Joh
    Joh
    A high-level introduction to the Arm Architecture Machine Readable Specification (AARCHMRS) Features.json with some examples to interpret and start to work with the available data using Python.
    • April 8, 2025
  • Advancing server manageability on Arm Neoverse Compute Subsystem (CSS) with OpenBMC

    Samer El-Haj-Mahmoud
    Samer El-Haj-Mahmoud
    Arm and 9elements Cyber Security have brought a prototype of OpenBMC to the Arm Neoverse Compute Subsystem (CSS) to advancing server manageability.
    • January 28, 2025