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.
Part Number: TMS320C6670
Tool/software: Code Composer Studio
I'm using Windows 7 64-bit, Service Pack 1, CCS version 5.5.0.00077 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
//Below 2 extra transfers are dummy and needed by DMA utility
numRowsPending = height ;
//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
//Wait for previous transfer out
bufId ^= 1;
numRowsPending -= blkHeight;
//Need to wait for last out transfer
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.
Did you read the CCS Forum Guidelines & FAQ? If not, PLEASE read it. If you haven't read it in awhile, please read it again to see if any updates were made.
Having CCS problems? Check out the CCS Troubleshooting Guide
Looking for CCS Training? Check out the CCS Training Site
Curious about the status of a bug and know the tracking ID? Track it via the public bug tracking portal
NOTE: When a bug is filed and a tracking ID is provided, the thread may then be suggested as "TI Thinks Resolved". Why? Please read the first FAQ of the CCS Forum Guidelines & FAQ
In reply to Ki-Soo Lee:
In reply to Nik Trif:
In reply to Anshu Jain:
Hi Anshu, Actually I'm testing the example on C6670 and TCI6616 simulators which have TMS320C66x cores so I should be able to test it on them. I'm having problems with debugging step by step at the moment so the only information I can provide you with is the state of interrupt-related registers that I get when I pause the execution of waitInChannel() call. They are here: http://tinypic.com/view.php?pic=2k1v8z&s=9#.WNuIfmclGUk
What should I be expecting there? I will be back with more information when I configure debugging successfully. I appreciate your help and I'm looking forward to hearing from you.
EDIT: I did step by step debugging on other machine and can now confirm that the register states from the aforementioned picture remain the same from the beginning of the example to the waitInChannel() and during its execution.
In the code snippet you added with this thread , the comment says it hanged in the wait call at the beginning of while loop. My question is that does it hang in the first iteration itself or at a later iteration?
Hi Anshu, Yes, it happens right away, in the first iteration. I inspected the problem further and have found that the execution is stuck in a while loop which waits for the wait_word to arrive by comparing the value of the IPR register to it, specifically in an inline function DMA_WAIT in the "dma_funcs.h" file. So you were right about the IPR register and the missing interrupt. Now my question is what is the cause to this behavior and do I need to make some adjustments to the target configuration in order to make it work or could the missing volatile keyword somewhere be the cause here? I can confirm that the test I am trying to run works correctly on the XDS220 emulator but I need to have it running in a simulator in CCS if it is possible. Thank you for your time, I'm very grateful to you for your help.
EDIT: I have managed to make the execution leave the loop by manually setting the IPR value during debugging in the watches list but, as expected, the results are not logically correct in the end.
When you say that this code works correctly on XDS220 emulator, which device you are using to run? Is it TDA2X? Generally if your code works on target it should work on simulator also, thats why want to get confirmation from you on this.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.