Our device uses a DM8165 and uses SPI boot mode from a M25P20 spi flash device. We are only programming uboot to the spi flash (kernel and filesystem are loaded via. PCI). Our uboot is ~50kB in size.
All of this works fine.
I am now looking at the possibility of field upgrades to uboot. The ideal would be if I could have two uboot images stored in the spi flash at the same time (the existing uboot, and the new one that is being programmed to upgrade). This way, the uboot being programmed could be programmed and verified, and as a last step, the previous uboot signature could be erased to switch to the new one. With this arrangement there would be much less risk of corrupting uboot during the upgrade process.
The DM816x TRM section 25.7.5.5 table 25.23 lists the number of blocks and sectors that are tested by the boot rom for non XIP memories. It lists the number of blocks for SPI memory as 4 and the number of sectors as 1. From this I read that the boot rom will read the first sector of up to 4 blocks to look for the image header. Section 25.7.5.3 defines the sector as 512B, but I cannot find the definition of the block size for an SPI device. Since there is no way for the boot rom to know the erase block size for the spi device, I assume this value must be fixed in size?
Does the boot rom really look at up to 4 blocks in SPI boot mode or is this a documentation error?
Is there any way to have the uboot image located at some offset in the spi flash, or does the image header have to be located at address 0x000000 in the spi device?
Thanks,