BCMLIB_FOR_JAVAにバグが見つかった [JAVAで開発]
(2015.07.23)
BCMLIB_FOR_JAVA(これです)はRaspberry piのペリフェラル(GPIOとかI2Cとか)をJAVAで操作するライブラリで、そのI2Cライブラリを使ってOsciLogiの開発を進めてきました。
これまで、特に問題は生じていなかったのでライブラリとしてそこそこ動いている(出来上がっているもの)と思っていました。ところが・・・
I2C経由でPICのステータスを読み取る機能を(I2C割込が入るとOsciLogi のサンプリングに影響するので)、GPIOを介してPICのステータスを読み取る機能に変更したのですが、これが動いてくれません。orz
デバイスファイルを操作すると正しく読み取れるので、PICとRaspiの接続に問題は無く、プログラムのバグが疑われます。
<デバイスファイルの操作はこんな感じ>
echo 17 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio17/direction
cat /sys/class/gpio/gpio17/value
1
cat /sys/class/gpio/gpio17/value
0
BCMLIB_FOR_JAVAを使ってGPIOの出力を操作したことはあるのですが、実はGPIOの入力は今回が初めてです。ライブラリのどこかに不具合があるのですが、(自分で作ったライブラリとは言え)二年も経つとどんなプログラムだったか、すっかり忘れています。orz
あちこち覗き込んで、少しずつ仕組みが見えてきました。全部で四つのプログラムで構成されていま(す)した。
JAVA<==>libbcm_interface.so<==>shared memory<==>bcm2835_for_java
古典的な(コマンドの実行経路にprint文を挿入するという)手法で順番に調べていって、libbcm_interfaceが実行結果を読み取る所で失敗していることが判りました。
プログラムを修正して一件落着
やれやれ
-------------------
もう少し調べてから、GITに登録したファイルを更新します。
BCMLIB_FOR_JAVA(これです)はRaspberry piのペリフェラル(GPIOとかI2Cとか)をJAVAで操作するライブラリで、そのI2Cライブラリを使ってOsciLogiの開発を進めてきました。
これまで、特に問題は生じていなかったのでライブラリとしてそこそこ動いている(出来上がっているもの)と思っていました。ところが・・・
I2C経由でPICのステータスを読み取る機能を(I2C割込が入るとOsciLogi のサンプリングに影響するので)、GPIOを介してPICのステータスを読み取る機能に変更したのですが、これが動いてくれません。orz
デバイスファイルを操作すると正しく読み取れるので、PICとRaspiの接続に問題は無く、プログラムのバグが疑われます。
<デバイスファイルの操作はこんな感じ>
echo 17 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio17/direction
cat /sys/class/gpio/gpio17/value
1
cat /sys/class/gpio/gpio17/value
0
BCMLIB_FOR_JAVAを使ってGPIOの出力を操作したことはあるのですが、実はGPIOの入力は今回が初めてです。ライブラリのどこかに不具合があるのですが、(自分で作ったライブラリとは言え)二年も経つとどんなプログラムだったか、すっかり忘れています。orz
あちこち覗き込んで、少しずつ仕組みが見えてきました。全部で四つのプログラムで構成されていま(す)した。
JAVA<==>libbcm_interface.so<==>shared memory<==>bcm2835_for_java
古典的な(コマンドの実行経路にprint文を挿入するという)手法で順番に調べていって、libbcm_interfaceが実行結果を読み取る所で失敗していることが判りました。
プログラムを修正して一件落着
やれやれ
-------------------
もう少し調べてから、GITに登録したファイルを更新します。
|
|
|
コメント 0