このところ別シリーズでM5Stackを扱っていることが多く、気になっていましたFreeRTOS。M5StackをArduinoIDE環境で使っていたら表立ってはFreeRTOSは現れてきませんが、「アプリ」プログラムを裏で支えてくれているのがFreeRTOS。Arduinoのような「一皮被せた」環境でなく、ESP32の開発環境を整備すれば直FreeRTOSが見えるようにできる筈ですが、今、あまり時間がなくメンドイ。もっとお手軽にFreeRTOS触ってみる方法はないものか?
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さんの以下のプレスリリースであります。
トホホな疑問(17) ラズパイ, I2Cの速度
昨日、どこかのページに書いてあったラズパイのI2Cのデフォルトのクロック速度を鵜呑みにして、100kHzと書いてしまいました。しかし、アチこち見て回っているとそんなことはない、実際は
62.5kHz
とあります。どうも62.5kHzが正しそう。でも、折角なので、自分でもオシロを当てて測っておくかと。 “トホホな疑問(17) ラズパイ, I2Cの速度” の続きを読む
トホホな疑問(16) Raspberry Pi、i2cdetect
この間、ラズパイのI2Cの先にセンサを付けたりしていて思ったです。いわゆるマイコンのシリアルインタフェースにセンサなどを付けた場合、デバックしようとすると「結局、信号に聞くのが一番早道」だったりします。けれどもRaspberry Piのようなシステムの場合、i2ctoolsという便利なツールがあるので、それにお任せで済ませてしまう。でもね、ツールの出力も見れば疑問が湧いてくる。やはり一度、「信号に聞いて」おいた方が安心かも。
トホホな疑問(15) Python、lxml、複数xsdファイル
「第13回」で Pythonのlxmlモジュールを使って、デフォルト名前空間が定義されたxmlファイルでXPath使うときはどしたら良いのかしら、と考え込みました。今日は今日とて、またlxmlモジュールで、xsdスキーマファイルが複数あるときに、どうやってバリデーションをばかけたらよかでしょうかとまたまた考え込んでしまいました。
トホホな疑問(14) Python, smbusモジュール
「ラズパイに3角測量センサ接続」という話題で、何気にPythonの
smbus
というモジュールを使ってしまいました。理由は、PythonからI2Cを使うときに「よく使われているみたい」だったから。しかし、I2Cではなくsmbusです。遠い昔の朧げな記憶によれば、smbusは主にノートPC向けに始まった規格の筈。確かにI2Cベースだった気もしますが、そのあたり記憶もあやふや。それにsmbusモジュールのインタフェース関数が一体どのようなI2Cバス制御をしているのか実体が分からない。「簡易ロジアナ」で観察する元気もないし。。。
IoT何をいまさら(38) ラズパイに3角測量センサ接続2
昨日は、ラズパイのI2Cにシャープ製測距センサGP2Y0E03をつなげて距離が測れている雰囲気が出て良かったね、で終わっていました。今日は「移植」したソフトウエアについて見ていきたいと思います。元は、MbedOSでcppで書いたのですが、今回はPythonであります。I2Cの制御には変わらないので、遠くからみたら「一緒」ですが、細かいところの書き方はちょっと「違う」のでした。
ぐだぐだ低レベルプログラミング(19) Arm NEONをつかってみる4
ぐだぐだ低レベルプログラミング(18) Arm NEONをつかってみる3
続けざまにぐだぐだです。前回、なんとかコンパイラがクワッドワード(128ビット)幅のレジスタを使ったNeon命令を吐き出すようになりましたが、何か思っていたより複雑なコードになっていました。もしやと思ってよく考えてみたら、それは私の書いたコードがイケないことに気付きました。それでもコンパイラ様は必死に注文にこたえるべく、コード生成をおこなってくれた結果、なにやら複雑なコードが生成されてしまったのでした。自分の書いたコードをコンパイラ様が素直に解釈できるようにちょいと直せば良かったのでした。それでようやく、クワッドワードかつシンプルなコードが出力されるようになりました。
ぐだぐだ低レベルプログラミング(17) Arm NEONを使ってみる2
ぐだぐだです。前回は、NEONを使ってみると書いておりましたが、今日見直してみれば、本当の意味のNEONじゃありませんでした。すみません。最近では、ArmのVFP(Vector Floating Point. 一応「ベクトル」計算機だったのね)は、NEONお供というか補完用の命令セットでなっているみたいです。NEONが1レジスタに複数の要素を入れて同時に処理できるのに比べるとVFPはパイプライン方式のベクトル化(昔はこれが本道だったような気もしますが)。1レジスタには1要素であります。こちらの命令が生成されていた。ま、今じゃNEONの一部と言えないこともないですが、狙いは1レジスタに複数要素のSIMDなので違う。狙い通りのコードを生成するにはどうするの?