回答編集履歴
1
コメント欄のまとめ
test
CHANGED
@@ -7,3 +7,37 @@
|
|
7
7
|
サポートしていなければ"/sys/class/gpio/gpioXX/edge"へ書き込みを行ったとき、エラーになります。
|
8
8
|
|
9
9
|
この操作は成功しましたか?
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
# 2019-09-05時点でのまとめ
|
14
|
+
|
15
|
+
※コメント欄に貴重な情報が散在しているのでまとめておきます。新たな情報はありません。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
■ハードウェアは目的の機能を満たすための能力を持っているか?
|
20
|
+
|
21
|
+
→持っている。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
GPIOのレベル変化のイベントを受け取るためにはポートが割り込みをサポートしている必要がる。
|
26
|
+
|
27
|
+
以下の2点からサポートしていると判断した
|
28
|
+
|
29
|
+
* "/sys/class/gpio/gpioXX/edge"への書き込みがエラーにならなかった。(Linux Kernelの実装によると割り込みをサポートしていない場合、書き込みに失敗する)
|
30
|
+
|
31
|
+
* レベル変化をさせてみたところ、割り込み発生回数が変化した。実際に割り込みをハンドリングしている。(割り込み発生回数は`cat /proc/interrupts`で確認できる。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
■ソフトウェアは目的の機能を満たすための能力を持っているか?
|
36
|
+
|
37
|
+
→持っていなかった。 Linux Kernelのバージョンを3.16.*以上にする必要がある。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
Qtの`QFileSystemWatcher`はLinuxのinotify機能を使ってファイルの内容変化などを検出する。
|
42
|
+
|
43
|
+
GPIOのレベル変化は`/sys/class/gpio/gpioXX/value`の内容変化であり、使えそうな気がするが実際は通常のファイルとは異なるため、Kernelによる個別対応が必要となる。その対応が行われたのがLinux Kernel 3.16.*である。しかし、使用していたLinux Kernelは3.4.5であり、機能をサポートしていなかった。
|