はじめに
mbed LPC1768は、フルセットの32bit gccが、使用できる組み込み用のワンチップマイコンのプリアッセンブルされた開発モジュールで、組み込みアプリケーションがかつてないほどストレスなく構築できます。mbedは、一般のシステムとは違って、いわゆるオペレーティングシステムを持たず、殆ど構築したCプログラムそのものが素で、動作するところが特徴となっております。チップ自体は、よく枯れたARMプロセッサーで、処理系はよく枯れたGCCで、プログラムに不具合があっても、大抵はメモリー不足による、スタックとヒープの衝突によるスタックオーバーランか、流用しているライブラリーのバグなどで、不具合の同定もブラックボックスなく容易に同定できる事が特徴です。また、メモリーが少ない目なのが玉にきずです。PC9801程度は積んでくれると嬉しいのですが…
また、開発環境が、Webで提供されており、ストレスなく何処でもデバッグできます。
何かなかなか治らない不具合が見つかった場合は大抵はスタックオーバーランによるヒープメモリの破壊です。メモリーの使用量に注意して、なるべくローカル変数を使用して、サブルーチンのネスティングによるスタックの成長にも注意してください。


mbedのROM領域は広い

  • mbedはフラッシュが512kあるので長いプログラムを作成してもそれほど問題にはなりません。
  • 長いとは言っても関数の中で長いコードを書いてローカル変数をたくさん宣言したり、入れ子でサブルーチンを呼びまくったりすると、スタックが凹むのでダメです。
  • mainから入れ子にならないようにサブルーチンを呼びまくるのはOKだと思われます。
  • 参考) http://mbed.org/users/okini3939/notebook/MemoryMod...

スレッドがない

  • スレッドがないというのもラッキーで、スレッドがあるとスレッドスタックが食ってしまって全くアウトですね。
  • オペレーティングシステムみたいの誰か作って上げている人のがありますけど、そういうのを使うと、使えるメモリ容量が全部OSにメモリくわれて0になってしまいますので気をつけましょう。

Linux移植するのは無理(できるかもしれないけど)

  • Linuxを移植するなんてちょっと無理かも。
  • 何でメモリがいっぱい付いたバージョンが出てこないのかな。そしたら助かるのに。そしたらLinuxも走るし、プログラムもスパゲッティにならなくて気持ちいのに。変な挙動もしなくて。

LPCXpressoとmbedのLPC1768のPros/Cons

  • LPCXpressoは安くて良いけど、長いし、何もしないでもUSBメモリになる仕様がないのでiniファイルでごまかすことができないので、少しきついかも。まあメモリのフリをするプログラムを書けば良いのでしょうけど。メモリというか、フラッシュメモリをUSBメモリのふりをするプログラム。もちろんメモリは食いますね。
  • 暴走していても外付けUSBメモリになる機能とmbedそのものとは別々に動いているようで、そこがまたLPC1768のメリットです。

USBフラッシュ領域のエラー

  • 全然脈絡もなくUSBメモリになって、しかもmbedからもかけるので、たまにファイルシステムが壊れるのは書いているときにPCからも書いている時だと思うのですが、ちゃんと、USBを、PCで、取り外し準備操作を行わないで抜いた時かもしれません。詳細はわかりません。そのときはフォーマットしたらまた直ります。


RAM領域は狭い

  • RAM容量は32KBしかありません。非常に狭い領域なのでメモリをたくさん使うようなプログラムを作成するとハングアップすることになります。
  • ヒープ領域とスタック領域が両側から伸びてきてぶつかります。スレッドスタックは幸いなことにありません。
  • 参考) http://mbed.org/users/okini3939/notebook/MemoryMod...

ライブラリは積極的にデバッグしましょう

  • パッケージは右クリックしたら開けます。ソースも出てきます。
  • 標準ライブラリ以外に独自に作成したライブラリがたくさん公開されていますが、デバッグが不十分であったり、他のライブラリとの共存まで考慮されていない場合があるので、利用するときは十分注意しましょう。
また、ライブラリの、メモリーをなるべくローカル変数で済ませて、無駄なメモリーの使用量を減らす様に直しましょう。

mbedのリセットボタンを押しっぱなしにすると、現象として一時的にアクセスできます。

  • mbedのプログラムが暴走し、フラッシュドライブ領域としても認識できなくなった場合はmbedのリセットボタンを押しっぱなしにすることで一時的にアクセス可能になります。

長いファイル名も書けますが8+3形式で動作しています。要注意。

  • mbedのフラッシュドライブ領域はパソコンからは長いファイル名が使えますが、mbedのプログラムからは8.3ファイル名形式でしかアクセス出来ません。
  • 長いファイル名だとmbedのプログラムの方では区別がつかず混乱します。

mbedはファイル名の変更ができない

  • mbedのフラッシュドライブ領域はパソコンからはファイル名変更ができますが、mbedのプログラムはrename関数が使えないため、fgetc関数で別ファイルにコピーしてremove関数で元ファイルを削除する必要があります。

CPU速度を変更するとタイマ割り込みにも影響する

  • mbedはsetSystemFrequency()とSystemCoreClockUpdate()関数でCPUの速度を変更することができます(デフォルトは96MHz)。
  • CPU速度を遅くすると消費電力を抑えることが出来るようですが、クロックを落とせば、その分タイマ割り込みタイミングも遅くなってしまうようです。たとえばソースコードで1秒間隔で割り込みを設定していた場合、クロックを半分にすると、実際には2秒間隔で割り込みが発生するなどです。
  • タイマ割り込みだけでなく、wait()関数にも影響があるようです。
  • http://mbed.org/users/no2chem/notebook/mbed-clock-...

JISコネクタからの給電

  • mbedはUSBからの給電で動作しますが、3Gドングルなど電流を多く消費するUSBデバイスを利用するときはUSB給電のみでは電力が足りなくなり、正常動作しなくなります。

Mini USBポートはケースに穴が開けてない場合がございます。

  • Mbedのmini USBポートがケースによっては穴が開いてないことあります。ケースを開けてプログラムの書き換えとか設定の書き換えをします。
ケースを開ける場合は、ガイガー管の陽極(Anode)の、電極と、高圧発生回路には高圧が生じてますので触れないように注意してください。感電を防ぐために、ガイガーカウンターの操作はゴム手袋を着用の上、片手で行うようにしてください。

Menu

MK2R2マニュアル


管理人/副管理人のみ編集できます