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.

help for using C6474 CSL EDMA3

Dear all,

I'm porting C6474 CSL EDMA3 to my project to transfer a block of a picture located in DDR to on-chip L1 memory! So I first new a CCSv3.3 project, and set the transfer parameters for my EDMA3 module and QDMA channel! after verifying the correctness of the EDMA3 transfer, I port the same EDMA3 code to my project! I split the EDMA3 code in the CSL into four part: Module initialization, channel parameter configuration, channel transfer start and wait for trander complete! But the CCS hangs every time after the begin of the channel transfer! But what bother me is that, in my project, if only keep the test program of the EDMA3 transfer, the program runs well and if only keep my program, certainly no probelm exist! I check the EDMA transfer parameters and the configuration registers, it is the same no mater with or without my program! So why the CCS hangs when adding EDMA3 program into my program?

By the way, the DSP/BIOS configuration for the EDMA3 test program and my project and I'm using the CCSv3.3 simulator to simulate the EDMA transfer on CoreA! Frow the view of the PaRAM Set configuration registers, the source and destination of the EDMA transfer are the same, too!

I've tried to debug step by step, seeing from the assembly code, afte the start of the EDMA transfer, and begin the running of my program, an error "Error: Illegal opcode (ec000000) at pc = 0x84811d74" occurs at the end of the function calling the EDMA start funcion! If this doesn't occur, run the assembly code step by step, the CCS may hang when process the "NOP 3" opcode!

touse

  • Perhaps you have solved your problem by now. This is a difficult problem to understand, and I have read your posting several times to try to find a suggestion. I find three possible directions to approach the problem.

    touse said:

    I'm porting C6474 CSL EDMA3 to my project to transfer a block of a picture located in DDR to on-chip L1 memory!

    Is L1 configured with different cache settings in the test program than in your program? Or is the area of L1 to which you are transfering data in L1 cache rather than L1 SRAM. Please check these configurations by looking at the cache configuration registers, the DSP/BIOS configuration, and the destination address for the EDMA transfer.

    touse said:

    But the CCS hangs every time after the begin of the channel transfer!

    Immediately after the command that starts the channel transfer, insert some code that just waits, such as

    for ( i = 0; i < 1000; i++ )
            j=i+1;

    Put this code as deep as possible, such as immediately after the call to the CSL_ command that starts the transfer. Open a memory window to look at the destination memory where the EDMA should be writing and a memory window to look at the PARAM for this channel. Then single-step through the for-loop and watch the data as it changes in the memory windows. This may help you find exactly how far the transfer is progressing and which word or area is causing the problem.

    touse said:

    I've tried to debug step by step, seeing from the assembly code, afte the start of the EDMA transfer, and begin the running of my program, an error "Error: Illegal opcode (ec000000) at pc = 0x84811d74" occurs at the end of the function calling the EDMA start funcion!

    This is the best detail available to look for a specific problem. Is there an instance of "ec000000 anywhere in your source data in DDR memory? If this error is very consistent, then you could do a memory save for any or all regions of memory and search for ec000000 to find why this error is occuring.

  • Thanks for your suggestion, RandyP! I've solved the problem!  Just as the CCS hangs during my simulation before, I think the SCR hangs caused the problem! I tried the same project after the computer restart next day, it worked well!