はじめに
Ultra96V2ボード + Debian環境で PSのGPIOを弄りたかったのですが、Linuxからのやり方や、番号の対応がよくわからなかったので、少し調べてみたメモ書きです(自信のないところも多いですが)。
rootで操作
以下 sudo su などで root になってから操作する前提で説明しております。
sudo を使う場合は sudo sh -c "echo hoge > hogehoge" などとしないとリダイレクト部分で権限が戻ってしまうので注意が必要です。
GPIO の制御
例として40ピンのLS拡張コネクタのに出てきている MIO36_PS_GPIO1_0 (23番ピン) を操作する場合
echo "36" > /sys/class/gpio/export
とすると /sys/class/gpio/gpio36 が出現するので
echo "out" > /sys/class/gpio/gpio36/direction
echo "1" > /sys/class/gpio/gpio36/value
のようにすると出力に切り替えて1が書き込めるようです。
echo "36" > /sys/class/gpio/unexport
とすると削除できます。
LED の点灯
LEDの場合、gpio-keys が制御しているので
echo "1" > /sys/class/leds/ds5/brightness
で点灯し
echo "0" > /sys/class/leds/ds5/brightness
で消灯します。
番号対応
ざっくり調べた範囲の番号対応です。
TRMに "78 GPIO signals for device pins, 96 GPIO channels between PS and PL, programmable interrupt on individual GPIO channel." と書かれていますのでそのまま 78+96 = 174個という事なのだと思います。
/sys/class/gpio/export したら出現してくれたものを一覧にしていますが、当然ながら他の用途に利用中のものを操作してしまうと何が起こるかわかりませんので注意して利用しましょう。
ちなみにVivadoのブロックデザイナでPLへのGPIOのアサイン可能な数は pl_resetn の使用個数で変わるようです。
No. | 16進 | path | name | 備考 |
---|---|---|---|---|
0 | 0x00 | /sys/class/gpio/gpio0 | UART1_TX | |
1 | 0x01 | /sys/class/gpio/gpio1 | UART1_RX | |
2 | 0x02 | /sys/class/gpio/gpio2 | UART0_RX | |
3 | 0x03 | /sys/class/gpio/gpio3 | UART0_TX | |
4 | 0x04 | /sys/class/gpio/gpio4 | I2C1_SCL | |
5 | 0x05 | /sys/class/gpio/gpio5 | I2C1_SDA | |
6 | 0x06 | /sys/class/gpio/gpio6 | SPI1_SCLK | |
7 | 0x07 | /sys/class/gpio/gpio7 | RADIO_RST_N | wilc_sdio |
8 | 0x08 | /sys/class/gpio/gpio8 | RADIO_EN | wilc_sdio |
9 | 0x09 | /sys/class/gpio/gpio9 | SPI1_CS | |
10 | 0x0A | /sys/class/gpio/gpio10 | SPI1_MISO | |
11 | 0x0B | /sys/class/gpio/gpio11 | SPI1_MOSI | |
12 | 0x0C | /sys/class/gpio/gpio12 | I2C_MUX_RESET | |
13 | 0x0D | /sys/class/gpio/gpio13 | SD0_DAT0 | |
14 | 0x0E | /sys/class/gpio/gpio14 | SD0_DAT1 | |
15 | 0x0F | /sys/class/gpio/gpio15 | SD0_DAT2 | |
16 | 0x10 | /sys/class/gpio/gpio16 | SD0_DAT3 | |
17 | 0x11 | /sys/class/leds/ds5 | PS_LED3 | |
18 | 0x12 | /sys/class/leds/ds4 | PS_LED2 | |
19 | 0x13 | /sys/class/leds/ds3 | PS_LED1 | |
20 | 0x14 | /sys/class/leds/ds2 | PS_LED0 | 別用途に使われている? |
21 | 0x15 | /sys/class/gpio/gpio21 | SD0_CMD | |
22 | 0x16 | /sys/class/gpio/gpio22 | SD0_CLK | |
23 | 0x17 | GPIO_PB | sw4(gpio-keys) | |
24 | 0x18 | /sys/class/gpio/gpio24 | SD0_DETECT | |
25 | 0x19 | /sys/class/leds/vbus_det | VBUS_DET | |
26 | 0x1A | /sys/class/gpio/gpio26 | POWER_INT | ltc2954 |
27 | 0x1B | /sys/class/gpio/gpio27 | DP_AUX | |
28 | 0x1C | /sys/class/gpio/gpio28 | DP_HPD | |
29 | 0x1D | /sys/class/gpio/gpio29 | DP_OE | |
30 | 0x1E | /sys/class/gpio/gpio30 | DP_AUX_IN | |
31 | 0x1F | /sys/class/gpio/gpio31 | INA226_ALERT | |
32 | 0x20 | /sys/class/gpio/gpio32 | PS_FP_PWR_EN | |
33 | 0x21 | /sys/class/gpio/gpio33 | PL_PWR_EN | |
34 | 0x22 | /sys/class/gpio/gpio34 | POWER_KILL | ltc2954 |
35 | 0x23 | /sys/class/gpio/gpio35 | - | ltc2954 |
36 | 0x24 | /sys/class/gpio/gpio36 | GPIO-A | |
37 | 0x25 | /sys/class/gpio/gpio37 | GPIO-B | |
38 | 0x26 | /sys/class/gpio/gpio38 | SPI0_SCLK | |
39 | 0x27 | /sys/class/gpio/gpio39 | GPIO-C | |
40 | 0x28 | /sys/class/gpio/gpio40 | GPIO-D | |
41 | 0x29 | /sys/class/gpio/gpio41 | SPI0_CS | |
42 | 0x2A | /sys/class/gpio/gpio42 | SPI0_MISO | |
43 | 0x2B | /sys/class/gpio/gpio43 | SPI_MOSI | |
44 | 0x2C | /sys/class/gpio/gpio44 | GPIO-E | |
45 | 0x2D | /sys/class/gpio/gpio45 | GPIO-F | |
46 | 0x2E | /sys/class/gpio/gpio46 | SD1_D0 | |
47 | 0x2F | /sys/class/gpio/gpio47 | SD1_D1 | |
48 | 0x30 | /sys/class/gpio/gpio48 | SD1_D2 | |
49 | 0x31 | /sys/class/gpio/gpio49 | SD1_D3 | |
50 | 0x32 | /sys/class/gpio/gpio50 | SD1_CMD | |
51 | 0x33 | /sys/class/gpio/gpio51 | SD1_CLK | |
52 | 0x34 | /sys/class/gpio/gpio52 | USB0_CLK | |
53 | 0x35 | /sys/class/gpio/gpio53 | USB0_DIR | |
54 | 0x36 | /sys/class/gpio/gpio54 | USB0_DATA2 | |
55 | 0x37 | /sys/class/gpio/gpio55 | USB0_NXT | |
56 | 0x38 | /sys/class/gpio/gpio56 | USB0_DATA0 | |
57 | 0x39 | /sys/class/gpio/gpio57 | USB0_DATA1 | |
58 | 0x3A | /sys/class/gpio/gpio58 | USB0_STP | |
59 | 0x3B | /sys/class/gpio/gpio59 | USB0_DATA3 | |
60 | 0x3C | /sys/class/gpio/gpio60 | USB0_DATA4 | |
61 | 0x3D | /sys/class/gpio/gpio61 | USB0_DATA5 | |
62 | 0x3E | /sys/class/gpio/gpio62 | USB0_DATA6 | |
63 | 0x3F | /sys/class/gpio/gpio63 | USB0_DATA7 | |
64 | 0x40 | /sys/class/gpio/gpio64 | USB1_CLK | |
65 | 0x41 | /sys/class/gpio/gpio65 | USB1_DIR | |
66 | 0x42 | /sys/class/gpio/gpio66 | USB1_DATA2 | |
67 | 0x43 | /sys/class/gpio/gpio67 | USB1_NXT | |
68 | 0x44 | /sys/class/gpio/gpio68 | USB1_DATA0 | |
69 | 0x45 | /sys/class/gpio/gpio69 | USB1_DATA1 | |
70 | 0x46 | /sys/class/gpio/gpio70 | USB1_STP | |
71 | 0x47 | /sys/class/gpio/gpio71 | USB1_DATA3 | |
72 | 0x48 | /sys/class/gpio/gpio72 | USB1_DATA4 | |
73 | 0x49 | /sys/class/gpio/gpio73 | USB1_DATA5 | |
74 | 0x4A | /sys/class/gpio/gpio74 | USB1_DATA6 | |
75 | 0x4B | /sys/class/gpio/gpio75 | USB_DATA7 | |
76 | 0x4C | /sys/class/gpio/gpio76 | WLAN_IRQ | wilc_sdio |
77 | 0x4D | /sys/class/gpio/gpio77 | PMIC_IRQ | |
78 | 0x4E | /sys/class/gpio/gpio78 | PL GPIO0 | |
79 | 0x4F | /sys/class/gpio/gpio79 | PL GPIO1 | |
80 | 0x50 | /sys/class/gpio/gpio80 | PL GPIO2 | |
81 | 0x51 | /sys/class/gpio/gpio81 | PL GPIO3 | |
82 | 0x52 | /sys/class/gpio/gpio82 | PL GPIO4 | |
83 | 0x53 | /sys/class/gpio/gpio83 | PL GPIO5 | |
84 | 0x54 | /sys/class/gpio/gpio84 | PL GPIO6 | |
85 | 0x55 | /sys/class/gpio/gpio85 | PL GPIO7 | |
86 | 0x56 | /sys/class/gpio/gpio86 | PL GPIO8 | |
87 | 0x57 | /sys/class/gpio/gpio87 | PL GPIO9 | |
88 | 0x58 | /sys/class/gpio/gpio88 | PL GPIO10 | |
89 | 0x59 | /sys/class/gpio/gpio89 | PL GPIO11 | |
90 | 0x5A | /sys/class/gpio/gpio90 | PL GPIO12 | |
91 | 0x5B | /sys/class/gpio/gpio91 | PL GPIO13 | |
92 | 0x5C | /sys/class/gpio/gpio92 | PL GPIO14 | |
93 | 0x5D | /sys/class/gpio/gpio93 | PL GPIO15 | |
94 | 0x5E | /sys/class/gpio/gpio94 | PL GPIO16 | |
95 | 0x5F | /sys/class/gpio/gpio95 | PL GPIO17 | |
96 | 0x60 | /sys/class/gpio/gpio96 | PL GPIO18 | |
97 | 0x61 | /sys/class/gpio/gpio97 | PL GPIO19 | |
98 | 0x62 | /sys/class/gpio/gpio98 | PL GPIO20 | |
99 | 0x63 | /sys/class/gpio/gpio99 | PL GPIO21 | |
100 | 0x64 | /sys/class/gpio/gpio100 | PL GPIO22 | |
101 | 0x65 | /sys/class/gpio/gpio101 | PL GPIO23 | |
102 | 0x66 | /sys/class/gpio/gpio102 | PL GPIO24 | |
103 | 0x67 | /sys/class/gpio/gpio103 | PL GPIO25 | |
104 | 0x68 | /sys/class/gpio/gpio104 | PL GPIO26 | |
105 | 0x69 | /sys/class/gpio/gpio105 | PL GPIO27 | |
106 | 0x6A | /sys/class/gpio/gpio106 | PL GPIO28 | |
107 | 0x6B | /sys/class/gpio/gpio107 | PL GPIO29 | |
108 | 0x6C | /sys/class/gpio/gpio108 | PL GPIO30 | |
109 | 0x6D | /sys/class/gpio/gpio109 | PL GPIO31 | |
110 | 0x6E | /sys/class/gpio/gpio110 | PL GPIO32 | |
111 | 0x6F | /sys/class/gpio/gpio111 | PL GPIO33 | |
112 | 0x70 | /sys/class/gpio/gpio112 | PL GPIO34 | |
113 | 0x71 | /sys/class/gpio/gpio113 | PL GPIO35 | |
114 | 0x72 | /sys/class/gpio/gpio114 | PL GPIO36 | |
115 | 0x73 | /sys/class/gpio/gpio115 | PL GPIO37 | |
116 | 0x74 | /sys/class/gpio/gpio116 | PL GPIO38 | |
117 | 0x75 | /sys/class/gpio/gpio117 | PL GPIO39 | |
118 | 0x76 | /sys/class/gpio/gpio118 | PL GPIO40 | |
119 | 0x77 | /sys/class/gpio/gpio119 | PL GPIO41 | |
120 | 0x78 | /sys/class/gpio/gpio120 | PL GPIO42 | |
121 | 0x79 | /sys/class/gpio/gpio121 | PL GPIO43 | |
122 | 0x7A | /sys/class/gpio/gpio122 | PL GPIO44 | |
123 | 0x7B | /sys/class/gpio/gpio123 | PL GPIO45 | |
124 | 0x7C | /sys/class/gpio/gpio124 | PL GPIO46 | |
125 | 0x7D | /sys/class/gpio/gpio125 | PL GPIO47 | |
126 | 0x7E | /sys/class/gpio/gpio126 | PL GPIO48 | |
127 | 0x7F | /sys/class/gpio/gpio127 | PL GPIO49 | |
128 | 0x80 | /sys/class/gpio/gpio128 | PL GPIO50 | |
129 | 0x81 | /sys/class/gpio/gpio129 | PL GPIO51 | |
130 | 0x82 | /sys/class/gpio/gpio130 | PL GPIO52 | |
131 | 0x83 | /sys/class/gpio/gpio131 | PL GPIO53 | |
132 | 0x84 | /sys/class/gpio/gpio132 | PL GPIO54 | |
133 | 0x85 | /sys/class/gpio/gpio133 | PL GPIO55 | |
134 | 0x86 | /sys/class/gpio/gpio134 | PL GPIO56 | |
135 | 0x87 | /sys/class/gpio/gpio135 | PL GPIO57 | |
136 | 0x88 | /sys/class/gpio/gpio136 | PL GPIO58 | |
137 | 0x89 | /sys/class/gpio/gpio137 | PL GPIO59 | |
138 | 0x8A | /sys/class/gpio/gpio138 | PL GPIO60 | |
139 | 0x8B | /sys/class/gpio/gpio139 | PL GPIO61 | |
140 | 0x8C | /sys/class/gpio/gpio140 | PL GPIO62 | |
141 | 0x8D | /sys/class/gpio/gpio141 | PL GPIO63 | |
142 | 0x8E | /sys/class/gpio/gpio142 | PL GPIO64 | |
143 | 0x8F | /sys/class/gpio/gpio143 | PL GPIO65 | |
144 | 0x90 | /sys/class/gpio/gpio144 | PL GPIO66 | |
145 | 0x91 | /sys/class/gpio/gpio145 | PL GPIO67 | |
146 | 0x92 | /sys/class/gpio/gpio146 | PL GPIO68 | |
147 | 0x93 | /sys/class/gpio/gpio147 | PL GPIO69 | |
148 | 0x94 | /sys/class/gpio/gpio148 | PL GPIO70 | |
149 | 0x95 | /sys/class/gpio/gpio149 | PL GPIO71 | |
150 | 0x96 | /sys/class/gpio/gpio150 | PL GPIO72 | |
151 | 0x97 | /sys/class/gpio/gpio151 | PL GPIO73 | |
152 | 0x98 | /sys/class/gpio/gpio152 | PL GPIO74 | |
153 | 0x99 | /sys/class/gpio/gpio153 | PL GPIO75 | |
154 | 0x9A | /sys/class/gpio/gpio154 | PL GPIO76 | |
155 | 0x9B | /sys/class/gpio/gpio155 | PL GPIO77 | |
156 | 0x9C | /sys/class/gpio/gpio156 | PL GPIO78 | |
157 | 0x9D | /sys/class/gpio/gpio157 | PL GPIO79 | |
158 | 0x9E | /sys/class/gpio/gpio158 | PL GPIO80 | |
159 | 0x9F | /sys/class/gpio/gpio159 | PL GPIO81 | |
160 | 0xA0 | /sys/class/gpio/gpio160 | PL GPIO82 | |
161 | 0xA1 | /sys/class/gpio/gpio161 | PL GPIO83 | |
162 | 0xA2 | /sys/class/gpio/gpio162 | PL GPIO84 | |
163 | 0xA3 | /sys/class/gpio/gpio163 | PL GPIO85 | |
164 | 0xA4 | /sys/class/gpio/gpio164 | PL GPIO86 | |
165 | 0xA5 | /sys/class/gpio/gpio165 | PL GPIO87 | |
166 | 0xA6 | /sys/class/gpio/gpio166 | PL GPIO88 | |
167 | 0xA7 | /sys/class/gpio/gpio167 | PL GPIO89 | |
168 | 0xA8 | /sys/class/gpio/gpio168 | PL GPIO90 | |
169 | 0xA9 | /sys/class/gpio/gpio169 | PL GPIO91 | |
170 | 0xAA | /sys/class/gpio/gpio170 | PL GPIO92 | pl_resetnと兼用 |
171 | 0xAB | /sys/class/gpio/gpio171 | PL GPIO93 | pl_resetnと兼用 |
172 | 0xAC | /sys/class/gpio/gpio172 | PL GPIO94 | pl_resetnと兼用 |
173 | 0xAD | /sys/class/gpio/gpio173 | PL GPIO95 | pl_resetnと兼用 |
おしらせ
2020/10/30 にて Qrunch がサービス終了したので移転してきた記事となります。
一時退避場所:https://github.com/ryuz/qrunch_blog