Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Arm Research
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Mobile blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Smart Homes
    • Tools, Software and IDEs blog
    • Works on Arm blog
    • 中文社区博客
  • Support
    • Open a support case
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
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 and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems 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

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

Click here to 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
  • New performance features and improvements in GCC 12

    Tamar Christina
    Tamar Christina
    Read about the new architecture and performance feature in GCC 12 for the Arm CPUs. From vectorization to instructions to optimize memory operations.
    • May 10, 2022
  • DPDK Optimization on Arm

    Joyce Kong
    Joyce Kong
    This blog summarizes Data Plane Development Kit (DPDK)'s techniques and the optimization experiences on Arm.
    • May 3, 2022
  • Product update: Arm Development Studio 2022.0 now available with support for Cortex-M85

    Ronan Synnott
    Ronan Synnott
    Arm Development Studio 2022.0 is now available, the first release to support Cortex-M85.
    • April 27, 2022