Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Architectures and Processors blog Using TrustZone on Cortex-M23 and Cortex-M33
  • 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
  • Cortex-M23
  • keil_tools
  • arm trustzone
  • Cortex-M
  • Cortex-M33
  • Armv8-M
  • keil_mdk
  • webinar
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Using TrustZone on Cortex-M23 and Cortex-M33

Michelle Page-Croft
Michelle Page-Croft
November 18, 2016
2 minute read time.

ARM recently announced the first two processors using the ARMv8-M architecture, ARM Cortex-M23 and Cortex-M33. ARM TrustZone for ARMv8-M adds security features to these cores that allow applications and services to operate securely while safeguarding the secure resources from being misused, corrupted or inspected by intruders. On November 17th christopherseidl and thomasensergueix hosted a webinar explaining how to program secure and non-secure domains on a processor with TrustZone.

Missed the webinar? Don't worry, you can watch the recording here:

During the webinar there were lots of great questions asked. We wanted to share some of these with you here.

Q: What about the code compatibility, migrating from Cortex-M0+ to Cortex-M23? Or Cortex-M3/M4 to Cortex-M33?

A: Cortex-M23 is building on ARMv8-M which is a superset of the AMRv6-M architecture, so code will remain forward compatible. I would just point out, that as the new architecture improved the programmer's model of the MPU, you are very likely to have to adapt MPU management code (assuming MPU was in use). The same is valid for porting from Cortex-M3/M4 (ARMv7-M) to Cortex-M33.

Q: What kind of OS is used in the secure world?

A: Any kind of real-time operating system supporting ARMv8-M can be used. CMSIS-RTOS v2 API provides a standardized interface for RTOS running on Cortex-M23 and M33.

Q: Is RTX supporting natively secure and non-secure tasks creation?

A: The current implementation of RTX runs in the non-secure state, but can call functions from the secure state. Further revisions will allow for other use cases as well. Generally, we advise to use the RTOS in the non-secure state as this will lower the attack surface for hackers.

Q: How do you define the functions in specific address like secure or non-secure? Using SAU, I understand that we can define regions as S/NS. But while defining the C functions, how will we assign that func1 should go to secure area and the func2 or func3 should go to NS area?

A: Any function defined in the secure project will go to the secure memory, while functions from the non-secure project will be stored in the non-secure memory.

Q: Any issues using Trust Zone entry functions with C++?

A: Code written in C++ must use extern “C” linkage for any inter-state interaction.

Q: Is "ARMv8-M Architecture Reference Manual" available (even in draft state)?

A: https://developer.arm.com/products/architecture/m-profile/docs/ddi0553/latest/armv8-m-architecture-reference-manual

Q: Are Cortex-M23 and Cortex-M33 simulated in Keil MDK?

A: In MDK-Professional you can simulate your code using Fixed Virtual Platforms that model the functionality (not the cycle accuracy) of ARM Cortex-M23 and M33.

Q: Any specific built in crypto engine available?

A: there is no crypto engines built into the Cortex-M23 and Cortex-M33 processors. ARM offer crypto-engines as part of the TrustZone CryptoCell product line.

 
Anonymous
  • BrunoV
    BrunoV over 6 years ago

    The slides seem to be available here: https://www2.keil.com/docs/default-source/default-document-library/using_trustzone_on_arm_cortex-m23_and_cortex-m33.pdf?sfvrsn=2 

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Deepak Kumar
    Deepak Kumar over 6 years ago

    Hello Team,

    I would like to do some prototyping based on trust zone, Can u please suggest any development board based in ARM23/33 processor ? 

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Deepak Kumar
    Deepak Kumar over 6 years ago

    Can you recommended any Development board we can use for prototyping ?

    • 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