You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Squashes previous two work-in-progress commits and adds further hardening
discovered during large (>128 MB) signed FIT boot bring-up:
hal/zynq.c:
- Route IOU_TAPDLY_BYPASS writes through pmu_request when running at
EL <= 2 in the <=40 MHz and <=100 MHz branches; the upstream code
only did this in the <=150 MHz branch, but the register is equally
unwritable from EL2/EL1 at lower clocks.
- Add qspi_flash_reset() (0x66 RESET_ENABLE + 0x99 RESET_MEMORY),
called once per chip in dual-parallel during qspi_init so the flash
starts from a known state regardless of what FSBL/BootROM left
behind (e.g. XIP, 4-byte address, or auto-boot probing).
- Remove unused 'reg' in csu_aes and 'ms' in csu_init so -Werror=unused-variable
builds (OPTIMIZATION_LEVEL=0 / DEBUG=1) succeed.
hal/zynq.ld:
- Move wolfBoot ORIGIN from 0x08000000 to 0x10000000. For FIT images
whose kernel load address is 0x00200000 and whose payload approaches
or exceeds ~126 MB, the kernel memcpy at handoff would sweep across
0x08000000 and overwrite wolfBoot's own running code. 0x10000000
leaves headroom below WOLFBOOT_LOAD_ADDRESS (0x18000000).
tools/scripts/zcu102/zcu102-ca53-qspi.cmm:
- Full rewrite based on Lauterbach TRACE32 ZCU102 QSPI demo: adds
PREPAREONLY entry mode, &dualqspi single/dual toggle, READ_ID_TEST
subroutine for single-flash variants, and separate dialogs to flash
BOOT.BIN at offset 0 and test-app/image_v1_signed.bin at the
partition boot address.
- Document TRACE32 temp-memory ceiling (~128 MB) near FLASHFILE.Create:
Load buffers the entire source file into temp memory, so files
larger than that must be split externally (e.g. via dd) and each
chunk loaded in its own FLASHFILE.ReProgram ALL / off bracket.
config/examples/zynqmp_sdcard.config, docs/Targets.md, include/sdhci.h,
src/boot_aarch64.c: peer review feedback from PR662.
Use `config/examples/zynqmp_sdcard.config`. This uses the Arasan SDHCI controller (SD1 - external SD card slot on ZCU102) and an **MBR** partitioned SD card.
2601
2601
2602
-
wolfBoot unconditionally flushes the EL2 D-cache/I-cache and disables the EL2 MMU before handoff (see `el2_flush_and_disable_mmu` in `src/boot_aarch64_start.S`), satisfying the ARM64 Linux boot protocol with no extra config flag required.
2602
+
On the direct-jump handoff path, wolfBoot flushes the EL2 D-cache/I-cache and disables the EL2 MMU via `el2_flush_and_disable_mmu` in `src/boot_aarch64_start.S` when `BOOT_EL1` is not enabled and the current exception level is EL2. The ERET-to-EL1 handoff path is different, so this cleanup is not unconditional.
2603
2603
2604
2604
**Partition layout**
2605
2605
| Partition | Name | Size | Type | Contents |
@@ -2705,8 +2705,11 @@ The ZynqMP uses an Arasan SDHCI v3.0 controller. Key considerations:
2705
2705
level. `SDHCI_FORCE_CARD_DETECT` is set in the config since FSBL already booted from
2706
2706
the same SD card.
2707
2707
-**`DISK_BLOCK_SIZE`**: Controls the firmware read chunk size in `update_disk.c` (default
2708
-
64KB). This determines the per-read size passed to the SDHCI driver. Must be less than
2709
-
the SDMA buffer boundary (4KB with the default threshold).
2708
+
64KB). This determines the per-read size passed to the SDHCI driver. It does not need
2709
+
to be smaller than `SDHCI_DMA_BUFF_BOUNDARY`; if a read crosses one or more SDMA buffer
2710
+
boundaries, the SDHCI driver handles that via the normal SDMA boundary interrupt path.
2711
+
In practice, this setting is a tradeoff: larger reads may trigger boundary IRQs more
2712
+
often, while smaller reads reduce crossings but increase request overhead.
0 commit comments