Sign in

username:

password:



Not a member?

Search adsp



Search tips

Subscribe to adsp



adsp by Keywords

AD1819 | AD7332 | ADSP-2106 | ADSP-21060 | ADSP-21065L | ADSP-2116 | ADSP-21160M | ADSP-2181 | ADSP-218x | ADSP-219 | ADSP-2199 | ADSP219 | BF531 | BF532 | BF533 | BF535 | Blackfin | FFT | JTAG | LDF | SDRAM | SHARC | SPORT | UART | VDSP++ | VisualDSP

Discussion Groups

Technical discussions related to Analog Devices DSPs (including Blackfin, TigerSHARC, SHARC and ADSP-21xx DSPs).

  

Post a new Thread

Re: Newsgroup - Sithick - Mar 30 7:47:29 2006



Hi Abhinav,
    In that PCI Example file we have 3 kinds of options as follows, in this 0,1,2 are OK but
the option 3 having problem because it remains in the loop while(!dma_done) can u tell me why
it is 
ie,Burst read from SF-161 and Burst write from SF-161 are OK but problem is with transmitting
and DMA it out......

while(1)
  {

    /* Command Loop */
    /* 0 = Default, increment "heartbeat" counter in MSGR0 */
    /* 1 = Burst write (programmed I/O)                    */
    /* 2 = Burst read (programmed I/O)                     */
    /* 3 = DMA write                                       */

    switch(cmd)
    {
      /* Burst write from SF-161 DPM to PCI */
      case 1 :

        /* change buffer and then copy to DPM from internal memory */
        meminc(xmit_buf, xmit_buf[1], 0x01010101, BURST_LEN);
        pci_write(pci_addr, (void*)xmit_buf, BURST_LEN);
        cmd = 0;
        break;

      /* Burst read from PCI to SF-161 DPM */
      case 2 :

        /* CLear internal receive buffer and then get the data */
        memset(rcv_buf, 0, BURST_LEN);
        pci_read(pci_addr, (void*)rcv_buf, BURST_LEN);

        /* compare xmit and rcv buffers */
        errors = buf_compare(rcv_buf, xmit_buf, BURST_LEN);

        cmd = 0;
        break;

      case 3:
        // Change the tx buffer, then DMA it out
        meminc(xmit_buf, xmit_buf[1], 0x01010101, BURST_LEN);
        pci_dma_tx(pci_addr, xmit_buf, BURST_LEN, dma_finished);
        cmd = 0;
        // wait for DMA to complete
        while(!dma_done);
        dma_done = 0;
        break;
    /* count */
      default :
      case 0 :
        heartbeat++;
        SetIOP(MSGR0, heartbeat);
        break;
    }
}

    And one more thing If Labwindows/CVI  finishes one work in 78ms means this board takes
nearly 12000ms to finish the same work including download & upload time.So this board not
giving beter performance when compared to CVI Speed.Is there any other way to increase the
execution speed.I went for Optimization also but can't achieve that much speed as CVI did.but
ADSP 21161 has the power of performing 600 MFLOPS and it has Single Instruction multiple data
too.then why I can't acehive...

Thanks in Advance

Sithick H
----- Original Message ----- 
  From: Abhinav 
  To: 'Sithick' 
  Cc: 'M. S. Ashok' ; 'Karthik Sekar' 
  Sent: Wednesday, March 29, 2006 10:33 PM
  Subject: RE: Newsgroup
  Sithick,

      There is no jumper settings required for IRQ0 interrupt to occur.

  Could you run following command?

  C:\Folder which has pci example program\>diag21k -xpci_dma

  (pci_dma.cmd is the batch file which comes with pci example.

    It downloads pci_test.dxe program by itself and shows results)

  After running the command you can see on the command window whether pci transfer is failed or
passed.

  It generates pci_cmd.log file also which you can open it with notepad and see if it's passed
or failed.

  Just send me snapshot or log file after running the tests.

  You can run interrupt program from host also just to check whether interrupt(IRQ0) is working
fine or not.

  C:\dsp21ksf\examples\host\c\interrupts\host_to_DSP.exe.

  Note: - Since you are working without emulator, it's very difficult to know or catch these
interrupts.

  Bst Rgds

  Abhinav
------------------------------------------------------------------------------

  Hi,
  I am working with Bitware's Hammehead Lite PCI Board in which I have to
  transfer data to/fro Board and PC.I am using Diag21k 7.31 utility
  tools(HIL Library fns) to interact with Board.I am trying to transfer data
  b/w PC and board using DMAs.While Intialising DMA i am calling the
  following function

  interruptf(SIG_IRQ0, sf_isr);

  where sf_isr is a function which makes dma_done variable to high after
  completing DMA transfer.

  after calling dma transfer fns I am checking for dma_done variable to made
  high from PC Side but it is not get made high.the above mentioned interrupt
  handler function not working properly or is there any jumper changes to
  made in my board to make DMA transfer..or will HLPC Board supports DMA
  transfer

  Waiting for replies
  Thanks in Advance

  Sithick H

  Lacey B. Hunt
  Manager, Inside Sales
  BittWare Inc.
  31B South Main Street
  Concord, NH 03301
  Tel: 603-226-0404 x513
  Fax: 603-226-6667
  Web: www.bittware.com
  Email: l...@bittware.com



(You need to be a member of adsp -- send a blank email to adsp-subscribe@yahoogroups.com )