Skip to content

Commit

Permalink
Using a marked up README
Browse files Browse the repository at this point in the history
  • Loading branch information
Scott Ellis committed Feb 19, 2011
1 parent 93e86a0 commit de4e220
Showing 1 changed file with 34 additions and 7 deletions.
41 changes: 34 additions & 7 deletions README → README.md
@@ -1,5 +1,11 @@
overo-irqlat
=============

Overview
-------

A linux module to measure gpio irq latency and the time it takes to toggle a
gpio pin in an OMAP3 kernel.
gpio pin in an OMAP3 kernel.

The test requires an oscope to do the actual measurements and two gpio pins
jumpered together. The pins are assumed to be already mux'd as GPIO and not
Expand All @@ -23,8 +29,15 @@ IRQ_PIN ---- TP ---- TEST_PIN
oscope


Build
-------

There is a file you can source to set up the environment for building using
the OE tools configured the standard gumstix way.


Run
-------

Build the module, insert it and then write 1 to do an irq latency test or
anything else to do a gpio toggle speed test.
Expand All @@ -45,14 +58,26 @@ Set your scope to trigger on a rising signal.
The program sets up IRQ_PIN as an input and irq enables it for an
IRQ_TRIGGER_RISING signal.

I last tested with a 2.6.36 kernel and two Overo COMs, one 720 MHz Tide

Results
-------

The latest test was with a 2.6.36 kernel and two Overo COMs, one 720 MHz Tide
and one 500 MHz board.

The same tftp booted kernel, nfs root filesystem and Tobi expansion board was
used for both COMs. Only the boot.scr on the SD card specifying the different
mpurates was different.

For the irq latency test, the program raises TEST_PIN and in the IRQ_PIN irq
handler, it lowers TEST_PIN again. The difference between the rise and fall of
TEST_PIN is the irq latency, minus the time the gpio_set() call takes. I get
values in the neighborhood of 8-9 usecs for either board. There is a good usec
variation in this test, sometimes up to 10 usecs for either board.
TEST_PIN is what I am calling the irq latency. This ignores the time the
gpio_set() call takes, but you can see from the next test that it is negligble
for this measurement.

I get values in the neighborhood of 8-9 usecs for either board. There is a good
amount of variation in this test. It sometimes takes up to 10 usecs for either
board, but never under 8 usecs.

Refer to the *_gpio-irq-latency.png screenshots.

Expand All @@ -62,8 +87,10 @@ again for 1000 iterations. You can watch with an oscope the time this takes.

Refer to the *-gpio-toggle-1000.png screenshots.

For the 500 MHz system, ~420 usecs for 1000 cycles = ~210 nsecs to change state
For the 720 MHz system, ~290 usecs for 1000 cycles = ~145 nsecs to change state
Here are the measurements I get.

500 MHz COM: ~420 usecs for 1000 cycles = ~210 nsecs to change state = ~4.76 MHz
720 MHz COM: ~290 usecs for 1000 cycles = ~145 nsecs to change state = ~6.90 MHz


See the source code for more details.
Expand Down

0 comments on commit de4e220

Please sign in to comment.