1.2.1.4. Running and Testing Keystone on QEMU
1.2.1.4.1. Launching Keystone in QEMU
The following command will run QEMU, starting execution from the emulated silicon root of trust. The root of trust then jumps to the SM, and the SM boots Linux!
make run
Login as root
with the password sifive
.
You can exit QEMU by ctrl-a``+``x
or using poweroff
command
Note
Note that the launch scripts for QEMU will start ssh on a forwarded localhost port. The script will print what port it has forwarded ssh to on start.
Start the Keystone driver by running the following command in the QEMU guest:
modprobe keystone-driver
Then find the included files (i.e. enclave applications) in /usr/share/keystone/examples
.
To launch an enclave application, just execute it:
/usr/share/keystone/examples/hello.ke
1.2.1.4.2. Debugging Keystone in QEMU
To debug a Keystone build with GDB, run the following command to start QEMU in debug mode:
KEYSTONE_DEBUG=y make run
Then, in another terminal, run the following command to connect to the GDB server:
make debug-connect
This will connect to the GDB server running in QEMU. You can then use GDB as normal to debug the
Keystone build. In addition to the normal GDB commands, the following Keystone-specific commands
are available after running source scripts/gdb/pmp.py
(in GDB):
pmp-clear
: Clear the PMP CSRspmp-dump
: Show the current state of the PMP CSRs