Reply by Andrew Nesterov November 6, 20032003-11-06

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.



Reply by November 4, 20032003-11-04
di he,
 
1. You should not be asking the 'boot mode' question - just try it.  Fill lower memory with a pattern, select Debug->reset CPU and look at memory.
 
2. If your boot code is "stepping on" your program, modify your linker command file to begin placing your program at 0x00010000.
 
3. The fact that the source, destination and counter remain the same seems to indicate that your DMA is not running.  Are you sure that *everything* is initialized correctly??  Sometimes you can get lucky [actually unlucky] and a particular device or board will function correctly without something being initialized - like interrupts??
 
4. If all else fails, can you try your board in 'no boot'??
 
mikedunn

di he <x...@yahoo.com.cn> wrote:
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.

__________________________________________________

_____________________________________
Note: If you do a simple "reply" with your email client, only the author of this message will receive your answer.  You need to do a "reply all" if you want your answer to be distributed to the entire group.

_____________________________________
About this discussion group:

To Join:  Send an email to c...@yahoogroups.com

To Post:  Send an email to c...@yahoogroups.com

To Leave: Send an email to c...@yahoogroups.com

Archives: http://www.yahoogroups.com/group/c6x

Other Groups: http://www.dsprelated.com


">Yahoo! Terms of Service.



Reply by di he November 4, 20032003-11-04
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.

__________________________________________________