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 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 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 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 oscope




Build
-------

There is a file you can source to set up the environment for building using There is a file you can source to set up the environment for building using
the OE tools configured the standard gumstix way. 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 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. 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 The program sets up IRQ_PIN as an input and irq enables it for an
IRQ_TRIGGER_RISING signal. 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. 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 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 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 TEST_PIN is what I am calling the irq latency. This ignores the time the
values in the neighborhood of 8-9 usecs for either board. There is a good usec gpio_set() call takes, but you can see from the next test that it is negligble
variation in this test, sometimes up to 10 usecs for either board. 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. 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. Refer to the *-gpio-toggle-1000.png screenshots.


For the 500 MHz system, ~420 usecs for 1000 cycles = ~210 nsecs to change state Here are the measurements I get.
For the 720 MHz system, ~290 usecs for 1000 cycles = ~145 nsecs to change state
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. See the source code for more details.
Expand Down

0 comments on commit de4e220

Please sign in to comment.