Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes multiple early-boot issues for NXP QorIQ T2080/e6500 targets to enable wolfBoot to boot successfully on the Curtiss‑Wright VPX3‑152 (256 MB NOR @ 0xF0000000, CCSRBAR relocated to 0xEF000000), while keeping NAII 68PPC2 behavior intact.
Changes:
- Corrects high-address loads on e6500 (avoid
lissign-extension) and adjusts TLB1/CCSRBAR relocation sequencing to prevent faults. - Adds VPX3‑152-specific TLB sizing/mapping changes to avoid TLB multi-hit overlap with 256 MB NOR.
- Updates T2080 HAL for VPX3‑152 constraints (disable MP, guard flash caching paths, DTS address handling) and refreshes DDR configuration constants/docs/CI coverage.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/boot_ppc_start.S |
e6500-safe address loading, CCSRBAR relocation/TLB ordering fixes, VPX3‑152 TLB sizing & flash mapping adjustments, early UART debug helpers |
src/boot_ppc_mp.S |
Comment/clarity cleanup in MP boot assembly |
hal/nxp_t2080.c |
VPX3‑152 MP disable guard, flash caching guards, flash bounds checks, DTS NULL for VPX3‑152, minor synchronization improvements |
hal/nxp_t2080.h |
Updates DDR parameterization and expands MODE3–8 defines; populates additional RDB register values |
docs/Targets.md |
Expanded T2080 target documentation: board matrix, VPX3‑152 specifics, programming/recovery notes |
.github/workflows/test-configs.yml |
Adds board-specific build jobs for T2080 variants in CI |
Comments suppressed due to low confidence (1)
hal/nxp_t2080.c:400
hal_flash_enable_caching()is a no-op forBOARD_CW_VPX3152, but theDEBUG_UARTlog still prints "Flash: caching enabled" unconditionally. This makes UART logs misleading when debugging VPX3-152 boot/flash performance. Gate the log behind the same#ifndef BOARD_CW_VPX3152, or print an alternate message indicating caching is skipped/uncached on this board.
#ifndef BOARD_CW_VPX3152
/* Rewrite flash TLB entry with cacheable attributes.
* MAS2_M = memory coherent, enables caching */
set_tlb(1, 2,
FLASH_BASE_ADDR, FLASH_BASE_ADDR, FLASH_BASE_PHYS_HIGH,
MAS3_SX | MAS3_SW | MAS3_SR, MAS2_M, 0,
FLASH_TLB_PAGESZ, 1);
/* Invalidate L1 I-cache so new TLB attributes take effect */
invalidate_icache();
#endif
#ifdef DEBUG_UART
wolfBoot_printf("Flash: caching enabled (L1+L2+CPC)\n");
#endif
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix wolfBoot boot on CW VPX3-152 (256 MB NOR flash variant)
Summary
Fixes a series of e6500/T2080 boot issues that prevented wolfBoot from booting on
the Curtiss-Wright VPX3-152 (256 MB NOR flash at
0xF0000000, CCSRBAR relocatedto
0xEF000000). NAII 68PPC2 (128 MB flash at0xE8000000) is unaffected.Root Causes Fixed
lissign-extension on e6500 -- Multiplelis r,addr@hinstructions inboot_ppc_start.S(CCSRBAR relocation, LAW setup) sign-extended addresses≥ 0x80000000 to 64-bit, causing TLB misses. Replaced with
LOAD_ADDR32macro.CCSRBAR TLB1 ordering -- TLB1 Entry 1 was created with the relocated
CCSRBAR address before the hardware register was actually relocated, breaking
access to CCSR. Now uses
CCSRBAR_DEFinitially, then re-creates the TLB1entry after relocation completes.
TLB1 multi-hit overlap (256 MB flash) -- The flash TLB Entry 2 covering
0xF0000000-0xFFFFFFFF(256 MB) overlapped with the boot ROM TLB Entry 0 atthe top of flash, causing an e6500 TLB multi-hit. For
BOARD_CW_VPX3152:BOOKE_PAGESZ_16M) covering wolfBoot + partitionshal_flash_enable_caching/cache_disable/cache_enableare no-ops(boot TLB stays cache-inhibited; functional but slower)
hal_mp_initinvalidating boot TLB --disable_tlb1(0)invalidated theboot TLB containing wolfBoot code. NAII works because its 256 KB boot TLB
doesn't contain wolfBoot code (which is in flash TLB Entry 2). For VPX3-152
the boot TLB IS where wolfBoot runs, so invalidating it faults the next
instruction fetch.
ENABLE_MPis now disabled for VPX3-152.Exception handler used wrong UART address --
isr_emptyprinted '!' to0xFE11C500(the default CCSRBAR) which is invalid after relocation onVPX3-152. Updated to use
CCSRBAR + 0x11C500.DTS address unmapped --
hal_get_dts_address()returned0xF0040000which is below the 16 MB boot TLB → DSI fault. Returns NULL for VPX3-152
until a separate flash TLB for the DTS region is added.
Verification
Tested on physical CW VPX3-152 hardware (RCW 608605-100, 1.8 GHz core, 600 MHz
platform clock, 4 GB DDR3L, 1866 MT/s). wolfBoot now successfully:
Used Pi4 GPIO control + Instek PST-3202 power cycling + PABS U-Boot to flash
wolfBoot via TFTP for the test cycle.
Files
src/boot_ppc_start.S-- LOAD_ADDR32 fixes, TLB sizing for VPX3, early UART debug helperssrc/boot_ppc_mp.S-- Minor cleanuphal/nxp_t2080.c-- ENABLE_MP guard, cache function guards, DTS NULL for VPX3hal/nxp_t2080.h-- DDR_SDRAM_MODE_3..8 individual defines, DDR dump command updatesdocs/Targets.md-- VPX3-152 PABS testing procedure, DDR register dump commands.github/workflows/test-configs.yml-- CI build coverage