回答編集履歴

1

コメント欄のまとめ

2019/09/05 11:51

投稿

nomuken
nomuken

スコア1627

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であり、機能をサポートしていなかった。