開発ノート (91)

川内 康雄

Raspberry PiでIoTなIT:WheezyとJessieで割り込み性能に違いはあるのか

Raspberry PiでIoTなシステム開発:リアルタイムパッチは割り込みでも効果を発揮するのか先日最新のJessieを使って割り込みレスポンスを実験してみた所なのですが、カーネルの違いで決定論的動作や応答性に違いがあるのか実験してみるべく、Wheezyでも同じ実験をやってみました。結果はこちら。カーネルのバージョン違いで大きな違いが出るわけないのだけれどという想定での実験です。 [埋め込み: https://www.youtube.com/embed/e2Ni51u1Mnc] 流石にこちらは想定通り、結果はまず変わりません。時々大きな遅延が出ているようなのですが、これを定量的に計測しようとするとマイコン側に再度入力して測定をしないといけないですね。負荷用のコマンドはこれです。 pi@navio-rpi ~ $ stress --cpu 99 --vm 2 --timeout 10m 念のため大拡大版を。 [埋め込み: https://www.youtube.com/embed/1FmXSB2xkmg] [埋め込み: https://www.youtube.com/embed/UbMifx6_9rM] preempt_rt有りの方がぶれ幅が少ないように見えます。ただ遅延が3〜4割減ですね。リアルタイム優先度の決定プロセスが大分と性能に影響を与えているのだと思います。タイムスライスの短縮化も影響しているのでしょう。他のタスクの性能にも影響を与えるはずです。リアルタイムタスクだけでシステムを作るわけでは無いので、システム全体の目的から考えて、どの程度の遅延を許容できるのかという観点から判断をしたいと思います。今回のぼっちプロジェクトでは「ぎりぎりのリアルタイム性能よりはシステム全体のパフォーマンス優先で」いきたいと思います。”””

Continue reading...
川内 康雄

Raspberry PiでIoTなシステム開発:RASPBIAN JESSIEで同じ事をやってみる アクセスポイント化

Raspberry PiでIoTなシステム開発:ワイヤレスアクセスポイントとして動作させるまで(改訂版)RASPBIAN WHEEZYさあ今度はJESSIE-LITEで挑戦です。基本前のコンテンツをコピーして書いているのですが、余りにそのままだとGoogleからコピーコンテンツを作ったと怒られそうなので、適宜単語を代えています。 Raspbianのダウンロードサイト一週間前にリリースされたばかりでなんだかbleedingな感じですが、挑戦してみます。これを使います。ローカルでunzip。場所はちゃんと覚えておく。 df -h これでSDが刺さっているドライブのデバイス名をメモ。 sudo dd bs=1m if=~/Downloads/2014-09-09-wheezy-raspbian/2014-09-09-wheezy-raspbian.img of=/dev/rdisk3 eLinuxは1Mになっているけれどもエラーになる。1mで実行。ifはunzipしたイメージを指定。of以下のrdiskxのxはデバイス名の数字disk3s1の3の方に置き換える。 kawauchiyasuo-no-MacBook-Pro:~ yasuo$ sudo dd bs=1m if=Documents/mbed/2016-02-03-raspbian-jessie-lite.img of=/dev/rdisk5Password:1392+0 records in1392+0 records out1459617792 bytes transferred in 89.000006 secs (16400199 bytes/sec) LITEはサイズが小さいので早いです。 Raspberry PiでIoTなシステム開発:OSXのインターネット共有でIPを割り当ててログインMacのインターネット共有を利用してRaspberry PiにIPを振る。ただしアクセスは次項の通りホスト名で。 Raspberry PiでIoTなシステム開発:Raspberry Piにホスト名でアクセスするJESSIEもavahiが最初から導入されていました。bonjour browse等でサービスされている名称が分かります。OSXのターミナルからホスト名でログイン。 kawauchiyasuo-no-MacBook-Pro:~ yasuo$ ssh pi@raspberrypi.localThe authenticity of…

Continue reading...
川内 康雄

Raspberry PiでIoTなIT:起動時dhcpcdによる無線LANインターフェースへのIP割り当てが遅くてisc-dhcp-serverが起動に失敗する

Raspberry Piをアクセスポイント化するための仕上げとしてisc-dhcp-serverをインストールしたところ、serverコマンドだと起動できるのに、起動時には起動できないという問題が発生。 pi@raspberrypi:~ $ ps ax | grep dhcp 604 ? Ss 0:00 /sbin/dhcpcd -q -w 715 pts/0 S+ 0:00 grep --color=auto dhcp 色々と分析してみると、起動時にwlan0のIP割り当てよりも早くDHCPサーバーが起動開始してしまい、作動対象のwlan0が存在していなくて、起動に失敗している模様。 Feb 10 22:08:31 raspberrypi dhcpd: Internet Systems Consortium DHCP Server 4.3.1Feb 10 22:08:31 raspberrypi dhcpd: Copyright 2004-2014 Internet Systems Consortium.Feb 10…

Continue reading...
川内 康雄

Raspberry PiでIoTなシステム開発:libconfigを使ってみる

Cから作ったバイナリの挙動をコンパイルせずに変えたいので、コンフィギュレーションファイルを読み込む仕様にしようと思いたちましが。が、自分でパーサーを書くのは面倒くさい。そこで調べてみたのですが、この類のパーサーは山ほど有るんですね。とりあえず頻出になっているlibconfigを試用してみました。 マニュアルに何故か普通のインストール手順が書かれていません。半分推測でインストールしてみました。apt-getには無かったです。 pi@raspberrypi:~ $ wget http://www.hyperrealm.com/libconfig/libconfig-1.5.tar.gzpi@raspberrypi:~ $ tar zxvf libconfig-1.5.tar.gz pi@raspberrypi:~ $ cd libconfig-1.5/pi@raspberrypi:~/libconfig-1.5 $ ./configurepi@raspberrypi:~/libconfig-1.5 $ makepi@raspberrypi:~/libconfig-1.5 $ sudo make install サンプルファイルの実行 最初のmakeで既にビルドが終わっていました。 pi@raspberrypi:~ $ cd libconfig-1.5/examples/c/pi@raspberrypi:~/libconfig-1.5/examples/c $ ./example1Store name: Books, Movies & MoreTITLE AUTHOR PRICE QTYTreasure Island Robert Louis Stevenson $ 29.99 5Snow…

Continue reading...
川内 康雄

Raspberry PiでIoTなシステム開発:自分で書いたデーモンをinit.dで起動する

前回のシステムではrc.localにスクリプトを書いて起動していたのですが、これだと終了時に自動処理をさせることができきないのと、ランレベルに応じた処理ができません。それにinsservとかを使って登録できる方がなんとなく「システム管理」をしている感じがします。とりあえず最小限のスクリプトを先達の雛形に添って作成。ktdというのはこれから作成する予定のデーモンの名前です。実態は何もしない無限ループです。 #! /bin/sh### BEGIN INIT INFO# Provides: ktd - kawacchi timer daemon# Required-Start: $all# Required-Stop:# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: daemon for detect gpio rise and report via unix domain socket### END INIT INFOcase ""$1"" in start) echo ""Starting ktd""…

Continue reading...