Firmware Path Error when trying to --run-fvp-morello-purecap CheriBSD

Hi,

I am trying to run CheriBSD on Morello FVP. I am using Ubuntu 18.04 and the latest version of cmake. When I try to run "./cheribuild.py run-fvp-morello-purecap" I am receiving the error "Fatal error (in target run-fvp-morello-purecap): Firmware path /home/oliver/cheri/output/morello-sdk/firmware/morello-fvp is invalid, set the --run-fvp-morello-purecap/firmware-path config option!".

I'm unsure how to solve this, could I please be advised how to set the config option if that's what I need to do?

Many thanks.

  • Did you already run that with -d? Without -d (--include-dependencies) it won't have done any of the pre-requisite steps, like build CheriBSD, install the FVP and download the FVP firmware. That error's printed when the FVP firmware isn't present at the expected path.

  • Hi Jessica, thanks for your reply. I have tried this to install the FVP and dependencies using -d, however that gave me this error:

    "Fatal error (in target gmp-morello-hybrid-for-purecap-rootfs): Command `hg --noninteractive --config ui.merge=diff3 --config 'merge-tools.diff3.args=$local $base $other -m > $output' clone https://gmplib.org/repo/gmp /home/oliver/cheri/gmp` failed with non-zero exit code 2. Working directory was /
    Standard error was:
    [Errno 2] No such file or directory: 'hg': 'hg' "

    When I then attempted to run again without -d, I again received the previous error about the firmware-path config option.

    I'm not sure how much it matters, but it appears bmake is being denied permission for some activities. Also, it seems to find an installed copy of the FVP, stating "Morello FVP version detected as (0, 11, 27)
    Expected FVP version 0.11.27 is already installed. Run with --clean to reinstall."

    I hope this extra info helps discern the problem.

  • Hi Jessica, thanks for your reply. I have tried this to install the FVP and dependencies using -d, however that gave me this error:

    "Fatal error (in target gmp-morello-hybrid-for-purecap-rootfs): Command `hg --noninteractive --config ui.merge=diff3 --config 'merge-tools.diff3.args=$local $base $other -m > $output' clone https://gmplib.org/repo/gmp /home/oliver/cheri/gmp` failed with non-zero exit code 2. Working directory was /
    Standard error was:
    [Errno 2] No such file or directory: 'hg': 'hg' "

    Install Mercurial; the newer version of GDB we're using requires GMP, for which the official upstream is a Mercurial repository.

    When I then attempted to run again without -d, I again received the previous error about the firmware-path config option.

    That's expected, the morello-firmware target ends up being attempted after GMP and GDB so you still won't yet have installed it.

    I'm not sure how much it matters, but it appears bmake is being denied permission for some activities.

    Those are known and harmless.

    Also, it seems to find an installed copy of the FVP, stating "Morello FVP version detected as (0, 11, 27)
    Expected FVP version 0.11.27 is already installed. Run with --clean to reinstall."

    That's expected, the first thing it'll do is try to install the FVP, but it sees the expected version is already installed so skips it and prints an informational message. There's no need to reinstall, it's just telling you how to force it if you really want to. Note that the FVP and the firmware for the FVP are entirely separate, so having the FVP installed says nothing about whether you have firmware for it installed.

    Out of interest, is there a reason you're choosing to use the FVP? We have a Morello port in our QEMU which is significantly faster and nicer to use, at the expense of not being so closely aligned with the Morello board/SoC, only the instruction set. For most things this doesn't matter, it's only important if you're writing an operating system to run on a Morello board and want to test it in an emulator. If you want to use QEMU instead then use run-morello-purecap without the -fvp in there, though the FVP should work and does have value thanks to its board-level emulation and being the official emulator from Arm.