0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ultra96V2+Debian環境でのPSのGPIO制御メモ

Last updated at Posted at 2021-04-03

はじめに

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?