Merge branch 'next'

This commit is contained in:
Peter Korsgaard
2025-12-12 08:23:49 +01:00
337 changed files with 2957 additions and 2952 deletions

View File

@@ -1,6 +1,10 @@
# Arm A-Profile Base RevC AEM FVP config
bp.secure_memory=1
bp.terminal_1.start_telnet=0
bp.ve_sysregs.exit_on_shutdown=1
bp.virtio_net.enabled=1
bp.virtio_net.hostbridge.userNetworking=1
bp.vis.rate_limit-enable=1
cache_state_modelled=0
cluster0.NUM_CORES=4
cluster0.cpu0.enable_crc32=1

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 c0f23ccc71c49989e9ad238acf334473c17b7c88f79a20c829c3d443e3794a22 arm-trusted-firmware-v2.11-git4.tar.gz
sha256 a899100d9d92ceb1290fd4d61f5dd3b8af6b0e937cebc3c711cb514ac5acfaed arm-trusted-firmware-v2.14.0-git4.tar.gz

View File

@@ -1,2 +1,2 @@
# From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc
sha256 524858852f5869a9ef17de8b1e6e7faf05bcb2c462bc96b3c24dbf82ede373cf linux-6.10.12.tar.xz
# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc
sha256 9106a4605da9e31ff17659d958782b815f9591ab308d03b0ee21aad6c7dced4b linux-6.18.tar.xz

View File

@@ -0,0 +1,2 @@
# Locally calculated
sha256 464b3bf5bc4a61830357dbf81a0e5b89414d3bca1c2a752570cb0e40d2f1e637 optee-client-4.8.0.tar.gz

View File

@@ -0,0 +1,34 @@
From 1debd0c8bd46255f8c22b128ec16586ef9154869 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= <vincent.stehle@arm.com>
Date: Tue, 2 Dec 2025 15:53:23 +0100
Subject: [PATCH] plat-vexpress: redirect console to uart0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For consistency with TF-A, U-Boot and Linux.
Upstream: Not applicable. Buildroot specific.
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
---
core/arch/arm/plat-vexpress/platform_config.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/core/arch/arm/plat-vexpress/platform_config.h b/core/arch/arm/plat-vexpress/platform_config.h
index 9231f3048..76c7fdb36 100644
--- a/core/arch/arm/plat-vexpress/platform_config.h
+++ b/core/arch/arm/plat-vexpress/platform_config.h
@@ -23,8 +23,8 @@
#define IT_UART1 38
-#define CONSOLE_UART_BASE UART1_BASE
-#define IT_CONSOLE_UART IT_UART1
+#define CONSOLE_UART_BASE UART0_BASE
+#undef IT_CONSOLE_UART
#elif defined(PLATFORM_FLAVOR_juno)
--
2.51.0

View File

@@ -0,0 +1,2 @@
# Locally calculated
sha256 5222cd553f5edb69ae4ec7cb99b2bfec2c47a47c0be1865b49744701918e8b4d optee-os-4.8.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2
sha256 b4f032848e56cc8f213ad59f9132c084dbbb632bc29176d024e58220e0efdf4a u-boot-2025.10.tar.bz2

View File

