DSPRelated.com
Forums

DM642 PCI Driver

Started by christiansturt March 10, 2004
We are about to start the development of a win 2k/xp driver for the
DM642 evm. We want to be able to pass a bitstream from the EVM to the
PC over the PCI bus. Ideally we would like to use the DSP/BIOS
reference framework GIO model that TI suggest in spra845.

From what I can gather reading this documents, a lot of the effort
for the PCI transfer will have to be undertaken in the host. The host
(PC) will have to constantly monitor the status of the PCI registers,
and set up the PCIMA register. Alternatively, we are planning to use
a doorbell type scheme with a simple message queue in DSP memory
space to control the PCI operation. By sending messages using the DSP
memory space, the DSP can then set its own PCIMA register for
transfers. Now this is the only solution we came up with, and it
requires a lot of wrapping of the GIO driver, moving it further away
from an ideal RF5 solution.

Has anyone got any ideas of a practical way to structure a PCI driver
that can avoid the need for a separate message queue in DSP memory?




Christian-

> We are about to start the development of a win 2k/xp driver for the
> DM642 evm. We want to be able to pass a bitstream from the EVM to the
> PC over the PCI bus. Ideally we would like to use the DSP/BIOS
> reference framework GIO model that TI suggest in spra845.

Why not use TI's existing driver? And call it from your DLL or driver?

> From what I can gather reading this documents, a lot of the effort
> for the PCI transfer will have to be undertaken in the host. The host
> (PC) will have to constantly monitor the status of the PCI registers,
> and set up the PCIMA register. Alternatively, we are planning to use
> a doorbell type scheme with a simple message queue in DSP memory
> space to control the PCI operation. By sending messages using the DSP
> memory space, the DSP can then set its own PCIMA register for
> transfers. Now this is the only solution we came up with, and it
> requires a lot of wrapping of the GIO driver, moving it further away
> from an ideal RF5 solution.
>
> Has anyone got any ideas of a practical way to structure a PCI driver
> that can avoid the need for a separate message queue in DSP memory?

We use an interrupt-driven "talker" program in DSP memory -- we use the TI
driver to
send/receive data to an intermediate onchip memory area, and the talker program
moves
this data to/from final chip or board destination. This is the same
architecture we
use on other C6xxx boards we either support or build ourselves.

The host cause the talker program to run after setting up a short command area
in
memory. We do this by calling TI's driver to make low-level HPI transfers
to/from
the talker memory. Also the DSP code can cause an interrupt to our driver,
which in
turn just uses the TI driver again to make transfers.

Note that the talker program and its interrupt are *not known* to DSP/BIOS. Our
host
applications require independent access to any and all memory and resources,
asynchronously, without halting or stopping the processor, or getting involved
with
RTDX in any way.

-Jeff