What is the Morello Platform Model?
The Morello Platform Model is an open access Fixed Virtual Platform (FVP) development platform, aligned with the development board, and is available to download from Arm's Ecosystem FVP Developer page.
FVPs use Arm technology to create a virtual model of the system hardware that can be run as an executable in a development environment. They use binary translation technology to deliver functional simulations of Arm-based systems, including processor, memory, and peripherals. They implement a programmer's view suitable for software development and enable execution of full software stacks, providing a widely available platform ahead of silicon.
See here to get started using the Morello Platform Model.
What examples are available?
Arm Development Studio Morello Edition ships with an example project that can be run on the Morello Platform Model.
See here to get started using Arm Development Studio Morello Edition.
How can I compile code for Morello?
Morello is supported by the following open source LLVM-based toolchains based on the CHERI Clang/LLVM toolchain from the University of Cambridge. Please note that these are experimental toolchains and as such some features may not yet be available or fully functional.
The following compiler flags should be used to enable Morello code generation:
For more information, see the LLVM compiler with Morello support user guide here.
Where can I download the firmware and software stack for the Morello Platform Model?
A reference open source software stack is available comprising:
See here to get started downloading, building, and running this reference open source software stack on the Morello Platform Model.
A Linux distribution is also available here.
What can I do with the Morello reference software stack?
Please be aware that Morello is still in the early stages of development, and as such there are limitations on the kind of applications that can be developed.
For full details of the current limitations, please refer to the README files in the Morello reference software stack git repository.
Where can I get support?
You are welcome to ask questions and start discussions here on our Morello Community Forums.
How does the CHERI security architecture relate to Arm's existing TrustZone solutions?
Morello is not directly related to TrustZone; capabilities can be applied to Secure world or Normal world software stacks. For more information please see CUCLs intro to CHERI.
Do I need to pay for, or request access to, the Morello Platform Model?
No, the Morello Platform Model is free of charge and available to download from Arm's Ecosystem FVP Developer page.
How and when can I get a Morello development board?
Morello development boards are only be available to a select list of industry partners and universities, as decided by the UK Research and Innovation (UKRI). They are not available for general sale but can be requested directly from DSBD here.
Which Arm architectural states support Morello?
Morello extends the Armv8.2-A Architecture, and is only available in AArch64 state (no support for AArch32). Further, Morello mandates only little-endian data accesses.
Which Arm ISA does Morello use?
Morello extends the A64 ISA, adding instructions to manipulate and use capabilities to a limited extent. Morello also introduces a variant of the A64 ISA, C64, providing a richer set of instructions to manipulate and use capabilities.
Server mode and Client mode
The Morello Dynamic Memory Controller can operate in two configurations: Client and server mode with Server mode being the default option. Memory tags are always enabled in both modes.
In server mode, Capability tag bits are carried in the DRAM Error Correction Code field with the ECC bits. The ECC is Calculated and consumed within the DMC-Bing differently than Client Mode.
In Client Mode, a tag cache is added between the DMC-Bing System interface and the rest of the DMC.
You can find more information in the Morello Technical Reference manual
How To Switch between client and Server Mode.
Server mode is the default DMC configuration so no changes are needed to use server mode.
To configure DMC-Bing client mode based on SCC configuration, the following registers need to be programmed with these values: