Using a GPIO in Linux
Almost all function pins of a SOC are GPIO ( General Purpose Input Output).
They can be configured to serve as a simple input, output or with a special function (i.e. I2C or UART).
Most pins can be configured with additional settings like drive-strength, pull-up or -down, keeper, etc.
Using a GPIO from Command Line
As already mentioned a pin can be configured to serve as GPIO or as a special function.
The following commands only work as expected, when the pin is configured as GPIO!
Path in Sysfs:
/sys/class/gpioFirst thing to do, is to export control of a GPIO to userspace by writing its number to 'export':
$ echo 68 > /sys/class/gpio/exportThis will create an entry for gpio3.IO[4] = ((bank-1)*32)+pin = ((3-1)*32)+4 = 68 at:
/sys/class/gpio/gpio68To reverse the effect of exporting GPIO 68 to userspace call:
$ echo 68 > /sys/class/gpio/unexportConfigure GPIO as Input
$ echo in > /sys/class/gpio/gpio68/directionRead GPIO level
$ cat /sys/class/gpio/gpio68/valueConfigure GPIO as Output
$ echo out > /sys/class/gpio/gpio68/directionInstead of using 'out', you can use 'low' and 'high' to ensure glitch free initialization:
$ echo high > /sys/class/gpio/gpio68/direction$ echo low > /sys/class/gpio/gpio68/directionWrite GPIO level
Set pin low:
$ echo 0 > /sys/class/gpio/gpio68/valueSet pin high:
$ echo 1 > /sys/class/gpio/gpio68/valueTrizeps VII & Trizeps VIII GPIOs
SODIMM | Name | ||
|---|---|---|---|
1 | MIC_OUT |
|
|
2 | AD3 |
|
|
3 | MIC_GND |
|
|
4 | AD2 |
|
|
5 | LINEIN_L |
|
|
6 | AD1 |
|
|
7 | LINEIN_R |
|
|
8 | AD0 |
|
|
9 | AGND |
|
|
10 | VDDA |
|
|
11 | AGND |
|
|
12 | VDDA |
|
|
13 | HEADPHONE_GND |
|
|
14 | TSPX |
|
|
15 | HEADPHONE_L |
|
|
16 | TSMX |
|
|
17 | HEADPHONE_R |
|
|
18 | TSPY |
|
|
19 | UART3_RXD | gpio4.IO[7] | gpio5.IO[6] |
20 | TSMY |
|
|
21 | UART3_TXD | gpio4.IO[6] | gpio5.IO[7] |
22 | VDD_OTP |
| gpio5.IO[8] |
23 | UART1_DTR | gpio7.IO[7] | gpio3.IO[19] |
24 | BATT |
| gpio5.IO[9] |
25 | UART1_CTS | gpio7.IO[3] | gpio5.IO[27] |
26 | RESET_IN | gpio2.IO[7] |
|
27 | UART1_RTS | gpio7.IO[2] | gpio5.IO[26] |
28 | SPEAKER_P |
|
|
29 | UART1_DSR | gpio6.IO[14] | gpio3.IO[20] |
30 | SPEAKER_L |
|
|
31 | UART1_DCD | gpio6.IO[15] | gpio4.IO[21] |
32 | UART2_CTS | gpio7.IO[5] | gpio5.IO[29] |
33 | UART1_RXD | gpio7.IO[1] | gpio5.IO[22] |
34 | UART2_RTS | gpio7.IO[4] | gpio5.IO[28] |
35 | UART1_TXD | gpio7.IO[0] | gpio5.IO[23] |
36 | UART2_RXD | gpio6.IO[18] | gpio5.IO[24] |
37 | UART1_RI | gpio1.IO[5] | gpio4.IO[22] |
38 | UART2_TXD | gpio6.IO[17] | gpio5.IO[25] |
39 | GND |
|
|
40 | VCC |
|
|
41 | GND |
|
|
42 | VCC |
|
|
43 | IRQ_SP43 | gpio2.IO[6] | gpio1.IO[7] |
44 | LCD_DE | gpio4.IO[17] |
|
45 | SP45 | gpio2.IO[3] | gpio3.IO[4] |
46 | LCD_D07 | gpio4.IO[28] |
|
47 | SD2_CLK | gpio1.IO[10] | gpio2.IO[13] |
48 | LCD_D09 | gpio4.IO[30] |
|
49 | CIF_DATA0 | gpio5.IO[30] | gpio4.IO[2] |
50 | LCD_D11 | gpio5.IO[5] |
|
51 | SD2_DATA3 | gpio1.IO[12] | gpio2.IO[18] |
52 | LCD_D12 | gpio5.IO[6] |
|
53 | CIF_DATA1 | gpio5.IO[31] | gpio4.IO[3] |
54 | LCD_D13 | gpio5.IO[7] |
|
55 | SP55 | gpio2.IO[5] | gpio3.IO[21] |
56 | LCD_PCLK | gpio4.IO[16] |
|
57 | CIF_DATA2 | gpio6.IO[0] | gpio4.IO[4] |
58 | LCD_D03 | gpio4.IO[24] |
|
59 | SD2_CARD_DETECT | gpio1.IO[4] | gpio2.IO[12] |
60 | LCD_D02 | gpio4.IO[23] |
|
61 | CIF_DATA3 | gpio6.IO[1] | gpio4.IO[5] |
62 | LCD_D08 | gpio4.IO[29] |
|
63 | CIF_DATA4 | gpio6.IO[2] | gpio4.IO[6] |
64 | LCD_D15 | gpio5.IO[9] |
|
65 | CIF_DATA5 | gpio6.IO[3] | gpio4.IO[7] |
66 | LCD_D14 | gpio5.IO[8] |
|
67 | CIF_DATA6 | gpio6.IO[4] | gpio4.IO[8] |
68 | LCD_HSYNC | gpio4.IO[18] |
|
69 | PWM1 | gpio6.IO[9] | gpio5.IO[2] |
70 | LCD_D01 | gpio4.IO[22] |
|
71 | CIF_DATA7 | gpio6.IO[5] | gpio4.IO[9] |
72 | LCD_D05 | gpio4.IO[26] |
|
73 | CIF_DATA8 / Backlight_Enable | gpio4.IO[20] | gpio3.IO[22] |
74 | LCD_D10 | gpio4.IO[31] |
|
75 | CIF_DATA9 / SP75 | gpio5.IO[28] | gpio3.IO[23] |
76 | LCD_D00 | gpio4.IO[21] |
|
77 | PWM2 |