Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/test-configs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,12 @@ jobs:
arch: aarch64
config-file: ./config/examples/zynqmp.config

zynqmp_sdcard_test:
uses: ./.github/workflows/test-build-aarch64.yml
with:
arch: aarch64
config-file: ./config/examples/zynqmp_sdcard.config

versal_vmk180_test:
uses: ./.github/workflows/test-build-aarch64.yml
with:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -343,3 +343,4 @@ image.ub
*.pdi
system-default.dtb
test_output/
sdcard.img
1 change: 1 addition & 0 deletions arch.mk
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ ifeq ($(ARCH),AARCH64)
HASH_HAL=1
CFLAGS+=-DWOLFBOOT_ZYNQMP_CSU
endif

endif

ifeq ($(TARGET),versal)
Expand Down
113 changes: 113 additions & 0 deletions config/examples/zynqmp_sdcard.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# wolfBoot configuration for AMD ZynqMP ZCU102 - SD Card Boot
# Zynq UltraScale+ MPSoC ZU9EG - Quad-core ARM Cortex-A53
#
# This configuration enables SD card boot for the ZynqMP:
# FSBL -> PMUFW -> BL31 (EL3) -> wolfBoot (EL2) -> Linux (EL1)
#
# wolfBoot loads firmware images from MBR partitions on SD card.
# Uses the generic SDHCI driver with SD1 controller (external SD slot on ZCU102).

ARCH?=AARCH64
TARGET?=zynq

WOLFBOOT_VERSION?=0

# RSA 4096-bit with SHA3-384 (matching existing zynqmp.config)
SIGN?=RSA4096
HASH?=SHA3
IMAGE_HEADER_SIZE?=1024

# Debug options
DEBUG?=1
DEBUG_SYMBOLS=1
DEBUG_UART=1
CFLAGS_EXTRA+=-DDEBUG_ZYNQ=1

# SD card support - use SDHCI driver
DISK_SDCARD?=1
DISK_EMMC?=0
# ZynqMP Arasan SDHCI does not support CDSS/CDTL card detect test level.
# Since FSBL booted from the same SD card, we know it is present.
CFLAGS_EXTRA+=-DSDHCI_FORCE_CARD_DETECT
# Note: Arasan SDHCI v3.0 does not support HV4E mode. The platform layer
# in hal/zynq.c transparently redirects SRS22/SRS23 to SRS00 for legacy SDMA.

# Disable QSPI flash when using SD card
EXT_FLASH?=0
NO_XIP=1

# ELF loading support
ELF?=1

# Boot Exception Level: transition from EL2 -> EL1 before jumping to app
BOOT_EL1?=1

# General options
VTOR?=1
CORTEX_M0?=0
NO_ASM?=0
ALLOW_DOWNGRADE?=0
NVM_FLASH_WRITEONCE?=0
V?=0
SPMATH?=1
RAM_CODE?=0
DUALBANK_SWAP?=0
PKA?=0
WOLFTPM?=0

# Toolchain
USE_GCC=1
CROSS_COMPILE=aarch64-none-elf-

# ============================================================================
# Partition Layout - MBR
# ============================================================================
# SD Card partition layout (MBR):
# Partition 1: boot (128MB, FAT32 LBA, bootable) - BOOT.BIN
# Partition 2: OFP_A (200MB, Linux) - Primary signed image
# Partition 3: OFP_B (200MB, Linux) - Update signed image
# Partition 4: rootfs (remainder) - Linux root filesystem
#
# Use partition numbers instead of flash addresses
# These are 0-based indices into the parsed partition array:
# part[0]=boot, part[1]=OFP_A, part[2]=OFP_B, part[3]=rootfs
WOLFBOOT_NO_PARTITIONS=1
CFLAGS_EXTRA+=-DBOOT_PART_A=1
CFLAGS_EXTRA+=-DBOOT_PART_B=2

# Disk read chunk size (512KB)
CFLAGS_EXTRA+=-DDISK_BLOCK_SIZE=0x80000

# Linux rootfs is on partition 4 (SD1 = mmcblk1)
CFLAGS_EXTRA+=-DLINUX_BOOTARGS_ROOT=\"/dev/mmcblk1p4\"

# ============================================================================
# Boot Memory Layout
# ============================================================================
# wolfBoot runs from DDR at 0x8000000 (same as U-Boot, loaded via BL31)
WOLFBOOT_ORIGIN=0x8000000

# Load Partition to RAM Address (Linux kernel loads here)
WOLFBOOT_LOAD_ADDRESS?=0x10000000

# DTS (Device Tree) load address
WOLFBOOT_LOAD_DTS_ADDRESS?=0x1000

# ============================================================================
# Required for test-app (even with WOLFBOOT_NO_PARTITIONS=1)
# ============================================================================
WOLFBOOT_PARTITION_BOOT_ADDRESS=0x80200000
WOLFBOOT_PARTITION_SIZE=0x4000000
WOLFBOOT_SECTOR_SIZE=0x1000

# ============================================================================
# Optional Debug Options (uncomment to enable)
# ============================================================================
# SDHCI driver debug logs
#CFLAGS_EXTRA+=-DDEBUG_SDHCI
# Disk layer debug logs
#CFLAGS_EXTRA+=-DDEBUG_DISK
# GPT partition debug logs
#CFLAGS_EXTRA+=-DDEBUG_GPT
# Disk read/write test at boot
#CFLAGS_EXTRA+=-DDISK_TEST
Loading