Expanding Renode platform coverage with the U-Boot dashboard
Topics: Open source tools, Open OS
With the rapid uptick in the adoption of our Renode open source embedded system simulation framework in areas like automotive and space, Antmicro has been steadily expanding support for new hardware targets, most recently with the addition of ARM Cortex-R5 and Cortex-R8.
The breadth of Renode’s coverage of the hardware landscape is illustrated well by the Renode Zephyr Dashboard, an ever-expanding CI system which uses the structured devicetree data from Zephyr RTOS and runs automated test scenarios in Renode, displaying the targets supported in the framework at any given time (over 300 at the moment of writing).
Not everything runs an RTOS however, and for many higher-end platforms like Cortex-A, the combination of U-Boot and Linux is a more typical choice. Given that U-Boot, alongside Linux, in fact pioneered the structuring of platform-related data using devicetree hardware description concepts which the Zephyr dashboard relies on, it was a logical consequence for Antmicro to create an analogous Renode U-Boot Dashboard, currently containing over 800 build targets, with 165 already passing our tests, showing the multi-core, multi-OS capabilities of the simulation framework. With U-Boot’s support of an extensive range of architectures (including ARM and RISC-V), platforms, and filesystems it constitutes an excellent payload to test Renode against many platforms in an uniform way, and the data it provides can be used to increase our understanding of the hardware ecosystem and the relationships between different boards and SoCs.
Platform description generation
Thanks to U-Boot’s use of device trees to describe platforms, the new dashboard can take advantage of Antmicro’s dts2repl tool for generating Renode platform description files in REPL format. Dts2repl relies on the so-called
compat strings used in device trees to identify devices and select matching drivers. Although these settings are not an exact match between Zephyr and U-Boot, there is enough similarity to enable reuse of the same infrastructure for both, extending and generalizing dts2repl in the process. At the same time, taking a broader perspective of device tree usage across multiple projects, we were able to contribute multiple changes to Zephyr, improving the quality of DTS descriptions.
The platforms generated with the tool are then simulated in Renode and used to run U-Boot on the simulated hardware and execute a simple command to test whether the bootloader reacts to user input as intended.
U-Boot Dashboard features
Like in the case of its Zephyr-based counterpart, the Renode U-Boot Dashboard lets you organize the available boot targets by ISA and easily browse them in collapsible categories.
The dashboard displays the versions of Renode and U-Boot used; we’re working on hosting multiple versions of the dashboard dynamically generated from build artifacts. The boards are displayed in the dashboard with color-coded status badges indicating one of four possible statuses:
NOT BUILT- the board’s binary was not built (e.g. requires additional toolchains)
BUILT- the board’s binary was successfully built but a Renode platform file could not be generated based on its devicetree file
GENERATED- a binary was generated and a Renode platform file was created but the test did not pass
PASSED- a binary and a platform description file were successfully generated, and the test passed.
For each of the boards that passes the test successfully, users can click a play button to open an asciinema player instance that displays a session containing recorded output of a selected board’s UART. Below you can see an example of UART output for the RISC-V based SiFive HiFive Unleashed board.
Expanding Renode and Renodepedia with U-Boot targets
Tracking Renode’s coverage of Zephyr, U-Boot as well as, prospectively, other bootloaders and operating systems illustrates the simulation framework’s capabilities for simulating more complex, multi-platform systems that marry diverse architectures and multi-OS configurations, e.g. with ZephyrRTOS on real-time cores and U-Boot booting Linux on a high performance board powered by a heterogeneous SoC.
With the U-Boot Renode Dashboard now released and steadily expanding, an effort to integrate the resource with Renodepedia is now also underway at Antmicro. Renodepedia is an easily navigable, interconnected database of boards, SoCs, sensors, and other hardware blocks, categorizable by vendor. You can read about the database in more detail in the blog note announcing its release. Thus, the dashboard is not just a giant CI test of Renode and U-Boot or a demonstrator of the simulation framework’s power, but provides useful input to a knowledge base which helps connect all the dots of the hardware landscape.
End-to-end collaborative HW/SW co-development with Renode, U-Boot, and Zephyr
The Renode U-Boot Dashboard, along with the Renode Zephyr Dashboard, Renodepedia, as well as the recently released Visual System Designer, the Hardware Component Database, and numerous other projects are part of Antmicro’s endeavor to gather and unify the information about the vast landscape of available hardware and accelerate automation-driven, collaborative hardware/software co-design at every step of the way. The tools also grant embedded developers a means for quickly evaluating the capabilities offered by both existing hardware and platforms they are looking to develop.
If you would like discuss taking advantage of the development and testing capabilities unlocked by Renode for your project involving U-Boot, or you would like to add support for your boards in the simulation framework and/or Antmicro’s hardware catalog, feel free to contact us at firstname.lastname@example.org.