27–28 Sept 2022
DESY
Europe/Berlin timezone

Split Boot - True network-based booting on heterogeneous MPSoCs

28 Sept 2022, 15:45
15m
CFEL SR III (DESY)

CFEL SR III

DESY

Building 99, Notkestraße 85, 22607 Hamburg

Speaker

Marvin Fuchs (KIT)

Description

In the context of the High-Luminosity (HL) upgrade of the LHC, many custom ATCA electronics boards are being designed containing heterogeneous system-on-chip (SoC) devices, more specifically the Xilinx Zynq UltraScale+ (ZUS+) family. While the application varies greatly, these devices are regularly used for performing board management tasks, making them a fundamental element in the correct operation of the board. The large number of hundreds of SoC devices planned for the HL upgrade in 2027 creates significant challenges in their firmware deployment, maintenance, and accessibility.

Even though U-Boot on ZUS+ devices supports network boot through the preboot execution environment (PXE), the standard ZUS+ boot process contains application-specific information at earlier boot steps, particularly within the first stage boot loader (FSBL). This prevents the initialization of several devices from a universal image.

Inspired by the PXE boot, a novel boot method tailored to the specific needs of the ZUS+ is proposed. All application-specific ZUS+ configuration is moved to a network storage and automatically fetched during the boot process. Initially, the ZUS+ loads a partial configuration file that is stored locally and does not contain any application-specific information. Afterwards, it retrieves and applies the complete device configuration from the network.

For seamless integration, the entire process is considered, from firmware and software development to binary distribution in a large-scale system. As a result, the proposal consists of a mechanism for applying the device configuration and a highly automated framework for creating the necessary files that integrates with the standard Xilinx development toolset workflow.

Primary authors

Presentation materials