chintaro3の日記 

基本、チラ裏です。書いておくと頭の中が整理できますゆえ。

mbedについて

 
3周回遅れぐらいでmbedというものを見つけた。2010年からあるのな。3年遅れヤバい。
 
mbed --- wikipedia
http://ja.wikipedia.org/wiki/Mbed
 
「パソコンでやるには大げさすぎるが、かといって、8bit・16bitの1チップマイコンではちょっと辛い」という用途に良さげ。
1チップマイコンを使った物としては例えば Arduino が有名。
 
Arduino --- wikipedia
http://ja.wikipedia.org/wiki/Arduino
 
ATMEGAマイコンも、出た当初は画期的だったのだけれど、だんだんバリエーションが増えてくるにつれて、色々と煩雑な事も増えてきた。古いデザインをサポートするために「互換モード」なんてのを持ってたりして、それはそれでメリットもあるが、滅多に使わない機能が搭載されすぎていて、面倒くさいデメリットもある。新しいデザインに採用するのはちょっとなぁ・・・
と思って、もうちょっとましなのはないかと、注目したのがmbed。
 
良い点:
 ・根本的に新しいので、すっきりしたデザイン。つまらない勘違いをする要素が比較的少ない。(将来的にどうなるかは不安要素ではある)結果的に、ソースコードもすっきりしたものになる。
 ・Webブラウザ上でコンパイルできる。ローカルに環境をインストールする必要が無い。最新のブラウザさえ使えるならOSも選ばない。開発作業用のPC全部に開発環境をインストールするという煩わしさから解放される。大規模なソフトになると弊害もあるかもしれないが、そもそもそういうのはPCでシステムを組むべき。
 ・専用の書き込み器や書き込みケーブルが不要。USBケーブルを繋ぐだけ。納品先でバージョンアップが必要になった場合等に、PCとUSBケーブルさえあれば誰でもバイナリプログラムの入れ替え作業ができる。
 ・クロック周波数が比較的高く、演算能力もあるので、浮動小数点や32ビット整数を遠慮なく使える。(但し、Coretex-M3はFPUは持って無い) 昔の1チップマイコンでの浮動小数点の除算とか、タイミングを気にしながらじゃないと使えなかった煩わしさから解放される。Arduinoだと浮動小数点の除算が最大500クロックぐらい。mbedだと最大100クロックぐらい。
 ・リーズナブルな値段。
 
端子数が足りない場合は、I2Cに I/OエキスパンダIC等を繋いで付け足す方がスマート。D/Aは1ポートしかないが、精度が低くても良いならPWM出力にRCでLPF作って繋げば似たような事が出来る。高精度が必要ならI2Cで拡張しても良い。
A/DはVrefの精度が気になる所だが、安心したいなら自前で高級Vrefを用意して、A/D入力のどれか1つに繋いで、それを基準に演算で補正すればいい。乗算/除算が遠慮なく使えると、こういう所がラク
mbedは自由に使えるハード割り込みをサポートしてない(?)ようだが、クロック周波数が十分高いので、ポーリングでかなりの用途をカバーできるだろう。デバッグもポーリングの方がはるかにラク
 
アリだなこれは。
 
ちょっと大変そうなのはデバッグ環境か。LCDを付けて、ひたすらPrintfみたいな手法を取らざるを得ない。LCD必須。この点、 Arduino だと、PC上でシミュレーション環境でプログラムを走らせてデバッグ、という事が、ある程度できる。PC上での開発しか経験が無い人には、mbedのデバッグは悪夢かもしれない。
 
関連:
mbed改良するなら --- chintaro3の日記
http://chintaro3.hatenadiary.com/entry/20130517/1368717971

mbed感想  --- chintaro3の日記
http://chintaro3.hatenadiary.com/entry/20130605/1370439360