モダンOSのお砂場(6) FreeRTOS、Windows上で練習

このところ別シリーズでM5Stackを扱っていることが多く、気になっていましたFreeRTOS。M5StackをArduinoIDE環境で使っていたら表立ってはFreeRTOSは現れてきませんが、「アプリ」プログラムを裏で支えてくれているのがFreeRTOS。Arduinoのような「一皮被せた」環境でなく、ESP32の開発環境を整備すれば直FreeRTOSが見えるようにできる筈ですが、今、あまり時間がなくメンドイ。もっとお手軽にFreeRTOS触ってみる方法はないものか?

“モダンOSのお砂場(6) FreeRTOS、Windows上で練習” の続きを読む

IoT何をいまさら(43) M5Stack.hの中身を確認しとこう。

ArduinoIDEでM5Stackのプログラムを書くのは使いやすくて気に入ったのですが、ちょっと何かムズムズする感じなのが、ヘッダファイルです。普通のCやC++ならヘッダを沢山インクルードしないとイケない筈なのに、M5Stack.hをインクルードするだけで、ほとんど何でも書けてしまう。楽でいいけれども、ちょっとどうなっているのか知っておかないと落ち着かないです。 “IoT何をいまさら(43) M5Stack.hの中身を確認しとこう。” の続きを読む

Literature Watch Returns(11) 下島著、『みんなのM5Stack入門』、リックテレコム

