So the ideal situation is the architecture above: We have access to the flash from the jtag via the quartus programmer so that when the board is manufactured all the configs can be loaded in production.
Then for engineering/customer updates we can reload the flash from the ARM core.
It looks like I might have a couple of problems:
The PFI core itself has a tristated data output, and because I cannot access the internals I cannot build a second data arbiter outside the PFI at the top level.
If I built just a custom IP, I dont think I can access the JTAG. They appear to be altera reserved.
So looks like Im going to have the choice of one or the other, not both.
The reason for all this is trying to make life easier for customer updates. In engineering its nice to have the JTAG connection to reload the flash. But for customer updates the idea is to just give them a USB stick that plugs into a USB (connected to the ARM) that then just automatically updates everything.
Im thinking I might just stick with the ARM route, as we can do that in engineering.