Up to this point, it had seemed to me that booting from SD cards was a unique and special case. The card has a FAT filesystem on the first partition. There must be a file named BOOT.BIN in that partition. All this seemed like a world unto itself.
What I realized was that BOOT.BIN holds exactly the structure I have worked out for the NAND device. This means that the code in the FSBL can look for all of the same pointers and datastructrues, they are just contained within that file. It is the job of the SD card driver to hide this and unify things so that the FSBL neither knows nor cares.
I have no idea why Xilinx decided to do things in this way. It ought to have been possible to have just written the blocks on the SD card in the same way as it would be done for NAND or qSPI devices. Having the FAT filsystem as a layer between the hardware and the boot loader seems like a lot of needless code if nothing else. But it is what it is and it certainly works.
Tom's Computer Info / [email protected]