Remote Update for Cyclone 10 LP - CSR
Using Platform Designer, we've combined three IP Cores in a Cyclone 10 LP project to accomplish three functions:
1) allow an external processor access to the FPGA via a SPI bus
2) write a .jic file to the serial flash configuration device (file is comprised of 2 .sof images)
3) initiate a reconfiguration of the FPGA to the alternate .sof image stored in the flash device.
The three IP Cores are:
1) Generic Serial Flash Interface
2) Remote Update
3) SPI Slave to Avalon Master Bridge
The project compiles successfully, and the FPGA boots to the .sof image located at flash address 0x0.
For test purposes, the platform also contains a scratch register implemented with the PIO (Parallel I/O) IP Core.
The scratch registers are read/write accessible which indicates that the SPI Slave to Avalon Master Bridge is operational.
We are having an issue with the Remote Update function. It appears we can write to the RU_BOOT_ADDRESS (offset 0x10) in the CSR space, but a read of this address consistently returns 0x0000_0000.
Additionally, when we attempt to initiate a reconfiguration, it does not occur. The procedure we are using is:
1) Write the value (0x0040_0000, in this case) to the RU_BOOT_ADDRESS register (offset 0x10).
2) Write the value 0x1 to the RU_RECONFIG register (offset 0x1D).
Is this the correct procedure to initiate a reconfiguration or are there additional steps we've overlooked?