I don't see an easy way of doing this. The GPIO are not grouped properly on the expansion connector to allow it to easily be read by SW. Generally everyone is using a USB camera to connect a camera to the Beagle. The native camera interface on the OMAP3530 is not accessible on the Beagle.
If one insists on an OMAP 3530-based platform, do/will the Gumstix or Cogent
boards have the required I/O points (or other examples)? And then are the
drivers available?
b.g.
--
Bill Gatliff
bg...@billgatliff.com
The Gumstix Overo has the pins availible.
Both just from reading the public documentation, don't have my Overo in
yet.
GPIO can emulate SPI and I2C pretty easily, and there are some EEPROMs with
those interfaces. I think I also remember seeing somewhere a GPIO bit-banging
implementation for SD/MMC.
USBH on the Beagleboard won't work for you? That's only four lines. They have
to be a particular four lines, mind you, but only four. Highly unlikely you
could emulate USBH with GPIO, though, because it's basically a 48 MHz DMAC and
that's tough to do even with 500 MHz of instructions.
But if one port isn't enough, you could throw down a hub chip and create as many
ports as you need. You sound like you're planning to spin some hardware, anyway.
I would definitely consider this a no go unless you pixel rate is very slow
– Like maximum (best guess) 100.000 pixels a second or so…
And even in this case it would involve (some) instructions reading the GPIO
ports (, restructuring the data) and transferring it into memory…
The GPIO modules weren’t made for bulk amounts of data transfers on a clock
like the ECP/EPP PC parallel ports.
I know this wasn’t the answer you were looking for, but hope it anyway
clarified your question?
Best regards
Søren
> Fra: beagl...@googlegroups.com [mailto:beagl...@googlegroups.com] På
vegne af das...@miners.utep.edu
> Sendt: 4. november 2008 21:39
> Til: beagl...@googlegroups.com
> Emne: [beagleboard] Re: Using the GPIO pins on the BeagleBoard as a
parallel port
>
I might be quite mistaken, but I asked similair questions and
appaerently the transfer speed is quite decent, but there is a little
trick possible appaerently. According to some info the DSP can read from
GPIO pins, so you could run the code to do the actual transfer on the
DSP if you don't need it for other things.
I just did a small experiment with the USER0 LED GPIO in U-boot. Having a
tight ARM assembler loop of 3 instructions doing:
:Start
Set GPIO to output
:Label
Set GPIO high
Set GPIO low
Goto Label
From this I was able to obtain a ~1.5MHz square wave signal on an
oscilloscope. From this I still conclude, that GPIOs aren’t the right way
for massive parallel data transfers. In order to achieve such a thing I
really recommend using one of the interfaces build for this, connected to
some kind of external logic in case needed. This could be i.e. the display
interface or the camera interface (unfortunately not available on BB) for
output/input or the MMC interface connected to some kind of logic/CPLD for
converting between "pseudo" MMC commands and whatever parallel data format
needed - This could serve both input and output and is easily available on
BB expansion connector. These three interfaces all contains FIFO buffers and
supports DMA transfers making much higher transfer rates available on low
system/SW cycle cost...
One other drawback of trying to poll/set the GPIOs in a tight loop is that
you have basically no control over exact timing regardless what you do. Not
even if the code is running on the DSP. The reason for this is, that the
requests to access the GPIO IP block must pass through the L3 and L4
interconnects, which might be busy servicing other initiators (HSUSB, DMA,
ARM, DSP, Camera, Display etc.) as well. Unless you take very special care
what you are doing to the complete system, timing will be undeterministic,
and the L4 (and maybe L3 - I'm not completely sure) interconnects might be
flooded with GPIO requests causing a possible degradation of overall system
performance... More information with respect to L3 and L4 of the OMAP can be
found in the TRM chapter 5...
In case of further questions or comments please let me know, and I will try
to help you out...
Best regards
Søren