DSPRelated.com
Forums

Re: PCI data transfer (dm642 DSP)

Started by Jeff Brower June 7, 2007
Geckook Xu-

> Thank you for your reply.
> 1) I don't know what did you refer to 'PMC'. But I am sure my card
> implements PCI bus interface.

Ok. I mentioned PMC because you said "I have a system where the a PMC card with
C6415 act as a daughter board" (see below). I assume you mean a standard PMC
form-factor card with 32-bit, 33 MHz PCI interface.

> 2) I try external mem in SDRAM. (and what should I take attention to
> in this case?)

Ok, but why not try internal mem first? It's easier to deal with, and you don't have
to worry about EMIF register configuration.

> 3) I write a wdm driver of windows XP. It will offer an physical address to dsp.
> And the physical address would work when DSP transfer data to this
> physical address of PC(host) with API below:
> PCI_xfrStart(PCI_WRITE);
> But why I can not read data from this physical address?

How sure are you the physical address is correct? When I wrote PCI drivers for DSP
cards before, the physical address on the host (PC) side often proved to be a
problem.

-Jeff

> On 6/4/07, Jeff Brower wrote:
> > Chiun-Siang Beh-
> >
> > > Can you tell me how to start the pci master read?
> > > my code like this:
> > > config.dspma = (Uns)req->dstAddr;
> > > config.pcima = (Uns)req->srcAddr;
> > > config.pcimc = (Uns)GET_BYTE_COUNT(req->byteCnt);
> > > PCI_xfrConfig(&config);
> > > PCI_xfrStart(PCI_READ_NOPREF);
> > >
> > > but I can not read the data.
> > > Are there somethind to be take attention in DSP or PC host?
> > > Can you give me an example including the pc host and dsp?
> >
> > Questions:
> >
> > 1) Which PMC card is this? Are you sure it implements PCI bus interface and not HPI32 interface?
> >
> > 2) Have you tried a DSP mem address in internal (onchip) SRAM? If you are trying SDRAM, then that makes the test more
> > complicated, more things that can go wrong.
> >
> > 3) How did you determine the PC mem addr? Under both Win and Linux there are specific ways to determine actual
> > physical mem addr (not C code "logical" mem addr). If the physical addr you specify is not permitted by the OS, then
> > the transfer won't take place (or won't *appear* to take place).
> >
> > -Jeff
> >
> > >> Hi,
> > >>
> > >>I have a system where the a PMC card with
> > >>C6415 act as a daughter board.
> > >>Currently, I'm using the method describe
> > >>in the "C6000 Peripheral Guide" when i need to transfer
> > >>data from SDRAM of the PMC Card to the memory
> > >>the host system. i.e. I will use the master read
> > >>and Master Write method describe in Chapter 9.
> > >>For a MasterRead, I will write the source address
> > >>(host's memory address) to the PCIMA register. Then,
> > >>I write the destination address (DSP's memory address)
> > >>to the DSPMA. Then, I write the total byte I wish to
> > >>transfer and the read method accordingly to PCIMC.
> > >>The above method works fine. However, it's
> > >>not really "convenient" compare to the DAT module
> > >>of DSP/BIOS.
> > >>For example, if I wish to transfer (read/write)
> > >>large amount of data through PCI interface to/from
> > >>host, I have to use for/while-loop to transfer the
> > >>data. The maximum amount can be trasfer at a time
> > >>is limited to 65535 (i think so) as the totol bytes
> > >>to transfer field (CNT) in PCIMC is only a 16-bit field.
> > >>So, i need to seperate the large data to small transfers.
> > >>Futher more, i need to pool (or can use Interrupt)
> > >>the MASTEROK (in PCI Interrupt Source Register), to monitor
> > >>the status of previous transfer before making new
> > >>trasnfer request.
> > >>Thus, my problem is this method of transfer
> > >>appears to me as "blocking I/O" as my program will
> > >>be "blocked" until the transfer end.
> > >>
> > >>Is there any other better method to transfer data
> > >>between the memory visible to DSP to memory of Host ?
> > >>I'm hoping that the transfer can be "handled in
> > >>backgroud" .. something like that provided by the
> > >>DSP/BIOS's DAT module.. Can i use the QuickDMA / EDMA
> > >>to do so ? How ?
> > >>
> > >>Sorry if the message looks a bit messy :-p..
> > >>Please advise.. Thanks in advance.
> > >>
> > >>--
> > >>Beh, Chiun-Siang