Armadilloフォーラム

IoTA6の拡張I/OボードでGPIO sysfs割り込み

y.nakamura

2021年8月25日 2時47分

中村です。

IoT A6のマニュアルに、拡張I/Oボード01の入出力には
IOエキスパンダを使用しているとの説明がありますが、
この入力ポートでsysfs割り込みを使用できますか?

--
なかむら

コメント

at_koseki

2021年8月26日 16時44分

古関です。

IOエキスパンダとSoC間はi2c接続なので
エキスパンダの入力を直接SoCで割り込みとして受けることはできません。

エキスパンタが出力する割り込み信号をSoCのPINに入力する回路になっており、
エキスパンタの入力ポートに変化があった時に、この割り込みが立つため、
これをSoC側で検出することは可能です。

ただ、エキスパンダ側には割り込みマスク等の機能がないため、
複数ある入力ポートのどれに変化があっても割り込みが立ってしまう制約があります。

そのため、無視したいポートに対しては、
いったん割り込みを受けてからソフト側でポートの値を読み
無視する・しないを判断する機構が必要になります。

y.nakamura

2021年8月26日 19時06分

中村です。

古関さん、丁寧な説明をいただき、ありがとうございます。

ある開発案件の打診があり、sysfsの割り込みを使えるかを
事前検討している段階で、私自身はA6を所有していません。
(受注になればお客様から借りるか自分で購入するかのどちらか)

このため、A6のマニュアルだけしか情報を持っていないのですが、
マニュアルに拡張ボードのGPIOでスリープからのwakeupができる
という説明がありましたので、現状のGPIOのドライバそのままでは
無理だとしても、なんらかの方法はあるかな?と思い、
質問をさせていただきました。
(これを最初に書いておけばよかったですね)

> エキスパンタが出力する割り込み信号をSoCのPINに入力する回路になっており、
> エキスパンタの入力ポートに変化があった時に、この割り込みが立つため、
> これをSoC側で検出することは可能です。

一番知りたかったのは、これです。ありがとうございます。

> そのため、無視したいポートに対しては、
> いったん割り込みを受けてからソフト側でポートの値を読み
> 無視する・しないを判断する機構が必要になります。

入力ポートは2つしかないので、この制限は、
負荷をそれほどかけることなくなんとかなるかな、と思いました。

ありがとうございました。

--
なかむら