# [Get started with TrustZone on NXP LPCXpresso55S69](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/trustzone_nxp_lpc/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/trustzone_nxp_lpc/)
- [Run TrustZone Hello World example](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/trustzone_nxp_lpc/hello/)
- [Breaking down the application](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/trustzone_nxp_lpc/trustzone_concepts/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/trustzone_nxp_lpc/_next-steps/)

## About this Learning Path

| Skill level:         | Introductory                  |
|----------------------|-------------------------------|
| Reading time:        | 20 min                        |
| Last updated:        | 13 Aug 2026                   |

| Author:              | Pareena Verma, Arm [GitHub](https://github.com/pareenaverma) [LinkedIn](https://linkedin.com/in/pareena-verma-7853607) |
|----------------------|-------------------------------|
| Arm IP:              | [Cortex-M](https://support.arm.com/?tab=compute-ip&Product%20Type=Microcontrollers) |
| Tags:                | [Security](https://learn.arm.com/tag/security), [Baremetal](https://learn.arm.com/tag/baremetal), [TrustZone](https://learn.arm.com/tag/trustzone), [Arm Compiler for Embedded](https://learn.arm.com/tag/arm-compiler-for-embedded), [Keil MDK](https://learn.arm.com/tag/keil-mdk) |

### Who is this for?
This is an introductory topic for software developers new to using TrustZone.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Install the Keil MDK Tools
- Run a hello world TrustZone example
- Understand switching of security states
- Learn how secure functions are called from a non-secure state

### Prerequisites
Before starting, you will need the following:
- Familiar with C programming on microcontrollers
- Comfortable with Windows
- NXP LPCXpresso55S69 board

### Summary
You’ll run and debug a TrustZone hello-world example on an NXP LPCXpresso55S69. First, you’ll install Keil MDK and Arm Compiler for Embedded, then retrieve the example through the µVision Pack Installer. Next, you’ll add the secure and non-secure projects to a workspace, build and run them, and use debugging to observe security-state transitions and secure-function calls.

### Frequently asked questions
<details>
<summary>What do I need before building and running the example on hardware?</summary>
Install Keil MDK and Arm Compiler for Embedded on a Windows machine, and connect the NXP LPCXpresso55S69 board.
</details>

<details>
<summary>How do I get the TrustZone hello world example into µVision?</summary>
Use the Pack installer widget to select the LPC55S69 device and copy the `hello_ns` and `hello_s` examples into your workspace.
</details>

<details>
<summary>Which project should I open to start building and debugging?</summary>
In the IDE, choose **Project -> Open Project** and select the **hello_world_s** example. This secure project is the starting point for the build and debug flow.
</details>

<details>
<summary>Do I need both the secure and non-secure sub-projects in my workspace?</summary>
Yes. The TrustZone example consists of `hello_s` (secure) and `hello_ns` (non-secure), and both should be present in your workspace.
</details>

<details>
<summary>How do I explore security state switching and secure function calls during debug?</summary>
Start a debug session and step through execution instead of running to completion. The program counter begins at `main()` in `hello_world_s.c`, and the secure startup code has already executed at reset.
</details>
