Changes between Version 17 and Version 18 of gpio


Ignore:
Timestamp:
08/27/2019 05:13:57 PM (3 months ago)
Author:
Tim Harvey
Comment:

added GPIO performance data

Legend:

Unmodified
Added
Removed
Modified
  • gpio

    v17 v18  
    258258
    259259
     260[=#performance]
     261= GPIO performance
     262GPIO performance in terms of latency and frequency at which you can toggle them depends on the GPIO Controller (ie IMX6 SoC ARM GPIO, OcteonTX SoC ARM GPIO, PCA9555 I2C GPIO, FTDI USB UART GPIO) as well as the API used to direct them (ie gpio chardev, sysfsgpio, or direct memory registers in the case of SoC GPIO controllers).
     263
     264Here is a table showing some max frequencies that GPIO's can be toggled across different platforms:
     265||= Controller                    =||= API     =||= Speed =||= Notes =||
     266|| IMX6DL@800Mhz ARM GPIO  || sysfsgpio || 46.3kHz || ||
     267||                         || chardev   || 140kHz  || ||
     268||                         || registers || 870kHz  || ||
     269|| ||
     270|| IMX6DL@800MHz FTDI GPIO || sysfsgpio || 1.0kHz  || GPIO over USB ||
     271||                         || chardev   || 1.33kHz || GPIO over USB ||
     272|| ||
     273|| IMX6Q@1000Mhz ARM GPIO  || sysfsgpio || 73kHz   || ||
     274||                         || chardev   || 255kHz  || ||
     275||                         || registers || 805kHz  || not clear why this was slower than IMX6DL@800MHz ||
     276|| ||
     277|| OcteonTX-Dual@800MHz ARM GPIO || sysfsgpio || 200kHz || 4x faster than IMX6DL@800Mhz ||
     278||                         || chardev   || 580MHz || 4x faster than IMX6DL@800Mhz ||
     279|| ||
     280|| OcteonTX-Quad@1500MHz ARM GPIO || sysfsgpio || 375kHz || ||
     281||                         || chardev   || 1.08MHz || 2.8X faster than
     282|| ||
     283|| OcteonTX-Quad@1500MHz FTDI GPIO || sysfsgpio || 5.4kHz || GPIO over USB ||
     284||                                 || chardev   || 6.2kHz || GPIO over USB ||
     285||
     286 * The above tests were changing the output value of a GPIO between 0 and 1 (not evaluating time it took to change between input/output direction)
     287 * Note that the FT231X and FT232H were evaluated for FTDI gpio and both performed identically (despite the FT231X being a USB full speed device and the FT232H being a USB high speed device)
     288 * Note that same speed OcteonTX SoC GPIO performs ~4x faster than same speed IMX6
     289 * Note that GPIO chardev is the recomended kernel API for GPIO as sysfsgpio is now deprecated
     290 * GPIO performance over I2C (ie PCA9555) was not evaluated
     291
     292
    260293[=#gpiolib]
    261294= Linux GPIO