| # 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 |