So-net無料ブログ作成

kernel4.19でのsysfs [Raspberry Pi]

先日、rpi-updateでRaspbianのkernelが4.14から4.19にアップデートされた。rpi-updateを起動するとこんな警告が出る。
#############################################################
WARNING: This update bumps to rpi-4.19.y linux tree
Be aware there could be compatibility issues with some drivers
Discussion here:
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=224931
##############################################################
Would you like to proceed? (y/N)
いいかと聞かれてもこの時点で判断のしようがないので「y」を入力することになる。このままいくと「4.19.30-v7+」とかになる。

ところがこれで動かなくなるのが出た。sysfs経由でgpioのBCM3を監視して変化があったら(具体的にはプッシュボタン長押し)シャットダウンするようにsystemdのサービスとして書いたのが
sh: echo: I/O error
で動かない。どこが問題かというと
    system("echo both > /sys/class/gpio/gpio3/edge");
が失敗している。system()はCユーティリティ関数で、processをforkしてshを起動して引数文字列をshのコマンドとして実行するというもの。stdlib.hにプロトタイプがあって、ランタイムの一部になっている。シンプルなんだけどシグナルや入出力の処理をちゃんとしてくれるので、僕はしょっちゅう使っている。

このコードはGPIOのBCM3ピンに変化があったら知らせてもらう、というもの。edgeファイルにraising、falling、bothを書き込むと、その変化があるとファイルシステム経由で検出できる。

ところが、edgeが書き換わらずに「none」のまま
$ uname -a
Linux vega 4.19.23+ #1203 Tue Feb 19 23:10:40 GMT 2019 armv6l GNU/Linux
$ cat /sys/class/gpio/gpio3/edge 
none
$  
になってしまう。他の単純なGPIOの読み書きは問題なさそうで、このedgeだけがうまくいかない。またsystem()ではなく、普通にedgeファイルをopen()してwrite()しても書き変わらない。

その前のkernelだと同じコードが動いて
$ uname -a
Linux sirius 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
$ cat /sys/class/gpio/gpio3/edge 
both
とちゃんと書き換わってる。rpi-updateの警告にあるurlを見てもそれらしい情報がない。ググってもこれだという情報に行きあたらない。

僕はこれが動かないと非常に困る、というようなものではないけど、少し不便なのと、せっかく書いたのが動かなくなるのはやっぱり面白くない。

誰かご存知ありませんか?
nice!(0)  コメント(0) 

また1日無駄にした [Raspberry Pi]

こないだのHiLetgoの降圧型DC-DCコンバータの電流源への改造が思っていたよりうまくいって、あのあともずっとDPSSレーザは機嫌よく動いているので、同じ伝(デン)でちょっとしたデモ用の電流源を追加作製しようと思った。ほぼ同じものを作るつもりであまり考えずにサクっとやろうと思った。ところがそこに落とし穴があって、丸一日無駄にすることになった。これを読んでくれてる人の反面教師として詳細を書くことにする....

続きを読む


nice!(0)  コメント(0) 

「火星の遺跡」読了 [読書]

ジェイムズ・P・ホーガン著、内田昌之訳、創元SF文庫。
0302mars.jpg
ここに書こうかどうしようか迷った。はっきり言えばホーガンとは思えない「カス」である。なら書かなきゃいいのに、と言われるかもしれないけど、僕は雑誌の提灯記事みたいなのは書きたくないのであえて書くことにする。それと一言、刺さった話があったので....

続きを読む


nice!(0)  コメント(0) 

最近のニュースで [日常のあれやこれや]

ここでは、僕がどうした、僕はどうしたい、という話しか書かないようにしようと思っている。だから他所の人が何しようと関係ないんだけど、技術屋としてちょっと思うことがあって、去年からニュースで毎日のように聴く日産のゴーンについて。ほんとだったら去年の逮捕前に書くべきで、いかにも後出しジャンケンぽいんだけど....

続きを読む


nice!(2)  コメント(0) 

残りのHiLetgoを使う [Raspberry Pi]

こないだHiLetgoの降圧型DC-DCコンバータ電源をLEDドライブ用に使ってみた。今のところちゃんと動いている。光らせたいLEDはもうない。しかし光らせたい半導体レーザはある。532nmのいわゆるDPSS(Diode Pumped Solid State)レーザで、赤外の半導体レーザの光でNd:YVO4結晶を叩いて1064nmを発振させてその光をKTP結晶で半分の波長(倍のエネルギー)にするもの。最近はパッケージはすごく小さく扱いも簡単になってる。HiLetgo電源はまだ2個余っているので、それに使ってしまおうと思った。

532nmのDPSSレーザのうち最もシンプルなものは単体の半導体レーザのような光強度モニタ用のフォトダイオードを内蔵していない。そこで光出力を制御するためには出てきた光を少しだけ横取りしてその強度の値でフィードバックする必要がある。また、ポンプ用の赤外の半導体レーザは可視半導体レーザと同じように過電流に弱い。LEDなんかに比べると注意が必要になる。

そんなことから、赤外のレーザは定電流駆動して、さらに外側のループで緑光出力を制御するためにその電流値を増減させるというドライブの仕方が普通だろう。僕が使おうとしているレーザのポンプ用赤外レーザは定格が300mAでそのときの電圧降下が2.0Vぐらいのものである。

このレーザを例によってRaspberry Piから制御することを考えた。そのために余ったHiLetgoの電源を定電流ドライブに改造する(改造といっても、人間で言えば本郷猛を仮面ライダーに、と言うよりは性転換手術のようなものである)。レーザそのものは2万円以上するもので、それを1個300円しない、どこまで性能があって信頼性があるのかわからないHiLetgoの電源でドライブしようと言うのは、かなり大胆な勇気のいることである(特に僕みたいな貧乏人にとっては)。まあしかし、この付近の波長で直接発振する半導体レーザはあるけどハイパワーのものを一個だけくださいというと数十万円取られる。それを考えるとかわいいものである。

それに綺麗で立派な箱に入ったいかにもエラそうな専用電源も、中を開けてみれば似たようなチャチい部品が並んでいることが多い。ハイエンドオーディオなんかでも似たようなことがあるらしい。とりあえず僕の場合、長期信頼性は必要ないので試してみることにする。今回は破壊的な(非可逆の)改造になる....

続きを読む


nice!(0)  コメント(0)