Thanks, that makes sense. Just to clarify, I reproduced and tested this with QEMU’s ast2600-evb machine rather than physical AST2600 hardware.
I checked the SPL section layout and I think you are right that the better fix is in the AST2600 SPL linker script rather than in scripts/Makefile.xpl. With the v1 Makefile fix reverted, the mismatch was: sizeof(spl/u-boot-spl-nodtb.bin) = 0xc92c _image_binary_end = 0xc930 The last emitted section was __u_boot_list, ending at 0xc92c, while _image_binary_end was advanced to 0xc930 by the alignment associated with .binman_sym_table. In this build .binman_sym_table did not contribute emitted contents, so objcopy -O binary did not include those alignment bytes in spl/u-boot-spl-nodtb.bin. I have tested a v2 which moves the 8-byte alignment into the emitted __u_boot_list section. With that change: sizeof(spl/u-boot-spl-nodtb.bin) = 0xc930 _image_binary_end = 0xc930 The appended SPL DTB starts at 0xc930, and the external-DTB build boots successfully under QEMU with: qemu-system-arm -M ast2600-evb,execute-in-place=on,bmc-console=uart5 \ -drive file=flash.img,format=raw,if=mtd -nographic I have sent v2 with the linker-script fix. Quentin On Fri, Jun 19, 2026 at 9:04 PM Tom Rini <[email protected]> wrote: > On Fri, Jun 19, 2026 at 11:55:29AM +0100, Quentin Strydom wrote: > > > When CONFIG_SPL_SEPARATE_BSS is enabled, fdt_find_separate() > > expects the SPL control DTB at _image_binary_end. However, > > u-boot-spl-dtb.bin is currently generated by concatenating > > u-boot-spl-nodtb.bin and the SPL DTB directly, without padding > > up to _image_binary_end. > > > > On evb-ast2600 this places the appended SPL DTB at 0xc92c while > > _image_binary_end is 0xc930. The SPL therefore checks four bytes > > past the FDT header and fails early with: > > > > Missing DTB > > No serial driver found > > > > Add padding between the xPL nodtb binary and the DTB when separate > > BSS is enabled, so the DTB is placed where fdt_find_separate() > > expects it. > > > > Signed-off-by: Quentin Strydom <[email protected]> > > I'm glad someone has been able to test this on hardware now, and I'm > sorry it wasn't fixed when dealing with the rest of the fallout here. > I'm not sure this is quite the correct fix however as we should be > ensuring that output file and _image_binary_end agree. What sections > are, and aren't being included when we create the -nodtb.bin file? I > think the place I ended up putting the '. = ALIGN(8)' in commit > 8b0ebe054bb3 ("arm: Update linker scripts to ensure appended device tree > is aligned") ended up not being correct on this platform. > > -- > Tom >

