blob: 8ff9d7acca91b8dd12de7a4555bc8f107bc917d8 [file] [log] [blame] [view]
# Running Renode
Tips for running Renode
## Automatically Start Renode Script
To streamline firing-up renode, use the `-e` flag to execute onload:
```
renode "i @sim/config/shodan.resc; start"
```
This will start the renode script (resc) automatically.
Make sure to follow with `"i @path/to/file.resc; start` where the path starts
after `$ROOTDIR` (don't include the `$ROOTDIR` in the path).
## Using Headless Mode
To utilize without the pop-up renode consoles, utilize two flags:
1. `--disable-xwt` -- to prevent the windows from opening
2. `--port 1234` -- or port of choice for prompt access
This can be combined with the `-e` flag:
```
renode --disable-xwt --port 1234 -e "i @sim/config/shodan.resc; start"
```
In a separate terminal window (or tmux pane), start a telnet at that port for
prompt access:
```
telnet 127.0.0.1 1234
```
Using this should create the following prompt:
```
$ telnet 127.0.0.1 1234
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Renode, version 1.12.0.15824 (acb8f5b5-202201050847)
(monitor) i @sim/config/shodan.resc
(machine-0) start
Starting emulation...
(machine-0)
```
## Quitting Headless Renode Session
To quit the session, just type `quit` into the telnet prompt:
```
(machine-0) quit
Renode is quitting
Connection closed by foreign host.
```
This will quickly exit both telnet and the renode process on this port.
## Opcode statistics and trace
Renode allows the user to collect opcode statistics during execution.
The function is defined [here](https://github.com/renode/renode-infrastructure/blob/master/src/Emulator/Cores/RiscV/RiscvOpcodesParser.cs).
Some typical usages:
* `cpu EnableRiscvOpcodesCounting`: with no parameters -- it'll take
instruction set extensions for the CPU as defined in the repl file and
enable opcodes counting for all of them
* It is enabled by default in `sim/config/springbok.resc`.
* "cpu" can be changed to the cpu variable with the stats enabled. For
example, in `sim/config/springbok.resc` it is `sysbus.cpu2`.
* `cpu EnableRiscvOpcodesCountingFromEmbeddedResource <extension>`: Using the
riscv-opcodes files embedded into Renode. The list of available resources
can be retrieved with:
```bash
cpu GetRiscvOpcodesEmbeddedResourceNames
```
* `cpu GetAllOpcodesCounters`: Return a nicely formatted table to be printed
out in Renode.
* `cpu SaveAllOpcodesCounters @path/to/file`: Dump counter data to a file.
* `cpu ResetOpcodesCounters`: Reset all counters to 0