Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Oct 2008 20:39:39 +0100
From:      Pegasus Mc Cleaft <ken@mthelicon.com>
To:        freebsd-hackers@freebsd.org
Subject:   Re: [Doubt] Can a PCI device communicate with another PCI or other device?
Message-ID:  <200810142039.39287.ken@mthelicon.com>
In-Reply-To: <e6a0706a0810141132n1a1d1a9cn4a50ffc727640e13@mail.gmail.com>
References:  <e6a0706a0810141132n1a1d1a9cn4a50ffc727640e13@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 14 October 2008 19:32:47 Srinivas wrote:
> Hello,
>
> I have a small doubt.
>
> Suppose I have a PCI card with a general purpose CPU on it. Could it be
> able to communicate with another PCI device or ISA device(lets say IDE ha=
rd
> disk)?

Hi Srinivas,=20

	Others may have a different opinion on this, and I am curious to see there=
=20
input to this question as well. I tried doing something like this years ago=
=20
with the Blackfin processor, but I found it to be not a good idea. While I=
=20
could  DMA transfer memory from the DSP into the physical memory of another=
=20
device (In my case, the HD controller) I couldn't take control of IRQ=B4s. =
Other=20
potential problems arose that turned me off to the whole idea (Data=20
concurrency between the DSP->HD and the host->HD). Even if you got past the=
se=20
problems you would still face having to deal with any number of filing syst=
ems=20
formats.=20

	I found it much easier to make a device driver and service/daemon on the h=
ost=20
machine that proxi-requested things for the DSP board and burped it into ra=
m=20
that the DSP could then grab and process (or dump to disk from, in the othe=
r=20
direction). While the speed may not be brilliant, it made things a lot easi=
er=20
for me to manage on a software level.=20

	In later revisions, I re-spun the PCB so it had an IDE controller local to=
=20
the DSP and stuck an PLX-Tech PCI to PCI bridge between the host and the DS=
P=20
so I could manage 2 small memory windows between the two (One for API=20
commands, and the other data) with a single IRQ back to the host. This allo=
wed=20
me to have a high-speed IDE port local to the DSP where it was needed, and =
a=20
slower link back to the host CPU for pulling video files, etc.=20

Hope this helps,
Peg



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810142039.39287.ken>