This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

edma3 transfer error

Hello, I'm writing a emifa driver which transfer data using edma3 (event (using gpio event ) trigger )based on the IOM mini-driver,my environment is as follows:

TMS320C6455DSP 

V5 FPGA(interface with DSP using FIFO through emifa CE2)

CCS5.3

DSP/BIOS 5.42

EDMA3LLD

I have configured the emifa, edma3 and gpio,and I have found that the gpio event has triggered the edma3 transfer,because I set breakpoint in the edma3 transfer complete ISR,and the program is break at that ISR function, but if I look the EMIFA memory space,the ccs will pop up an error, which show the device core is hung ,and unable to determing target status,then it will disconnect with the target, and I can't find the reason,can someone give me some advice, thank you!

  • Cz,

    If you look at a different EMIFA memory space using CCS, do you get the same problem?

    Look at the EMIFA bus signals with a scope to see what they are doing. In particular, look at the clock and the ready line to see if they are both operating correctly. Then see if any of the control lines are toggling or are stopped in an active state.

    The order of development should be:

    1. Get the EMIFA working between the DSP and the FPGA using DSP code.
    2. Get the EDMA3 channel working for reading or writing using DSP trigger.
    3. Get the GPIO even working to trigger the EDMA3 channel to read or write.
    4. Integrate all of that into the IOM mini-driver.

    Regards,
    RandyP
  • Thanks for your answer, and I made another test, If I change the edma3 source address from emifa space to ddr2 space , this problem will not appear,but the driver will fall into ECM_dispatch function(after I look up the edma3 lld source code,I found this function is the ISR registered by edma3Init function ), and it will not return to the application layer ,but the edma3 is still working ,because if I change the contents at the edma3 source address, the contents at the destination address will change to the value I changed , how does this happen, can you help me?
  • Cz,

    I am not an IOM driver writer, so I cannot help you with debugging that code. You will always have best success if you start with an example that works and make small changes so you know which change breaks it.

    The order of development in my previous post is still a good things to follow. It appears you have changed step 1 and moved all the way to step 4. Many things can be wrong at this point. Your skill at debugging will be quite useful in this process. Make small changes from a working example, that is my best advice.

    Regards,
    RandyP