Hello!
I'd like to ask community advice on the following topic.
We have rather old and fixed digital board with C6414/C6416. On EMIFA we have FPGA, CPLD, and USB chip. On EMIFB we have 3 parallel flash memory chips of 4MB each. They served as boot source and storage for FPGA images. Because of boot requirements flashes are seen as 8 bit devices, so visible space is 1MB and we use CPLD to produce higher address bits. That solution though proven and works fine is far from elegant. And now we switched to larger FPGA device and run short of flash memory. Somehow we'd like to have more space for DSP and FPGA images and also want to have multiple sets of them. To reload DSP with different program we use two stage bootloader. First stage looks into hardcoded flash memory location for address of primary DSP image. Write to CPLD register is used to create hardware reset strobe to DSP. So this scheme worked pretty well, when we had older smaller FPGA, we could have 2 or 3 images on board, but no more.
So we considering to add ARM controller to that digital board. It will run under some Linux and would have file system on NAND flash. Then ARM could be used to load FPGA chip through SPI port and we free up some space in parallel flashes of the DSP. But then we consider, what if we put all the images on ARM's side? I've heard that booting DSP through HPI is simple and proven process. So we might like to use it. The only concern is that we need more exchange between ARM and DSP. Before we were using USB to connect DSP to the host system. Although USB is kind of host-controller (master-slave) system, we were able to send messages in both directions, from host to DSP and vice versa. Now, when ARM host would be physically present on the board, I wonder, if we can avoid USB at least between ARM and DSP.
Primary requirement is packet exchange with maximum payload of about 256 bytes. We need that both parties can initiate or at least request transfer. Can HPI be used for that purpose? I did not study HPI deeply, I only picked up that it is slave port. Perhaps some GPIO pin can be used to notify ARM host that DSP has something to send. I just guess...
So again, I'd like community comments and advice on this situation.
Thanks in advance.