LoginSignup
0
0

More than 1 year has passed since last update.

ユーザーランドのgpioイベント

Last updated at Posted at 2022-04-26

たまたま調べていて12-CURRENTの頃にgoogle summer of codeでユーザランドのgpioイベントが実装されている事に気がつきました。

このコードはFreeBSDのいくつかのシステムコールに対応していてINTRNGを使った仕組みのようです。開発時にはarmのSOCで確認していたようですが、mipsでもmediatekはINTRNGに対応しているので使えるのではないかと思いました。

従来はポーリングで状態変化を確認していましたが、あまり起きないイベントの場合、資源の少ないモジュールではコストがばかになりません。またポーリングの間隔によってはイベントを見逃す可能性もあります。

テストコードがtools/test/gpioeventsにあります。

いとしのRT3050(FON2305)用にZRouerでmipselをビルドしてみます。

WORLD_SUBDIRS+=tools/test/gpioevents

実行してみます。

# /usr/bin/gpioevents -f /dev/gpioc0 -s 12 er
time 1140.154975861 pin 12 state 1

ボタンを押して離すとプログラムが終了します。このボタンはプルアップされているので、離したときに、0->1の変化になり、それを拾います。

gpio_intr.png

ちゃんと見てないですがmips/mediatekのgpioは私がgpioppsのためにちょっといじっていて、それが効いているのかもしれません。

gpioeventsはshare/examplesに置いても良いように思います。

mrubyのmrbgemsでバインディングしたいな。

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