Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Getting started with Morello Development Tools
  • 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

Tags
  • Arm Development Studio
  • Morello
  • Processor Architecture
  • Fixed Virtual Platforms (FVPs)
  • Software Development Tools
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Getting started with Morello Development Tools

Ronan Synnott
Ronan Synnott
October 29, 2020
6 minute read time.

Arm is leading a research program called Morello, part of a multi-million-pound, government-funded UKRI Digital Security by Design (DSbD) program.

Now we are sharing our progress and are supporting the research effort by providing a freely available suite of development tools to build and run applications that make use of this technology. The tools consist of these components:

Arm Development Studio Morello Edition

This is a special edition of the popular Arm Development Studio IDE, customized to work exclusively with the Morello Platform Model. It provides additional functionality to provide debug support for the Morello architecture.

Morello Platform Model

Built from Arm Fast Model technology, the Morello Platform model is a Fixed Virtual Platform (FVP) model capable of executing the complete Morello instruction set, and modeling system behavior.

CHERI LLVM Compiler with Morello support

Morello is supported by LLVM toolchains for Android, Linux, and bare-metal that are based on the CHERI Clang/LLVM toolchain from the University of Cambridge. A GNU toolchain with Morello support is also under development.

Morello Instruction Emulator

This tool can add (emulation of) Morello hardware support to present day Arm Linux platforms, to execute user space Morello applications (built with the AArch64 Linux LLVM/Clang toolchain).

Get started with Arm Development Studio Morello Edition

In this article, I explain how to set up Development Studio to work successfully together with the LLVM compiler and Morello Platform Model FVP for bare-metal architecture exploration.

Download and install the components

You will find links to download each component installer from the Arm Developer website. Note that these tools are only available for Linux hosts (see documentation for specific host requirements). The installers provide easy to run install scripts prompting the user to specify install location. The components require no additional license setup. Though the install location is arbitrary, in the below, the tools are installed in /ds_morello, /compiler, and /fvp directories.

Integrate together

Built upon the Eclipse IDE, the Arm Development Studio IDE supports both debug and the project management functionality. It is recommended to integrate the LLVM compiler into the IDE to enable projects, such as the examples supplied with Development Studio Morello Edition to be easily rebuilt from inside the IDE.

Launch the IDE (/ds_morello/bin/armds_ide) and open the Preferences pane from the Window menu. Locate the Toolchains settings from the Arm DS section (there is a text filter box for convenience), and click the Add... button.

Add a new toolchain

Browse to the /bin directory of your LLVM compiler install, and click Next to register that toolchain with the IDE.

Add a new toolchain

The LLVM compiler will now be listed as an available toolchain.

Add a new toolchain

Click Apply and Close to finish. A restart of the IDE will be necessary to continue.

Rebuild an example

Arm Development Studio Morello Edition provides some bare-metal example projects to help you get started. They are also a good way to verify that everything is working together as expected.

To import the examples, either click the Import projects... shortcut in the Project Explorer pane, or locate Import... in the File menu.

Import example projects

Locate the Arm Development Studio examples, and click Next.

Import example projects

Select the appropriate example(s) and click Finish to import into your workspace.

Import example projects

Verify that the compiler has been installed correctly by rebuilding the bubblesort example with the hammer icon. You should see output similar to the below in the console pane.

Build console output

Debug the example

We can now run a simple debug session to verify that we can connect to the platform model, and run this example. As per instructions are provided in the readme file within the 'Morello bare metal debug' example project, the SCP boot firmware to be re-built appropriately so that the Rainier CPU is enabled, and waits in a 'branch to self' loop so that the debugger can subsequently connect.

The platform model should be launched specifying these firmware images and other parameters (also explained in the readme), and so it is recommended to launch the model from your terminal with a script similar to the following.

./fvp/models/Linux64_GCC-6.4/FVP_Morello \
-a Morello_Top.css.scp.armcortexm7ct=./path_to/scp_romfw.elf \
-a Morello_Top.css.mcp.armcortexm7ct=./path_to/mcp_romfw.elf \
-C Morello_Top.soc.scp_qspi_loader.fname=./path_to/scp_fw.bin \
-C css.scp.armcortexm7ct.INITVTOR=0x0 \
-C css.mcp.armcortexm7ct.INITVTOR=0x0 \
--data=./path_to/bts.bin@0x14000000 \
-C css.cluster0.cpu0.semihosting-heap_base=0 \
-C css.cluster0.cpu0.semihosting-heap_limit=0x80800000 \
-C css.cluster0.cpu0.semihosting-stack_limit=0x80800000 \
-C css.cluster0.cpu0.semihosting-stack_base=0x81000000 \
--cadi-server --run --plugin=./fvp/plugins/Linux64_GCC-6.4/MTS.so

(The MTS.so plugin is needed to provide trace functionality in the debugger. This plugin slows the execution performance of the model, and so if this functionality is not needed, you may wish not to specify this option).

The model will start, and after a few seconds will display a status view same as following, as well as the output of the boot firmware on the (simulated) UARTs.

Morello FVP

And the terminal shall report that the model is ready.

Info: Morello_Top: CADI Debug Server started for ARM Models...

Back in the IDE, you can now connect the debugger to the platform model, and load the code. In the Debug Control pane, click the Connect with an existing Config... shortcut (also available in the pane menu).

Connect with an existing debug config

And select the bubblesort_FVP example imported earlier.

Connect with an existing debug config

The debugger will connect to the model, load the bubblesort application, and run to the main() function. You are now ready to start exploring the Morello architecture, and the Arm Debugger.

Morello specific features

While much of the look and feel of the Morello Edition of Arm Development Studio is common to the standard editions, there are some additional features to support new functionality of Morello program. Full disassembly support of new instructions is supported in both disassembly and trace panes. Register view has been extended to include the capability registers, and the command line interface has been extended as appropriate.

Arm Development Studio Morello Edition

Play this video

Tools available now

The tools described in this article are available to download from Arm Developer now. Full documentation, including a thorough getting started guide are available. We will nurture a self-supporting community based around the Morello developer forum. We encourage you to download and try these tools out for yourself.

Download Morello tools now

Anonymous
Tools, Software and IDEs blog
  • GCC 15: Continuously Improving

    Tamar Christina
    Tamar Christina
    GCC 15 brings major Arm optimizations: enhanced vectorization, FP8 support, Neoverse tuning, and 3–5% performance gains on SPEC CPU 2017.
    • June 26, 2025
  • GitHub and Arm are transforming development on Windows for developers

    Pareena Verma
    Pareena Verma
    Develop, test, and deploy natively on Windows on Arm with GitHub-hosted Arm runners—faster CI/CD, AI tooling, and full dev stack, no emulation needed.
    • May 20, 2025
  • What is new in LLVM 20?

    Volodymyr Turanskyy
    Volodymyr Turanskyy
    Discover what's new in LLVM 20, including Armv9.6-A support, SVE2.1 features, and key performance and code generation improvements.
    • April 29, 2025