Such register mode is not possible in S-port.Are you referring to the cyfx_pmmc example?
If so,please note that instead of DMA_MANUAL channel used there, you can also use AUTO or auto_signal channels. These are more faster and don't have to wait for DMA callbacks to commit the data from AP to S-port.
- Madhu Sudhan
I'm not using any of cypress examples. Rather I'm creating my own application based on an RTOS. So my question is not from that context. Also, I'm not working at the application level right now. Instead I'm creating my own SIB driver so to speak. Let me explain to you how this works very briefly.
We have an application processor which has access to the FX3 VIA P-Port. We have a driver on the application processor for the SIB0(the SIB register access works via p-port). This driver is working because I see the command interface working, i.e. when I send a command, I receive a response for it. Now the problem is that I have bulk data on the application processor that needs to be transferred via the SIB0 driver to the SD card. This creates a problem for us because the buffer that is to be transferred is in the external DRAM of the application processor(the FX3s cannot see this). Therefore if we are to use DMA for bulk transfers, we have to copy the data in the FX3s internal memory space and then do the read or write. Please note that this mechanism involves two-step procedure and therefore would be very slow. Therefore I'm looking for alternatives. If I'm unable to find one, I will go ahead and implement the above mentioned two-step process(highly undesirable).
The easiest alternative would be that the SIB0 register set has a FIFO register. That will not only get rid of the two-step procedure but it would make my implementation much simpler. Please let me know if there is.
If not, I think that this is a flaw in the design of the SIB peripheral IP. As you mention everywhere, the FX3s is used to be interfaced with the external memory and p-port to access the memory-mapped space of the device. But we are unable to do this effectively because we have to follow this two-step procedure. Would you agree with this ? As the FX3s is used as an IO expansion bridge, consider for example that we have an SD-card attached to the SIB0 which is controlled via the application processor. Considering the system and the interface exposed, I don't think that we would ever be able to extract reasonable R/W speeds from the SD card. What do you think about this ?
You can check "cyfxgpiftostorage" firmware example in the following path:
C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\gpif_examples
This example makes use of mailbox registers of P-port that can actually send the 8 bytes of data at a time to S -Port with less latency.
Hope this may help you !!
Thanks & Regards