With each board running a mainline-first Linux software stack and tested in a CI loop with the LAVA test framework, the Farm showcased Collabora's recent hardware enablement and Continuous integration (CI) efforts.
|
|
Back in April, Collabora once again showcased at Embedded World 2024 in Nürnberg, Germany. Each year we bring a variety of interesting projects that we have recently worked on, including several devices that can be purchased off-the-shelf. For instance, the Bosch D-TECT wall scanner and the Atari VCS video game system which both run the Apertis Operating System. We also showed other off-the-shelf products that Collabora have supported the development including the Valve Steam Deck™ and the Bosch eBike system.
This blog post goes into more detail about one of the demos that I prepared: the Board Farm, which showcases Collabora's recent hardware enablement and Continuous Integration (CI) efforts.
Collabora's Board Farm at Embedded World 2024.
Collabora ensures the hardware that we enable is maintained in the various mainline open source projects, so that everyone in the community benefits from the changes. This effort is mostly the initial development, but also includes long-term maintenance: ensuring the software doesn't bitrot and continues to work in the future, long after the initial support is added. Of course, this is a huge undertaking and we are happy to support the free software community with these activities by contributing to projects such as KernelCI, MesaCI, and other community Continuous Integration projects where changes are automatically tested on real hardware in our testing lab to ensure regressions don't occur, reporting and fixing issues when they do happen. Please see my colleague Gustavo Padovan's blog post series where he describes our motivations around the work we are doing around open source project maintenance.
Devices Under Test
In this demo, we brought a cut-down version of our hardware lab to the show floor by using four off-the-shelf ARM64 development boards, with SoCs from different vendors, each with an LCD screen attached.
The devices under test used in this demo were:
Radxa NIO12L (MediaTek Genio 1200 SoC)
DEBIX Model A (i.MX8M Plus SoC)
OKdo/Radxa Rock 5B (Rockchip RK3588 SoC)
BeagleBone BeaglePlay (Texas Instruments AM625)
Each of the devices ran a mainline-first Linux software stack, continuously tested thanks to the LAVA automated test framework which was running on a separate computer, hidden away. Each of the development boards were connected to this computer: LAVA has control over the power of the device, the ability to choose which kernel and filesystems are booted on the device under test, all while watching for errors along the way.
Software Under Test
As I previously mentioned, Collabora has been working on enabling the development boards and SoCs used in this demo across the whole mainline open source software stack, the main components include:
The U-Boot bootloader is used to initially boot the device and start the Kernel (in this case, over the network).
The Linux kernel provides a uniform interface for user-space to access various hardware components, as well as managing operating system tasks such as scheduinging and memory management.
The Mesa 3D graphics library contains the graphics drivers as well as the graphics library which the user-space uses to transfer the 3D information to the GPU.
The Debian Universal Operating System ties everything together allowing us to have a stable base operating system. All of the user-space applications and libraries are provided by Debian.
The Debian images were built using debos, Collabora's tool for generating Operating System images.
vkmark was the Vulkan benchmarking suite used to exercise the GPUs and already described in a previous section above.
Test software
While showing the hardware is well supported in the mainline open source stack, we also wanted to showcase the software tools Collabora use for continuous integration and testing of Linux-based systems. These include:
The LAVA automated testing framework used to manage the test jobs on the devices. LAVA schedules test jobs, shares the underlying artifacts to the devices, collects test logs, stores in its database, and shows all of the above in a web UI.
pdudaemon used to control power to the devices, turning the power on and off. It communicates with a number of off-the-shelf power switches and abstracts their functionality in a common API.
boardswarm, experimental software from Collabora, used to abstract the connection to the development boards and make connecting to hardware easier (Spoiler: watch out for future blog posts on boardswarm!).
Since all of these components are free and open source software, we are free to modify the projects to support new hardware and suit the complicated testing requirements a project may have.
Joulescope™
Joulescope UI at Embedded World 2024.
We also used a Joulescope™ JS220 USB precision energy analyser, with its open source frontend, in our demo which allowed for energy measurements of one device under test.
Joulescope™ accurately and simultaneously measures the voltage and current supplied to the target device and then computes power and energy. For more information on Joulescope, see http://www.joulescope.com.
The purpose of using an energy monitor here was to understand how software changes may impact the overall energy usage of a device - which becomes ever more relevant with battery-powered devices.
The Joulescope™ multi-platform software is written in Python using the QT library and runs many major distributions. We successfully ran it on Debian by simply installing the software from the development repository.
The test job in this case is very simple: test the performance of the GPU using the vkmark Vulkan benchmarking suite. This suite shows various Vulkan scenes and measures the framerate. This can be used as a stress-test, to compare against different hardware, or as check to see if some regression has been introduced in your GPU driver. Full Story |