Hi everyone,
I am starting my project in Morello Board. I am using FVP and have followed all the steps to get morello-sdk in this guide: https://git.morello-project.org/morello/morello-sdk#build-a-hello-world-application-using-morello-sdk-development-kit. the problem I have is when I run the program using Qemu, I get this error: qemu: uncaught target signal 4 (Illegal instruction) - core dumpedIllegal instruction (core dumped)Can you please help to find a way to solve this issue?
Thanks in advance.
I suspect that you are trying to run the binary directly on your host (or rather in the Docker). Since (I'm assuming) you've got an x86 host, and the binary is arm64, qemu-user will be invoked if you try to run it. This version of QEMU doesn't support Morello though, so you will get a SIGILL (illegal instruction) on the first Morello instruction.
In any case any binary that is built with the SDK is meant to be run on Morello FVP (or HW). You will want to have a look at this to set up FVP and file sharing to run the binary you built on FVP:
linux.morello-project.org/.../
Thank you very much Kevin, That is really helpful, I highly appreciate you help. Another and hopefully last thing please: I receive this message: "mount: /morello/shared_folder: special device FM does not exist"when I tried to mount the shared folder using this command:
mount -t 9p -o trans=virtio,version=9p2000.L FM /morello/shared_folder
To use 9P (Plan 9 protocol), both the FVP system and the software stack must support 9P.
I don't know if the Morello FVP supports 9P but the -l tells below (meaning it contains the VirtioP9Device component in the system), hopefully, it's supported.
$ FVP_Morello -C disable_visualisation=1 -l | grep virtio_9p board.virtio_p9.mount_tag=FM # (string, init-time) default = 'FM' : mount tag board.virtio_p9.quiet=0 # (bool , init-time) default = '0' : Don't print warnings on malformed commands/descriptors board.virtio_p9.root_path= # (string, init-time) default = '' : root directory path board.virtio_p9.secure_accesses=0 # (bool , init-time) default = '0' : Make device generate transactions with NS=0
For software stack, if it's Linux, the following kernel configs should usually be defined to enable 9P.
CONFIG_NET_9P=y CONFIG_NET_9P_VIRTIO=y CONFIG_NET_9P_DEBUG=y
mount: /somewhere: special device FM does not exist.
The error above usually means that the model was not started with the 9p root_path i.e. -C board.virtio_p9.root_path=/somewhere . For your case, it should be -C board.virtio_p9.root_path=/morello/shared_folder . BTW, the permission of this directory may matter so you may need to set the directory to 0777 permission.
$ mkdir /morello/shared_folder $ chmod 0777 /morello/shared_folder
FYI, the details about the VirtioP9Device component can be found at:
developer.arm.com/.../VirtioP9Device
Kind regards,
Toshi
Thank you Toshihisa, great and helpful