• Resolved

CCS/TMS320C6670: Problems testing EDMA on C6670 simulator in CCSv5

Part Number: TMS320C6670

Tool/software: Code Composer Studio

I'm using Windows 7 64-bit, Service Pack 1, CCS version and Vision SDK 2.10.

I've been trying to test an EDMA autoincrement2D example as described in VISION_SDK_02_10_00_00\ti_components\algorithms_codecs\eve_sw_01_12_00_00\starterware\docs\eve_starterware_userguide.pdf using C6670 Device Cycle Approximate Simulator, Little Endian. (Note that in the end the example should work on a TDA2x board but I need to simulate it in CCS first).

However, I am facing a problem regarding wait(In/Out)Channel calls when a deadlock happens. Here is a code snippet (the test simply transfers data back and forth using two in and out buffers):

int bufId = 0;

//DMA trigger for pipe-up, out transfer is dummy and handled inside DMA utility EDMA_UTILS_autoIncrement_triggerInChannel(dmaAutoContextInOut[bufId]); //Below 2 extra transfers are dummy and needed by DMA utility EDMA_UTILS_autoIncrement_triggerOutChannel(dmaAutoContextInOut[bufId]); EDMA_UTILS_autoIncrement_triggerOutChannel(dmaAutoContextInOut[bufId^1]) ; numRowsPending = height ; while (numRowsPending) { //Wait for previous transfer of in EDMA_UTILS_autoIncrement_waitInChannel(dmaAutoContextInOut[bufId]); // it hangs here but it was triggered, it should finish eventually //DMA trigger for next in buffer EDMA_UTILS_autoIncrement_triggerInChannel(dmaAutoContextInOut[bufId^1]); //Wait for previous transfer out EDMA_UTILS_autoIncrement_waitOutChannel(dmaAutoContextInOut[bufId]) ; EDMA_UTILS_autoIncrement_triggerOutChannel(dmaAutoContextInOut[bufId]) ; bufId ^= 1; numRowsPending -= blkHeight; } //Need to wait for last out transfer EDMA_UTILS_autoIncrement_waitOutChannel(dmaAutoContextInOut[bufId]) ;

I was wondering if I could test this on a simulator at all, and if yes, do I need to configure some additional settings.

I will appreciate any help. Thanks.