Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Open Source Software and Platforms
Open Source Software and Platforms
Wiki TF-M Musca Demo
  • Help
  • Jump...
  • Cancel
  • About this wiki
  • Supported platforms
  • Obtaining support
  • +Arm Reference Platforms deliverables
  • +A-class platforms
  • -M-class platforms
    • -IoT Subsystems
      • Corstone-300 Platforms
      • +Beetle development board
      • -Musca development boards
        • Musca Platforms Links & Resources
        • -Musca-A development board
          • Musca-A Links and Resources
          • Musca-A Frequently Asked Questions
          • Musca-A Power Rail Information
          • Drag & Drop issues on Musca-A boards
          • Musca-A Firmware update & QSPI / Boot recovery
          • Keil Support for Musca-A
          • -Musca-A Software Examples
            • TF-M Musca Demo
            • TF-M Musca Regression Test
            • Musca-A Secure/Non-secure Blinky example
            • Musca-A MHU Doorbell example
        • +Musca-B1 development board
        • +Musca-S1 development board
        • Configuring S/NS Memory in an Armv8-M System
  • +R-class platforms
  • +FPGA prototyping boards
  • +Open source software

TF-M Musca Demo

This example is based on Trusted Firmware-M project's 'Default Configuration'.  It is supplied by the Keil Musca TF-M Middleware pack v1.0.1 and requires the Keil Musca BSP version 2.0.0. Note: This example is not available in later versions of the Trusted Firmware-M pack.

The example provides a bare minimum demonstration of TF-M.  It:

  • Initializing the secure domain starting the secure services
    • Prints a welcome message to UART1
  • Control passes to the non-secure domain
    • Initialises domain
    • Fires up a single RTX thread and goes to idle state.

The example consist of 4 projects. Two projects provide the secure and the non-secure images to be run on the board.
Two other projects provide secure services libraries (Audit Log, Secure Storage) utilised by the Secure image.

In order to build or load a project it needs to be set as the active project in Keil.


To compile this example correctly the secure services needs to be compiled first as libraries, then the secure project as a binary,  finally the non-secure.
As a result of the secure build an object file with the veneers is generated which is then linked to the non-secure image.

To run the example on the Musca board you need to load both the secure and non-secure images onto the board.
From the 2 relevant projects just click on the Load icon to load the image. It does not matter which image is loaded first.

On UART1 serial port (connected in USB port) at 115200 baudrate (8N1) the following welcome message should be seen: "[Sec Thread] Secure image initializing!"

  • Share
  • History
  • More
  • Cancel
Related
Recommended