Investigating ARM Cortex® M33 core with TrustZone® – running TrustZone® example projects in MCUXpresso IDE

Last week I wrote about why we need the TrustZone® security extension for ARMv8-M. There are software use-cases where it can be very helpful to partition the software into 2 separate worlds, secure and non-secure. TrustZone® acts as the gatekeeper between these two worlds and manages how the core transitions between the worlds. The ARMv8-M architecture introduces two new States for the core – secure and non-secure. Cortex® M33 core (and M23 core also) is implemented to ARMv8-M standard and of course supports the two new states.

ARMv8-M architecture introduces 2 states for the core – secure and Non-secure

Erich blogged about TrustZone® and running projects in MCUXpresso IDE quite soon after the LPC55S69 was launched. That material can be found here and is essential background information. I recommend that you take a look. Please be aware that MCUXpresso IDE has been through a couple of revisions, and the way to load TrustZone® projects has improved since April 2019.

With the introduction of MCUXpresso IDE v11, the two TrustZone® projects can be downloaded to flash, and a debug session started simply by using the Quickstart panel ‘Debug’ feature to download the ‘secure’ project. The secure and non-secure projects are connected inside MCUXpresso and will both download to the LPC55S69-EVK.

This week in my video, after a short introduction about these new secure and non-secure states, we take a look at running the first TrustZone® examples from the MCUXpresso SDK. It is all straight-forward for those of us familiar with running the other SDK examples.

main() in the hello_world_s secure project, showing initialisation of non-secure world

Feel free to head over to the embeddedpro® channel on YouTube, or you can watch the video embedded here. As always I am happy to hear your comments and feedback, and come back next week when I’ll blog about how the security attributes for memory in a TrustZone® project are configured with the Trusted Execution Environment tool.

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.