MAX 10 Remote Update for External flash image
Hello everyone.
We are running a custom board with a MAX 10 and a winbond W25Q64JV external flash chip.
In Qsys I have Nios2 processor, the Generic Serial Flash interface(driving the winbond external memory), jtag uart, and a standard UART RS-232 IP.
These devices are all properly constrained and functioning as expected.
Our basic design is for the FPGA internal flash memory, we just have a simple bootloader(bootloader.pof). On the external flash we have our firmware(XIP_flash.bin and header file XIP_flash.bin.header.bin).
The bootloader checks the integrity of the data on the external flash and then jumps to the reset vector of the external flash and our custom firmware starts running. All peripherals are configured and started by the firmware. This is all functioning properly.
I am currently using the customizable flash programming tool to write this firmware onto the external winbond flash. It works, but it is not friendly for our end users. What I am looking for is a flow similar to the RSU update process defined in the an741.pdf, but for the external flash. The bootloader is "golden code" and will not need to change at this point. So, this an741 document is not really helpful for us. All our further development will be on the firmware stored in the external flash.
UART RS-232 is already working, and I have designed an interface that allows function calls from the nios environment over UART.
Any ideas on how I can accomplish this Remote Upgrade of the external flash image would be greatly appreciated.
EDIT: We are also working totally in a Linux environment.