読者です 読者をやめる 読者になる 読者になる

アルペンスキータイミングシステム開発中

アルペンスキー用のタイム測定器を開発しようとしています。

node wiring-piでsuperagentが動かない

早速nodeでRESTでデータを送信しようと思ったらwiring-piの割り込みからsuperagentでの送信がうまくいかない。

仕方がないので他を探してみると結構ある。

  • onoff
  • gpio
  • ri-gpio
  • rpi-gpio
  • rpio

onoff

延滞も問題なし。superagentの動作も問題ないのでこれで決まり。

2016-05-27 07:54:02.0010 (739)
2016-05-27 07:54:03.0000 (934)
2016-05-27 07:54:04.0000 (996)
2016-05-27 07:54:05.0000 (1000)
2016-05-27 07:54:06.0000 (1000)
2016-05-27 07:54:07.0000 (999)
2016-05-27 07:54:08.0000 (999)
2016-05-27 07:54:09.0000 (999)
2016-05-27 07:54:10.0000 (999)

gpio

www.npmjs.com

EventEmitterを使ってることからあんまり期待しなかったが延滞が500ms位ある。 root無しでも動作する。

2016-05-26 22:22:25.0380 (1140)
2016-05-26 22:22:26.0420 (944)
2016-05-26 22:22:27.0510 (1001)
2016-05-26 22:22:28.0520 (1000)
2016-05-26 22:22:29.0610 (1008)
2016-05-26 22:22:30.0670 (1005)

pi-gpio

www.npmjs.com

割り込みに対応していないので評価無し

rpi-gpio

延滞が10msぐらい。

2016-05-26 23:06:31.0060 (692)
2016-05-26 23:06:32.0010 (997)
2016-05-26 23:06:33.0010 (1000)
2016-05-26 23:06:34.0010 (1000)
2016-05-26 23:06:35.0010 (1000)
2016-05-26 23:06:36.0010 (1000)
2016-05-26 23:06:37.0010 (1000)
2016-05-26 23:06:38.0010 (1000)

rpio

延滞は少ないが致命的な問題がある。

2016-05-26 23:10:37.0000 (294)
2016-05-26 23:10:38.0000 (943)
2016-05-26 23:10:39.0010 (997)
2016-05-26 23:10:40.0000 (999)
2016-05-26 23:10:41.0010 (1001)
2016-05-26 23:10:42.0000 (999)
2016-05-26 23:10:43.0000 (999)
2016-05-26 23:10:44.0010 (1000)
2016-05-26 23:10:45.0000 (998)
2016-05-26 23:10:46.0000 (999)

しかしこれを起動するとログに下のようなのが出てそのあとスタックダンプが表示される。その後chronyの時間がおかしくなるのでgpioの割り込みのirqが重複しているのか?

kernel: [29796.056340] irq 79: nobody cared (try booting with the "irqpoll" option)
kernel: [29796.056357] CPU: 0 PID: 5020 Comm: node Not tainted 4.4.10-v7+ #2
kernel: [29796.056362] Hardware name: BCM2709
.....
kernel: [29796.056581] [<8033f5f8>] bcm2835_gpio_irq_handler
kernel: [29796.056587] Disabling IRQ #79
chronyd[878]: Selected source GPS
chronyd[878]: Selected source PPS1
chronyd[878]: Selected source GPS
chronyd[878]: Selected source PPS1
chronyd[878]: Selected source GPS