We have built a device using the W7500P and incorporated a W25Q64JV chip to supply the flash memory we needed to support overlays. A simple bootloader loads one of the overlays from the chip, writes it to on board flash, and overwrites the interrupt vectors to direct startup and interrupt vectors to the overlay. A software restart at that point activates the overlay. That works fine.
The bootloader is the initial overlay loader, however after it is loaded, the overlay itself is the starting point for the loading of the overlay.
We find there are instances where the blocks of data read from the W25Q64JV chip right after a restart from the overlay are padded with an extra byte. All the memory read from that chip are off by a single byte. We’ve tried multiple scenarios trying to resolve this issue, including trying the calls to both the W25Q64_read() and W25Q64_fastread() functions, adding addition cycles to the read calls, putting in delays after the reads, and inserting calls to ensure that the chip isn’t busy. We’ve tried using the ‘NVIC_SystemReset()’ function to restart the unit, as well as simply jumping through the reset vector. Nothing seems to resolve the issue. Has anyone seen this type of behavior? We appreciate any thoughts you might share. Thank you!