@@ -2,7 +2,7 @@ Introduction
============
The arm_fvp_ebbr_defconfig is meant to illustrate some aspects of the Arm EBBR
specification[1] and the Arm SystemReady IR[2] compliance program.
specification[1] and the Arm SystemReady Devicetree band[2].
It allows building an AArch64 U-Boot based firmware implementing the subset of
UEFI defined by EBBR, as well as a Linux OS disk image booting with UEFI, to run
on the Arm A-Profile Base RevC AEM FVP.
@@ -26,8 +26,8 @@ Running on the FVP
Download the FVP from one of the following sources, corresponding to your host
computer:
- https://developer.arm.com/-/cdn-downloads/permalink/Fixed-Virtual-Platforms/FM-11.27/FVP_Base_RevC-2xAEMvA_11.27_19_Linux64.tgz
- https://developer.arm.com/-/cdn-downloads/permalink/Fixed-Virtual-Platforms/FM-11.27/FVP_Base_RevC-2xAEMvA_11.27_19_Linux64_armv8l.tgz
- https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_RevC-2xAEMvA_11.30_27_Linux64.tgz
- https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_RevC-2xAEMvA_11.30_27_Linux64_armv8l.tgz
The FVP will be located under one of the corresponding folders:
@@ -53,21 +53,58 @@ supporting the EBBR specification.
To run another OS on simulation using a live or pre-installed image, use the
same FVP command line as for the generated OS but adapt the OS image path in the
virtioblockdevice stanza.
The image generated by the aarch64_efi_defconfig or the Arm ACS-IR images[3] are
examples of pre-installed OS images.
Linux distributions such as Debian, Fedora, openSUSE or Ubuntu provide a
pre-installed OS image.
The image generated by the aarch64_efi_defconfig or the Arm ACS Devicetree
images[3] are examples of pre-installed OS images.
Linux distributions such as Debian, Fedora, openSUSE or Ubuntu, or FreeBSD
provide live or pre-installed OS image.
Firmware details
================
Noteworthy firmware features:
- TF-A, OP-TEE & U-Boot
- UEFI, with EFI variables stored on disk in the ESP
- Support for ethernet, RTC and LCD
Architecture diagram:
Non-Secure : Secure
:
+---------------------------+ :
EL0 | Busybox | :
+---------------------------+ : +--------+
EL1 | Linux | : | OP-TEE | S-EL1
+---------------------------+ : +--------+
EL2 | U-Boot, GRUB, Linux (kvm) | :
+---------------------------+ :
...................................:
+----------------------------------------+
| TF-A | EL3
+----------------------------------------+
Boot flow:
TF-A -+-> OP-TEE
`-> U-Boot -> GRUB -> Linux -> Busybox
TF-A BL1 loads the fit image with the remaining pieces of TF-A, OP-TEE and
U-Boot.
OP-TEE boots, calls back TF-A to go to normal world.
U-Boot loads GRUB with UEFI, boots Linux at EL2.
In this configuration, the Devicetree is static and fully contained in TF-A.
Miscellaneous
=============
This configuration is inspired by the arm_foundationv8_defconfig, the
qemu_aarch64_virt_defconfig and the Arm SystemReady IR IoT Integration, Test,
and Certification Guide[4].
qemu_aarch64_virt_defconfig and the Arm SystemReady Devicetree Band Integration
and Testing Guide[4].
Firmware update, MMC and network are currently not supported.
Firmware update, GOP, MMC and RNG are currently not supported.
[1]: https://github.com/ARM-software/ebbr
[2]: https://developer.arm.com/Architectures/Arm%20SystemReady%20IR
[3]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images
[4]: https://developer.arm.com/documentation/DUI1101/latest/
[1] https://github.com/ARM-software/ebbr
[2] https://www.arm.com/architecture/system-architectures/systemready-compliance-program/systemready-devicetree-band
[3] https://github.com/ARM-software/arm-systemready/tree/main/SystemReady-devicetree-band/prebuilt_images
[4] https://developer.arm.com/documentation/DUI1101/latest/

View File

@@ -1,4 +1,4 @@
# CONFIG_USE_BOOTCOMMAND is not set
CONFIG_ARM_SMCCC_FEATURES=y
CONFIG_BOOTCOMMAND="bootflow scan -lb"
CONFIG_BOOTMETH_DISTRO=y
CONFIG_BOOTM_EFI=y
@@ -17,8 +17,10 @@ CONFIG_CMD_EFI_VARIABLE_FILE_STORE=y
CONFIG_CMD_GETTIME=y
CONFIG_CMD_GPT=y
CONFIG_CMD_NVEDIT_EFI=y
CONFIG_CMD_POWEROFF=y
CONFIG_CMD_RNG=y
CONFIG_CMD_RTC=y
CONFIG_CMD_SMC=y
CONFIG_CMD_TIME=y
CONFIG_DM_RNG=y
CONFIG_DM_RTC=y
@@ -29,6 +31,7 @@ CONFIG_EFI_LOADER=y
CONFIG_EFI_LOADER_HII=y
CONFIG_EFI_MM_COMM_TEE=y
CONFIG_EFI_PARTITION=y
CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
CONFIG_EFI_SECURE_BOOT=y
CONFIG_EFI_SET_TIME=y
CONFIG_EFI_UNICODE_CAPITALIZATION=y

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 738f029c6bfcdac5649e2c252970b1f44c1ce7fee9fe4657a25edc666375ffa8 atf-lf-6.12.20-2.0.0.tar.gz
sha256 2d3f9c52e16766c290bdc0bc130d634e4c326a5b236dfb2f2ca3f0fa457e82d4 atf-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 c98177e85ace6400b06301101af3065e90463920c3e166da4ed22deffe960fb8 linux-lf-6.12.20-2.0.0.tar.gz
sha256 27a1987ca0a5802d3ebb296b8134ec66d813ad86cf2a60779b45092735bbb23b linux-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 a39f7db3ffd2b7263ea5d02b0631decac1c89f7c1b96b77ba8e302f3641a3eb3 u-boot-lf-6.12.20-2.0.0.tar.gz
sha256 2f25cde388b2f83ff7a8e3afe25aafb1db48dafb0fa3bf1e4f9fef603f3b4785 u-boot-lf-6.12.34-2.1.0.tar.gz

View File

@@ -11,7 +11,7 @@ For more details about the board and the QorIQ Layerscape SoC, see the following
Layerscape platforms are officially supported by NXP under the Layerscape
Debian Linux SDK (LDLSDK). This uses components from Linux Factory (project
common with i.MX), but has a slower release cadence than LF. The currently used
tag is lf-6.12.20-2.0.0, which is in line with the latest LF tag. Generally, in
tag is lf-6.12.34-2.1.0, which is in line with the latest LF tag. Generally, in
Buildroot, the latest Linux Factory release tag is always used, which may be
considered pre-release software, as it may contain features which are not yet
documented, and it generally undergoes less testing.
@@ -21,11 +21,11 @@ For the software Layerscape Debian Linux SDK User Guide, see:
- https://www.nxp.com/docs/en/user-guide/UG10143.pdf
The components from NXP are:
- rcw, lf-6.12.20-2.0.0
- atf (fork), lf-6.12.20-2.0.0
- uboot (fork), lf-6.12.20-2.0.0
- rcw, lf-6.12.34-2.1.0
- atf (fork), lf-6.12.34-2.1.0
- uboot (fork), lf-6.12.34-2.1.0
- cadence-dp-firmware (blob), 8.16
- linux (fork), lf-6.12.20-2.0.0
- linux (fork), lf-6.12.34-2.1.0
Build
=====

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 738f029c6bfcdac5649e2c252970b1f44c1ce7fee9fe4657a25edc666375ffa8 atf-lf-6.12.20-2.0.0.tar.gz
sha256 2d3f9c52e16766c290bdc0bc130d634e4c326a5b236dfb2f2ca3f0fa457e82d4 atf-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 c98177e85ace6400b06301101af3065e90463920c3e166da4ed22deffe960fb8 linux-lf-6.12.20-2.0.0.tar.gz
sha256 27a1987ca0a5802d3ebb296b8134ec66d813ad86cf2a60779b45092735bbb23b linux-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 a39f7db3ffd2b7263ea5d02b0631decac1c89f7c1b96b77ba8e302f3641a3eb3 u-boot-lf-6.12.20-2.0.0.tar.gz
sha256 2f25cde388b2f83ff7a8e3afe25aafb1db48dafb0fa3bf1e4f9fef603f3b4785 u-boot-lf-6.12.34-2.1.0.tar.gz

View File

@@ -11,7 +11,7 @@ for more details about the board and the QorIQ Layerscape SoC, see the following
Layerscape platforms are officially supported by NXP under the Layerscape
Debian Linux SDK (LDLSDK). This uses components from Linux Factory (project
common with i.MX), but has a slower release cadence than LF. The currently used
tag is lf-6.12.20-2.0.0, which is in line with the latest LF tag. Generally, in
tag is lf-6.12.34-2.1.0, which is in line with the latest LF tag. Generally, in
Buildroot, the latest Linux Factory release tag is always used, which may be
considered pre-release software, as it may contain features which are not yet
documented, and it generally undergoes less testing.
@@ -21,13 +21,13 @@ For the software Layerscape Debian Linux SDK User Guide, see:
- https://www.nxp.com/docs/en/user-guide/UG10143.pdf
The components from NXP are:
- rcw, lf-6.12.20-2.0.0
- atf (fork), lf-6.12.20-2.0.0
- uboot (fork), lf-6.12.20-2.0.0
- qoriq-fm-ucode (blob), lf-6.12.20-2.0.0
- linux (fork), lf-6.12.20-2.0.0
- fmlib, lf-6.12.20-2.0.0
- fmc, lf-6.12.20-2.0.0
- rcw, lf-6.12.34-2.1.0
- atf (fork), lf-6.12.34-2.1.0
- uboot (fork), lf-6.12.34-2.1.0
- qoriq-fm-ucode (blob), lf-6.12.34-2.1.0
- linux (fork), lf-6.12.34-2.1.0
- fmlib, lf-6.12.34-2.1.0
- fmc, lf-6.12.34-2.1.0
Build
=====

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 738f029c6bfcdac5649e2c252970b1f44c1ce7fee9fe4657a25edc666375ffa8 atf-lf-6.12.20-2.0.0.tar.gz
sha256 2d3f9c52e16766c290bdc0bc130d634e4c326a5b236dfb2f2ca3f0fa457e82d4 atf-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 c98177e85ace6400b06301101af3065e90463920c3e166da4ed22deffe960fb8 linux-lf-6.12.20-2.0.0.tar.gz
sha256 27a1987ca0a5802d3ebb296b8134ec66d813ad86cf2a60779b45092735bbb23b linux-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 a39f7db3ffd2b7263ea5d02b0631decac1c89f7c1b96b77ba8e302f3641a3eb3 u-boot-lf-6.12.20-2.0.0.tar.gz
sha256 2f25cde388b2f83ff7a8e3afe25aafb1db48dafb0fa3bf1e4f9fef603f3b4785 u-boot-lf-6.12.34-2.1.0.tar.gz

View File

@@ -12,7 +12,7 @@ For more details about the board and the QorIQ Layerscape SoC, see the following
Layerscape platforms are officially supported by NXP under the Layerscape
Debian Linux SDK (LDLSDK). This uses components from Linux Factory (project
common with i.MX), but has a slower release cadence than LF. The currently used
tag is lf-6.12.20-2.0.0, which is in line with the latest LF tag. Generally, in
tag is lf-6.12.34-2.1.0, which is in line with the latest LF tag. Generally, in
Buildroot, the latest Linux Factory release tag is always used, which may be
considered pre-release software, as it may contain features which are not yet
documented, and it generally undergoes less testing.
@@ -22,13 +22,13 @@ For the software Layerscape Debian Linux SDK User Guide, see:
- https://www.nxp.com/docs/en/user-guide/UG10143.pdf
The components from NXP are:
- rcw, lf-6.12.20-2.0.0
- atf (fork), lf-6.12.20-2.0.0
- uboot (fork), lf-6.12.20-2.0.0
- qoriq-fm-ucode (blob), lf-6.12.20-2.0.0
- linux (fork), lf-6.12.20-2.0.0
- fmlib, lf-6.12.20-2.0.0
- fmc, lf-6.12.20-2.0.0
- rcw, lf-6.12.34-2.1.0
- atf (fork), lf-6.12.34-2.1.0
- uboot (fork), lf-6.12.34-2.1.0
- qoriq-fm-ucode (blob), lf-6.12.34-2.1.0
- linux (fork), lf-6.12.34-2.1.0
- fmlib, lf-6.12.34-2.1.0
- fmc, lf-6.12.34-2.1.0
Build
=====

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 738f029c6bfcdac5649e2c252970b1f44c1ce7fee9fe4657a25edc666375ffa8 atf-lf-6.12.20-2.0.0.tar.gz
sha256 2d3f9c52e16766c290bdc0bc130d634e4c326a5b236dfb2f2ca3f0fa457e82d4 atf-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 c98177e85ace6400b06301101af3065e90463920c3e166da4ed22deffe960fb8 linux-lf-6.12.20-2.0.0.tar.gz
sha256 27a1987ca0a5802d3ebb296b8134ec66d813ad86cf2a60779b45092735bbb23b linux-lf-6.12.34-2.1.0.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally computed
sha256 a39f7db3ffd2b7263ea5d02b0631decac1c89f7c1b96b77ba8e302f3641a3eb3 u-boot-lf-6.12.20-2.0.0.tar.gz
sha256 2f25cde388b2f83ff7a8e3afe25aafb1db48dafb0fa3bf1e4f9fef603f3b4785 u-boot-lf-6.12.34-2.1.0.tar.gz

View File

@@ -11,7 +11,7 @@ for more details about the board and the QorIQ Layerscape SoC, see the following
Layerscape platforms are officially supported by NXP under the Layerscape
Debian Linux SDK (LDLSDK). This uses components from Linux Factory (project
common with i.MX), but has a slower release cadence than LF. The currently used
tag is lf-6.12.20-2.0.0, which is in line with the latest LF tag. Generally, in
tag is lf-6.12.34-2.1.0, which is in line with the latest LF tag. Generally, in
Buildroot, the latest Linux Factory release tag is always used, which may be
considered pre-release software, as it may contain features which are not yet
documented, and it generally undergoes less testing.
@@ -21,13 +21,13 @@ For the software Layerscape Debian Linux SDK User Guide, see:
- https://www.nxp.com/docs/en/user-guide/UG10143.pdf
The components from NXP are:
- rcw, lf-6.12.20-2.0.0
- atf (fork), lf-6.12.20-2.0.0
- uboot (fork), lf-6.12.20-2.0.0
- qoriq-fm-ucode (blob), lf-6.12.20-2.0.0
- linux (fork), lf-6.12.20-2.0.0
- fmlib, lf-6.12.20-2.0.0
- fmc, lf-6.12.20-2.0.0
- rcw, lf-6.12.34-2.1.0
- atf (fork), lf-6.12.34-2.1.0
- uboot (fork), lf-6.12.34-2.1.0
- qoriq-fm-ucode (blob), lf-6.12.34-2.1.0
- linux (fork), lf-6.12.34-2.1.0
- fmlib, lf-6.12.34-2.1.0
- fmc, lf-6.12.34-2.1.0
Build
=====

1
board/versal2/genimage.cfg Symbolic link
View File

@@ -0,0 +1 @@
../versal/genimage.cfg

1
board/versal2/post-build.sh Symbolic link
View File

@@ -0,0 +1 @@
../zynqmp/post-build.sh

29
board/versal2/post-image.sh Executable file
View File

@@ -0,0 +1,29 @@
#!/bin/sh
# By default U-Boot loads DTB from a file named "system.dtb", and
# with versal2, the Linux DTB is the same as the U-Boot DTB, so
# let's use a symlink since the DTB is the same.
ln -fs "${BINARIES_DIR}/u-boot.dtb" "${BINARIES_DIR}/system.dtb"
BOARD_DIR="$(dirname "$0")"
cat <<-__HEADER_EOF > "${BINARIES_DIR}/bootgen.bif"
the_ROM_image:
{
image {
{ type=bootimage, file=${BINARIES_DIR}/boot.pdi }
{ type=bootloader, file=${BINARIES_DIR}/plm.elf }
{ core=asu, file=${BINARIES_DIR}/asufw.elf }
}
image {
id = 0x1c000000, name=apu_subsystem
{ type=raw, load=0x01000000, file=${BINARIES_DIR}/u-boot.dtb }
{ core=a78-0, cluster=0, exception_level=el-3, trustzone, file=${BINARIES_DIR}/bl31.elf }
{ core=a78-0, cluster=0, exception_level=el-1, trustzone, load=0x1800000, file=${BINARIES_DIR}/tee-raw.bin }
{ core=a78-0, cluster=0, exception_level=el-2, file=${BINARIES_DIR}/u-boot.elf }
}
}
__HEADER_EOF
"${HOST_DIR}/bin/bootgen" -arch versal_2ve_2vm -image "${BINARIES_DIR}/bootgen.bif" -o "${BINARIES_DIR}/boot.bin" -w on
support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg"

182
board/versal2/readme.txt Normal file
View File

@@ -0,0 +1,182 @@
This document describes the Buildroot support for the following
Xilinx Versal Gen2 boards:
******************************************
Supported Versal Gen2 Boards:
Xilinx VEK385 board
******************************************
Evaluation board features can be found here with the links below.
VEK385:
https://www.amd.com/en/products/adaptive-socs-and-fpgas/evaluation-boards/vek385.html
How to build it
===============
Configure Buildroot:
$ make versal2_vek385_defconfig
Compile everything and build the rootfs image:
$ make
Result of the build
-------------------
After building, you should get a tree like this:
output/images/
+-- asufw.elf
+-- bl31.elf
+-- boot.bin
+-- bootgen.bif
+-- boot.pdi
+-- boot.vfat
+-- extlinux.conf
+-- Image
+-- plm.elf
+-- rootfs.ext2
+-- rootfs.ext4 -> rootfs.ext2
+-- sdcard.img
+-- system.dtb -> u-boot.dtb
+-- tee-raw.bin
+-- u-boot.dtb
`-- u-boot.elf
How to write the SD card
========================
WARNING! This will destroy all the card content. Use with care!
The sdcard.img file is a complete bootable image ready to be written
on the boot medium. To install it, simply copy the image to an SD
card:
# dd if=output/images/sdcard.img of=/dev/sdX
Where 'sdX' is the device node of the SD.
Eject the SD card, insert it in the board, and power it up.
Support for other boards:
=========================
If you want to build a system for other boards based on the same SoC, and the
board is already supported by the upstream kernel, U-Boot, and
xilinx-prebuilt, you simply need to change the following Buildroot options:
- U-Boot (BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="DEVICE_TREE=<dts file name>")
- xilinx-prebuilt (BR2_TARGET_XILINX_PREBUILT_BOARD)
Custom versal2 board support:
To generate a boot.bin image, Versal2 boards require a PDI (Programmable Device
Image) generated by Xilinx Vivado which contains all the hardware specific
boot information, such as clock, MIO and DDR initializations as well as any
customizations in the programmable logic. Since this PDI can only be generated
by Xilinx Vivado, Buildroot needs access to the prebuilt image. The Buildroot
xilinx-prebuilt package has support for Versal2 XSA files exported from Xilinx
Vivado.
Using the option BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA, Buildroot can obtain
the prebuilt PDI from the XSA file.
1) Start with a defconfig supported by Buildroot (e.g. VEK385)
make versal2_vek385_defconfig
2) make menuconfig
Visit the following menu and enable BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
Bootloaders --->
xilinx-prebuilt --->
[*] download a prebuilt Versal XSA
3) Within the same menuconfig, configure location of XSA. It can be in the
local file system or downloadable from an https:// location.
Bootloaders --->
xilinx-prebuilt --->
(<path to XSA>) URL of custom XSA
4) make
The resulting output/images will contain a boot.bin that includes the custom
PDI file extracted from the Xilinx Vivado exported XSA file.
How to write boot.bin to VEK385 OSPI boot flash
=======================================================
The VEK385 cannot be configured to boot from the SD card directly because it
is connected to the 2VE3858 by a USB to SD card bridge and not connected
directly. For this reason, the boot.bin needs to be in the OSPI flash for
booting the first boot stage, and u-boot can then boot Linux and the file
system from the SD card.
For writing the boot.bin file to the OSPI flash the first time, it is
recommended to use the board system controller with the instructions on the
wiki page below:
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/2273738753/Versal+Evaluation+Board+-+System+Controller+-+Update+7
Once the first boot.bin has been flashed and the VEK385 is able to boot into
u-boot, u-boot can then be used for subsequent updates to the OSPI flash using
the instructions below.
VEK385 U-Boot Flashing Instructions:
$ usb start
$ sf probe
$ fatload usb 0 0x40000000 boot.bin
$ sf erase 0x0 +$filesize
$ sf write 0x40000000 0x0 $filesize
If a valid boot.bin is already in the OSPI flash, it is possible to boot the
Buildroot generated SD card image without updating the OSPI boot.bin image, so
this is an optional step when just updating Linux and the file system.
IMPORTANT NOTES for the VEK385
=======================================================
1) The base-design.pdi on the https://github.com/Xilinx/soc-prebuilt-firmware
repo is designed for revB of the VEK385 and will not work properly on revA.
Users should either create their own Vivado XSA file if they have a revA
board, or make sure to get a VEK385 revB or newer board.
2) The default u-boot bootcmd is not the distro_bootcmd that buildroot
expects. When booting for the first time, please stop the boot in u-boot
and run the following commands:
$ setenv bootcmd 'run distro_bootcmd'
$ saveenv
$ boot
3) When using the 2025.2 release, the default u-boot env value for fdt_addr_r
is 0x21000000 which overlaps with the OS image causing the following boot
failure:
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
1: linux
Retrieving file: /Image
append: console="ttyAMA1,115200" root="/dev/sdd2" rw rootwait
Retrieving file: /system.dtb
## Flattened Device Tree blob at 21000000
Booting using the fdt blob at 0x21000000
ERROR: FDT image overlaps OS image (OS=20200000..21cf0000)
EXTLINUX FAILED: continuing...
This will be fixed with 2026.1 and future releases, but for 2025.2, users
must run the following u-boot commands to change the default value.
$ setenv fdt_addr_r 0x31000000
$ saveenv
4) Depending on the device tree used, the USB->SD card interface may not be
probed as /dev/sdd as the probing order can vary based on the device tree
configuration. To deal with this, users will need to change the last
parameter of BR2_ROOTFS_POST_SCRIPT_ARGS to sda2, sdb2 or sdc2 depending on
which corresponds to their configuration's USB->SD card.
For example, the default value in the versal2_vek385_defconfig:
BR2_ROOTFS_POST_SCRIPT_ARGS="ttyAMA1,115200 sdd2"
If the USB->SD card interface probed first, this would need to be changed to:
BR2_ROOTFS_POST_SCRIPT_ARGS="ttyAMA1,115200 sda2"

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 4d16661f367adb8713113acb420a1ad5f611ce6a309e98005a8ea3273511f03d xlnx_rebase_v2.12_2025.1.tar.gz
sha256 ea59fbfb702857a24f96ee8e9cf04f997942db1de98f8406b7daf9dcc8f4e9ea xlnx_rebase_v2.12_2025.2.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 ea55acf69bead3d4cf121de414cccfbe75a3c36465c93d9500cc00688d9b8d9d xlnx_rebase_v6.12_LTS_merge_6.12.40.tar.gz
sha256 38aec9ce252ed6a0b64d294d4d58bf51e25b249eefb31b800a5ce62cb084298a xlnx_rebase_v6.12_LTS_2025.2.tar.gz

View File

@@ -0,0 +1,2 @@
# Locally calculated
sha256 3b8969a25815a0be84f34033827e5eb557e10f0f13ebabaee339461f8520ec72 xlnx_rebase_v4.5.0_2025.2.tar.gz

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 b86d6f07d16a83ed0bdbd9b9439e099afc87ba7dfb77246e2472183848e2ea93 xlnx_rebase_v2025.01_2025.1.tar.gz
sha256 8819cbebda739436d5d2fbdef578ec3c9b902f7edbe0ce4ed6f0ddf254fcf2a7 xlnx_rebase_v2025.01_2025.2.tar.gz