In MultiBoot applications, you need to specify two addresses for the MultiBoot image; the one is the MultiBoot image loading up address which will be programmed into GENERAL1 and GENERAL2 registers, and the other is the start address of the MultiBoot image in the PROM file (this address is the one you feed PROMGen).
For power-of-2 addressing SPI flash, such as Numonyx M25Pxx, the two addresses are equal.However, Atmel flash, such as AT45DBxxxD, is in non-power-of-2 addressing mode by default.
The start address of the MultiBoot image in the ".mcs" file is no longer equal to the MultiBoot image loading up address .
The start address of the MultiBoot image in the ".mcs" file equals to the number of bytes before the MultiBoot image loading up address inside the Flash.
For example, in AT45DB161D default addressing mode, if the MultiBoot image is placed at address 0x200000, the MultiBoot image loading up address is 0x200000, then the 12-bit page address is 0x800, and the 10-bit byte address in the page is 0x000.
Refer to the datasheet of the AT45DB161D for its address format.
The start address of the MultiBoot image for PROMGen is 0x800 X 0x210=0x108000 because there are 528 (0x210) bytes per page for AT45DB161D.
You can then use the following PROMGen command to generate the ".mcs" file:
promgen -w -p mcs -c FF -o multiboot_at45db161d -u 0 image1.bit -u 108000 image2.bit -s 2048 -spi