10-22-2014 01:53 AM
My problem is when I try to copy data from LQspi flasht to memory by using DMAC.
In fact I can succesfully copy data, I can see the memory values from 'Variables' window, but problem starts when the code continues running.
Here is my pseudo for DMA Copy(LQSPI)
If I don't put a 'wait for some time' right after the execution of 'DMA Done Handler', my program stucks at an irrelevant part of code and I can't stop the processor. This 'wait for some time' depends on the size of data copied. e.g 1ms is enough for 4KB copy but not enough for 1MB copy.
What can be the reason of my problem, any suggestions ?
10-22-2014 01:58 AM
Can it be that DMAC is still doing something with source addresseven after DMA Done Interrupt (may be related to cache) and when I disabled LQSPI mode immediately, Source Address becomes unavailable for memory read hence DMAC can't do its work on Source Address? ?
09-25-2015 03:41 AM
Having the exact same problem:
I'm trying to read a large memory and do bank-selects between transfering in linear mode.
2. Select bank
3. Linear Mode
4. DMA transfers the complete bank.
5. <Wait>, back to step 1.
If I don't wait ~50 millisec beore disabling linear-mode (step 5). The Zynq becomes unresponsive. The debugger looses connection and I can't even reprogram without doing a power-cycle.
It seems to lock when disabling the controller.
"Disable controller. Set qspi.En_REG[SPI_EN] = 0."
Doing a memcpy in linear-mode instead of using DMA works, but is too slow.