Do you know if there is any way to supply the FMAN microcode to u-boot on an sdcard? This LS1046A application note shows a QSPI flash memory map that includes FMAN microcode, but I don't see a similar map for the booting from sdcard. We currently boot from an sdcard with RCW+PBL+SPL+u-boot. Is there any way to pack the FMAN code in there too?

Here is a helpful note in case anyone else would like to know the layout of images on the sdcard.

Yes, you can program the FMAN code to sdcard. The documentation is not as clear as for writing to the on-board flash (via QSPI), for which there are multiple instances of explicit QSPI memory maps showing the placement of RCW, u-boot, u-boot environment, and FMAN microcode. There is no place in the 1328 page BSP documentation for the LS1046ardb that lays out the sdcard memory map but you can work out the layout of the sdcard from scattered examples.

At the top of page 40 it says:

Program a new microcode to SD Card:

=>tftp <ucode_image_addr> <ucode_file_name>.bin

=>mmc write <ucode_image_addr> 820 50

Remember that this is a uboot command so the block count 820 is in hex.

For sdcard, the RCW is combined with the preboot load instructions (PBI), the uboot secondary program loader (SPL), and the main uboot executable. There are probably some alignment constraints on those images as well but I'm too lazy to go figure it out. Basically the `mkimage` tool in the uboot build tree is used to put all those together into a single image that you can write to you sdcard starting at block 8.

The uboot environment block is made with the `mkenvimage` tool that is included in the uboot build tree. You will need to include a size parameter when building your own environments.

mkenvimage -s 8192 -o input.txt output.bin

The FMAN microcode is NOT included in the u-boot tree. You'll have to get that from the LS1046ARDB SDK.