Technical discussions related to Analog Devices DSPs (including Blackfin, TigerSHARC, SHARC and ADSP-21xx DSPs).
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