Testing using renode docs. Consists of how to install it and how to add new configuration to test BSP using renode.
--- user/testing/index.rst | 1 + user/testing/renode.rst | 84 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 user/testing/renode.rst diff --git a/user/testing/index.rst b/user/testing/index.rst index 3d36fab..75e22a3 100644 --- a/user/testing/index.rst +++ b/user/testing/index.rst @@ -48,3 +48,4 @@ extension. simulation gdb-jtag tftp + renode diff --git a/user/testing/renode.rst b/user/testing/renode.rst new file mode 100644 index 0000000..72b1946 --- /dev/null +++ b/user/testing/renode.rst @@ -0,0 +1,84 @@ +Testing Using Renode +-------------------- + +`Renode <https://renode.io>`_ is one of the simulators supported for testing +BSPs using rtems-test. Currently, two BSPs are supported +for testing via Renode: RISCV Kendryte K210 and SPARC Leon3. To use it, +the host computer needs to have the necessary dependencies installed. + +1. Mono + Renode requires Mono >= 5.20 (Linux, macOS) or .NET >= 4.7 (Windows). + + .. csv-table:: + :delim: | + + **Linux** | Install the ``mono-complete`` package as per the installation instructions for various Linux distributions, which can be found on `the Mono project website <https://www.mono-project.com/download/stable/#download-lin>`_. + **macOS** | On macOS, the Mono package can be downloaded directly from `the Mono project website <https://download.mono-project.com/archive/mdk-latest-stable.pkg>`_. + **Windows** | On Windows 7, download and install `.NET Framework 4.7 <https://www.microsoft.com/net/download/dotnet-framework-runtime>`_. Windows 10 ships with .NET by default, so no action is required. + +2. Other dependencies (Linux only) + On Ubuntu 20.04, you can install the remaining dependencies with the following command:: + + $ sudo apt-get install policykit-1 libgtk2.0-0 screen uml-utilities gtk-sharp2 libc6-dev gcc python3 python3-pip + + If you are running a different distribution, you will need to install an analogous list of packages using your package manager; note that the package names may differ slightly. + +Installing Renode +^^^^^^^^^^^^^^^^^ + +All the dependencies are installed, you can go install Renode using the RTEMS Source Builder (the RSB). +First, ``cd`` into the place where you put your RSB directory. Then you install Renode as follows:: + +$ cd source-builder +$ ../source-builder/sb-set-builder --prefix=$YOUR_PREFIX --trace --bset-tar-file renode + +Adding New BSP Test Config +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The implementation of Renode testing in ``rtems-test`` can be found in the rtems-tools repository +at ``tester/rtems/renode`` folder. This folder contains all the ``resc`` scripts used to configure +BSP testing with Renode. To add a new test configuration, you first need to check if the BSP is +supported by Renode. You can do this by visiting `Renode's page that lists all supported boards +<https://renode.readthedocs.io/en/latest/introduction/supported-boards.html>`_. + +If the board is listed there, you'll likely find an example ``resc`` script for a simple +testing configuration for the BSP in `Renode's GitHub repository +<https://github.com/renode/renode/tree/master/scripts/single-node>`_. You can then copy the +configuration to a new resc file in ``tester/rtems/renode``. The additional configuration that +you need to add for it to work is the following:: + + showAnalyzer "uartAnalyzer" uart Antmicro.Renode.Analyzers.LoggingUartAnalyzer + uartAnalyzer TimestampFormat None + + set report_repeating_line """ + from Antmicro.Renode.Logging import ConsoleBackend + ConsoleBackend.Instance.ReportRepeatingLines = True + """ + + set add_hook """ + def my_match(line): + ok_to_kill_lines = [ + '*** TEST STATE: USER_INPUT', + '*** TEST STATE: BENCHMARK', + '*** END OF TEST ', + '*** FATAL ***' + ] + return any(l in line for l in ok_to_kill_lines) + + def my_hook(line): + print line + monitor.Parse("q") + + Antmicro.Renode.Hooks.UartHooksExtensions.AddLineHook(monitor.Machine["sysbus.uart"], my_match, my_hook) + """ + + python $add_hook + + python $report_repeating_line + +You need to add the above script configuration just before the ELF is loaded. In many cases, +this is before the ``sysbus LoadELF`` line. The additional configuration is used to terminate the +test according to the configuration of ``rtems-test`` and to map the test output to stdout. + +The next step is to delete the ``$bin`` variable definition from the example script. +This is because the ``$bin`` variable will be supplied via the ``renode.cfg`` file as the test binary. -- 2.34.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel