di he, A DMA transfer is stopped on an emulator halt, which means that stepping through would pause the transfer. You might be looking at DMA results in a state of emulator halt, when DMA has not yet completed the transfer? I'd suggest to use a breakpoint and poll the control register in a loop before the breakpoint, as in pseudocode below: // press RUN button in CCS at this point DMA_start() // start a DMA transfer DMA_poll() // test if the transfer has completed printf("DMA done") // put a BREAKPOINT here Hope this helps, Andrew P.S. May be the chip on your board has broken? > Date: Tue, 4 Nov 2003 20:00:39 +0800 (CST) > From: di he <> > Subject: DMA dosen't work ! > > hello ! > i got a big problem when emulating my own board. > this is my emulating evironment: > > CCS2.2 > PCI emulator card with JTAG > and my own 6203 board > > i can load some filter programs into my board, it works fine! > the timer in the DSP is ok! > and all the internal ram is accessable... > when i config the DMA channel 0 to transfer data only in internal > data ram, i find it dosen't work, i am sure that the value i wrote to > the DMA0 regisers is correct, and the DMA0 START bit shows 1b(or 11b), > which means the channel is running. > But the value in the source & destnine address register have no > change! the counter register remain the original value too! > > (my program works right in c6203 sim and on c6201 EVM board.) > > when i find DMA0 dosen't work, i test the other DMA channels with the > same code. then i find after my program is start, the STATUS feild > remains 10b, which means the channel is paused! > > i checked my correct program a big number of times, it still donsen't > work! > > my board's boot mode is set to external flash boot. when reset, the > DSP will move 64kBytes code from Flash to 0x00000000 through DMA0, but this > will not happen when JTAG is used, right ? > actually, the JTAG is always used on my borad. is the problem come > from the JTAG ? > i don't know what can i do next... > i greatly need your help. |