according to the TRM, GPIO banks 2-6 are driven from the PER_L4_ICLK
which is L4_ICLK. so no surprise EMU_PER_ALWON_CLK is not used...
> clock34xx.h and clock34xx.c are not small files, it will take a while
> to dig through them.
may I suggest looking into the TRM 1st, which is also no small file,
but might be a better starting point.
Yeah, I'm seeing the same 250ns switching rate, with a lot of ringing as well (thats probably just from the cable) and i'm using the example code that you sent me earlier (i still haven't found a good reference for mapping the GPIO pin numbers to the bits in the GPIO6 register, can't find it in the TRM)
I'm using the latest kernel from koen's blog (kernel version 2.6.29-r44)
I think the next step for me is to go over the gpio.txt and gpio.h files in the kernel tree and see if they reveal anything. last resort i think is going to be to just load the entire disto into RAM (yay ramdisk) so no other system IO is needed and then mess around with DPLL3, 4, etc
Let me know if you figure anything out
--Jacob
oh, and i forgot to mention, i'm using the code-sorcery toolchain with pre-built rootfs from koen's blog, not the openembedded build system
Sorry for first kicking in on this thread now. But better late than never
:-) - I have been away from my BeagleBoard-list-account for like 6 weeks and
I'm now slowly catching up on the previous ~1.500 emails :-)
> Yeah, the TRM is a totally INSANE piece of work! 3700 pages! Nobody
> can possibly wade through all of that.
You are right - It's insane - Never the less I have been through most parts
of it at least twice (some of the chapters many more times) - But I have as
well spend the last ~7 years doing this - Starting with OMAP1 long time ago
:-)
> The GPMC turns out to be used to communicate with the NAND flash memory
> chip that is piggybacked on top of the CPU, so it is not available for
other things.
Even though the GPMC is connected to the NAND it can be used to communicate
with other devices and well, since it have several Chip Selects, which can
be mapped to different memory regions and configured individually. But you
are right: You won't have exclusive access to the GPMC - That being said the
GPMC isn't accessible at Beagle, so it isn't relevant :-)
> It may also be that the bottleneck is somewhere else, in the L3
interconnect,
> L4 interconnect, or IO firewall.
The L4, L3 and IO firewalls won't be the bottlenecks. It's unfortunately the
GPIO module itself, which isn't made for the purpose you would like. I.e.
it's *not* supposed to be used as a 8-bit parallel IO bus interface, but to
be used as single GPIOs for control on their own.
In case you need a bus interface in OMAP3 you need to use either the GPMC
(IO), ISP (I), LCD (O), or MMC (IO) interface. The newly introduced OMAP
L138 have a Universal Parallel Port (uPP), which is basically what you want
but to be honest I don't know that much about this one yet, since it's still
relatively new in the OMAP world and I haven't dealt with it yet :-)
So the short answer to your GPIO trouble is: You won't (unfortunately) be
able to go higher than the ~4MHz you have found - It's limited by the IP
block design AFAIK - I know this isn't the answer you are searching for, but
unfortunately it's the truth :-)
Hope you find another way around this. Using the MMC interface together with
a FPGA for converting into the format you need should bring you the ability
to go to 8-bit@48MHz minus the MMC protocol overhead. This might be a
solution while still utilizing the BeagleBoard? Alternative you can access
the GPMC on an Gumstix Overo board, but again this requires you to add
extra/other HW to your setup.
Best regards - Sorry about the bad news :-) - Good luck
Søren
---
SSC Solutions ApS - Denmark - www.ssc-solutions.dk
> Oh, I see you CAN
> get to all 8 data bits on MMC2 of the Beagle's expansion header. That
> would certainly
> handle the data rate, but I don't know ANYTHING about the interface.
> This is not
> a job for long block transfers, some will be as short as write one
> address, read one
> byte. The longest block transfer will be write one address, read 12
> bytes. So, the
> MMC may not be a great help there, if the setup of the controller
> takes a lot of time.
Hmm - MMC is really designed for longer transfers, although you can do short
transfers as well. It's though not designed for a write/ack kind of
communication and you will get a severe protocol overhead hit (around 5-10
bytes pr write AFAIR => You are again down around the 4MHz). The way you
communicate in MMC is, that you need to write all the data in one MMC
package, and then the respondent will indicate if the data is received
correctly (by a CRC calculation) afterwards. This was a very simplified and
rough explanation, but in short it doesn’t fit your type of EPP
communication very well, and you would need to have a FPGA in between doing
some kind of protocol conversion.
Setting up and restarting the MMC module between transfers doesn't take
long. AFAIR it's just a matter of feeding the data you want to send into the
MMC FIFO, programming the MMC packet type and setting a start-bit (again a
very rough simplification), but you should be able to do packages at a
reasonable speed, but the package overhead itself will "kill you" -
Unfortunately
The above being said I think you best option for something like this really
is to utilize either the GPMC bus (on an Gumstix Overo or similar) or the
uPP interface on an OMAP L138 which is designed for this kind of
communication AFAIK...
The Beagleboard really isn't very capable of a task like the one you need -
Unfortunately...