正月休みには何かやろうと思うのですが、あっちへ行ったり、こっちへ行ったりしている内に毎年終わってしまいます。懲りずに休みに「やってみる」(読むではありませんよ」つもりで、今年も書籍を何冊か買い込みました。最近埃を被っているマイコンボード共に喝(どちらかといえば触らないでいる自分が主因ですが)を入れるために。そのターゲットの一つが、

M5Stack

であります。小さなボディにいろいろ詰め込んだ一品。なかなか完成度も高く、まさにIoT向け。何か触る切っ掛けが欲しい。 “Literature Watch Returns(11) 下島著、『みんなのM5Stack入門』、リックテレコム” の続きを読む

AIの片隅で(19) CuPy、NumPy、単精度、倍精度

前回の投稿でChainer開発終わって寂しい件を書かせていただきました。しかし、CuPyの方は開発を益々?継続のようであります。そういえば、Chainerの裏でCuPyが動いているのは知っていましたが、直接使ってみたことってなかったかも。それにちょっと気になるのがNumPyと凄く互換性が高く見えるけれど、「所詮」CPUとGPUの違いあり、精度の違いなどどう処理されているのでしょうか。とりあえずやってみました。 “AIの片隅で(19) CuPy、NumPy、単精度、倍精度” の続きを読む

AIの片隅で(18) Chainer、開発の終わり

12月5日づけで、ちょっとショックなプレスリリースが出てました。日本を代表するAI(人口知能の方、最近投稿に頻発しておりますAugumentation Indexではありませぬ)ベンチャー企業であるPreferred Networksさんの以下のプレスリリースであります。

Preferred Networks、深層学習の研究開発基盤をPyTorchに移行

“AIの片隅で(18) Chainer、開発の終わり” の続きを読む

トホホな疑問(17) ラズパイ, I2Cの速度

昨日、どこかのページに書いてあったラズパイのI2Cのデフォルトのクロック速度を鵜呑みにして、100kHzと書いてしまいました。しかし、アチこち見て回っているとそんなことはない、実際は

62.5kHz

とあります。どうも62.5kHzが正しそう。でも、折角なので、自分でもオシロを当てて測っておくかと。 “トホホな疑問(17) ラズパイ, I2Cの速度” の続きを読む

トホホな疑問(16) Raspberry Pi、i2cdetect

この間、ラズパイのI2Cの先にセンサを付けたりしていて思ったです。いわゆるマイコンのシリアルインタフェースにセンサなどを付けた場合、デバックしようとすると「結局、信号に聞くのが一番早道」だったりします。けれどもRaspberry Piのようなシステムの場合、i2ctoolsという便利なツールがあるので、それにお任せで済ませてしまう。でもね、ツールの出力も見れば疑問が湧いてくる。やはり一度、「信号に聞いて」おいた方が安心かも。

“トホホな疑問(16) Raspberry Pi、i2cdetect” の続きを読む

トホホな疑問(15) Python、lxml、複数xsdファイル

第13回」で Pythonのlxmlモジュールを使って、デフォルト名前空間が定義されたxmlファイルでXPath使うときはどしたら良いのかしら、と考え込みました。今日は今日とて、またlxmlモジュールで、xsdスキーマファイルが複数あるときに、どうやってバリデーションをばかけたらよかでしょうかとまたまた考え込んでしまいました。

“トホホな疑問(15) Python、lxml、複数xsdファイル” の続きを読む

トホホな疑問(14) Python, smbusモジュール

ラズパイに3角測量センサ接続」という話題で、何気にPythonの

smbus

というモジュールを使ってしまいました。理由は、PythonからI2Cを使うときに「よく使われているみたい」だったから。しかし、I2Cではなくsmbusです。遠い昔の朧げな記憶によれば、smbusは主にノートPC向けに始まった規格の筈。確かにI2Cベースだった気もしますが、そのあたり記憶もあやふや。それにsmbusモジュールのインタフェース関数が一体どのようなI2Cバス制御をしているのか実体が分からない。「簡易ロジアナ」で観察する元気もないし。。。

“トホホな疑問(14) Python, smbusモジュール” の続きを読む

IoT何をいまさら(38) ラズパイに3角測量センサ接続2

昨日は、ラズパイのI2Cにシャープ製測距センサGP2Y0E03をつなげて距離が測れている雰囲気が出て良かったね、で終わっていました。今日は「移植」したソフトウエアについて見ていきたいと思います。元は、MbedOSでcppで書いたのですが、今回はPythonであります。I2Cの制御には変わらないので、遠くからみたら「一緒」ですが、細かいところの書き方はちょっと「違う」のでした。

“IoT何をいまさら(38) ラズパイに3角測量センサ接続2” の続きを読む

ぐだぐだ低レベルプログラミング(19) Arm NEONをつかってみる4

ようやくコンパイラにNEONのクワッドワードのレジスタを使うコードを吐き出してもらえるようになったので、わずかにハードルを上げてみたいと思います。当初から予定通りで、内積計算ですね。ベクトルの要素毎に単純な掛け算をしているのと比べると、それらの和をとっていかなければならないので、計算はちょっとだけ複雑。それに何と言っても結果はスカラー。コンパイラはどのように料理してくれるのでしょうか。

“ぐだぐだ低レベルプログラミング(19) Arm NEONをつかってみる4” の続きを読む

ぐだぐだ低レベルプログラミング(18) Arm NEONをつかってみる3

続けざまにぐだぐだです。前回、なんとかコンパイラがクワッドワード(128ビット)幅のレジスタを使ったNeon命令を吐き出すようになりましたが、何か思っていたより複雑なコードになっていました。もしやと思ってよく考えてみたら、それは私の書いたコードがイケないことに気付きました。それでもコンパイラ様は必死に注文にこたえるべく、コード生成をおこなってくれた結果、なにやら複雑なコードが生成されてしまったのでした。自分の書いたコードをコンパイラ様が素直に解釈できるようにちょいと直せば良かったのでした。それでようやく、クワッドワードかつシンプルなコードが出力されるようになりました。

“ぐだぐだ低レベルプログラミング(18) Arm NEONをつかってみる3” の続きを読む

ぐだぐだ低レベルプログラミング(17) Arm NEONを使ってみる2

ぐだぐだです。前回は、NEONを使ってみると書いておりましたが、今日見直してみれば、本当の意味のNEONじゃありませんでした。すみません。最近では、ArmのVFP(Vector Floating Point. 一応「ベクトル」計算機だったのね)は、NEONお供というか補完用の命令セットでなっているみたいです。NEONが1レジスタに複数の要素を入れて同時に処理できるのに比べるとVFPはパイプライン方式のベクトル化(昔はこれが本道だったような気もしますが)。1レジスタには1要素であります。こちらの命令が生成されていた。ま、今じゃNEONの一部と言えないこともないですが、狙いは1レジスタに複数要素のSIMDなので違う。狙い通りのコードを生成するにはどうするの?

“ぐだぐだ低レベルプログラミング(17) Arm NEONを使ってみる2” の続きを読む

ぐだぐだ低レベルプログラミング(16) Arm NEONを使ってみる1

今回から、少し実用的?に、ArmのNEONを学んでみたいと思います。所謂SIMD(Sigle Instruction/Multiple Data)の命令セットです。Intelでいうと、AVXとか、SSEとかに相当します。Arm NEONの場合、128ビット幅のレジスタなので一度に単精度の浮動小数であれば4個、16ビットの整数なら8個を計算できます。GPUの並列度には遠く及びませんが、使えるものは使いましょう。それに、我がRaspberry Pi 3 model B+でも立派に使用できるのであります。

<訂正>この回はNeon命令使用に行きついていませぬ。その一歩手前で終わっております。

“ぐだぐだ低レベルプログラミング(16) Arm NEONを使ってみる1” の続きを読む