
Technical discussions about the TI C6000 DSPs (including the c62x, c64x and c67x DSPs).
Geckook Xu- > Thank you for your idea. > I try internal mem in this time, I can read the data from PC (host). Ok that's good progress. > But when I use SDRAM to read data, It is not work. > I still can write data from SDRAM to PC (use API PCI_xfrStart(PCI_WRITE);). > I try to init the emif, but didn't succeed. > > Do you have any advice? First you have to verify EMIF init and SDRAM operation just by using DSP code, without host and PCI involved. A basic DSP test program that writes/reads back test pattern data to/from the SDRAM would be helpful. To initialize EMIF, my suggestion would be to study Gel file and other basic C code initialization for TI's EVM DM642 card; this would show good examples for initializing SDRAM. Hopefully your PCI card has similar EMIF design as with EVM DM642. -Jeff > On 6/7/07, Jeff Brower <j...@signalogic.com> wrote: > > 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 <j...@signalogic.com> 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 > >______________________________