Arm® TrustZone® Getting Started Application on SAM L11: Step 7

Step 6: Build, Program, and Observe the Outputs


Verify that the temperature sensor (I/O1 Xplained Pro Extension Kit) is connected to Extension Header 1 (EXT1) on the SAM L11 Xplained Pro Evaluation Kit.



The SAM L11 Xplained Pro Evaluation Kit allows using the Embedded Debugger (EDBG) for debugging. Connect the Type-A male to micro-B USB cable to the micro-B DEBUG USB port to power and debug the SAM L11 Xplained Pro Evaluation Kit.



Go to File > Project Properties(trustzone_sam_l11_xpro_NonSecure) and make sure that the EDBG is selected as the debugger under the Hardware Tools.



Clean and build your non-secure and secure applications by clicking on the Clean and Build button as shown below.



Program your application to the device by clicking on the Make and Program button as shown.


The lab will build and program successfully.


Now, open the Tera Term terminal application on your PC (from the Windows® Start menu by pressing the Start button). Select the Serial Port as shown.



Change the baud rate to 115200.



You will see the temperature values (in °F) being displayed on the terminal every 500 milliseconds, as shown.


Also, notice the LED0 blinking at a 500 millisecond rate.


You may vary the temperature by placing your finger on the temperature sensor (for a few seconds).



Press any character on the terminal to display the last five values written to the EEPROM.



Press the SW0 switch on the SAM L11 Xplained Pro Evaluation Kit to change the default sampling rate to one second.



Every subsequent pressing of the SW0 switch on the SAM L11 Xplained Pro Evaluation Kit changes the default sampling rate to two seconds, four seconds, 500 milliseconds, and back to one second in cyclic order as shown.


While the temperature sampling rate changes on every SW0 switch press, notice the LED0 toggling at the same sampling rate.


You observed that the non-secure application displayed the current room temperature values on the serial terminal every 500 milliseconds. You were able to change the temperature sampling values dynamically by pressing a user switch on the development kit in Secure mode. You could exercise sampling changes to one second, two seconds, four seconds, and cycle back to 500 milliseconds every time you pressed the user switch. Also, you observed that a user LED was toggled every time in Secure mode when the current temperature is displayed on the serial terminal in Non-Secure mode. You also observed that the secure application retrieved the last five stored temperature values from EEPROM when the non-secure application reads a character entered on the serial terminal, and the non-secure application printed (on the serial terminal) the last five stored temperature values.


You have successfully created your first Arm® TrustZone® application using MPLAB® Harmony v3 on a SAM L11 microcontroller. Your application used all the fundamental elements that go into building a real-time TrustZone application. Your secure application successfully read temperature sensor values and your non-secure application displayed them periodically over a serial terminal on a PC. The secure application stored the temperature values into an EEPROM and retrieved the last five values stored in EEPROM. The non-secure application displayed the last five values stored in EEPROM on the serial terminal when a user requested (by entering a character on the serial terminal). The secure application also took user input by pressing a switch on the development board.

In this application, you used MPLAB Harmony Configurator (MHC) to configure the SAM L11 and also used the MPLAB Harmony v3 Framework. You used the clock configurator to set up the CPU clock and timer (Real-Time Clock (RTC)) clock. You configured SERCOM1 (as I²C), RTC, and External Interrupt Controller (EIC) Peripheral Libraries (PLIBs) in Secure mode and SERCOM0 (as Universal Synchronous Asynchronous Receiver Transmitter (USART)) in Non-Secure mode. You also configured the Direct Memory Access (DMA) in Non-Secure mode using the DMA configurator. You used the pin configurator to set up the pins for LED and switch functions in Secure mode. You successfully configured the memory regions as Secure and Non-secure memories using MHC.

In this application, you created a secure application to read the temperature sensor raw data and calculated the temperature values. Also, the secure application transferred the calculated temperature values to the non-secure application when requesed. By doing this, you can secure the sensitive information, like sensor calibration data and conversion process from the non-secure application.


This tutorial provided you with training for configuring and using all the fundamental components needed to build a real-time TrustZone application on a SAM L11 microcontroller with MPLAB Harmony v3 Framework. As a next step, you may customize this application and reconfigure some of the components used in this tutorial. You could also add new components (PLIBs, etc.) to enhance this application to realize your end application.

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.