別件で ST Microelectronics社のNucleo-F072RBをMbed OSで動かす必要がでてまいりました。Mbedオンラインコンパイラでなく、久しぶりにローカルな開発環境であるMbed Studio でやってみるか、ということで眠っていたMbed Studioをアップデートいたしました。ビルドのテストをしてみたのですが、できるのだけれど、ちょっとトホホな状況。
※「トホホな疑問」投稿順Indexはこちら
Mbed Studioは、Mbed OS向けの専用IDEです。見た目、雰囲気は VS Codeにとてもよく似ています。その最大の特徴と言えば、Arm社純正のコンパイラ(特に制約があるとは書かれていない)が無償で利用可能であることです。Arm用の無償の開発環境の多くが gcc のクロス開発ツールチェーンに依存する中、ちょっと目をひく特徴であります。ドキュメントを読むとことさら?armccを止めてgccに差し替える方法も書いてあるようですが、このIDEを使うときにわざわざ変える理由は?です。
約2年近く前、Mbed Studioがベータ版であったころ、一度使用してみたことがあります。
鳥なき里のマイコン屋(67) Mbed Studio、ちょっと使ってみた
当時からカッコいいIDEだな~とは思いました。しかしベータ版ということもあり、サポート対象のボードも極めて限定されていたので「お蔵入り」して今日にいたっています。当時はF072RBはターゲットに入ってなかった記憶が。
月日は流れ、関係各位のご尽力によりバージョンもあがり、どうも「今回ターゲット」のF072RBも対象に入れてもらったみたいです。この際、2年ぶり復活で実力を見せてもらおう、と。IDEのバージョンは既に 1.4.1 にあがってました。
吉例のBlinkをビルドしているところがこちら。ビルドできてますよ。
実際には、上の画面に行き着くまでに、IDEにもライブラリにも大量のファイルにアップデートがかかり、ダウンロードとインストールにかなりな時間を費やしました。まあ、2年も放置していただけのことはあります。Mbed OSのバージョン自体、2年前は Mbed OS 5 であったものが、現在環境のデフォルトは Mbed OS 6になっています。とりあえずアップデート完了、サンプルビルド成功いたしました。ボード接続。ちゃんと Nucleo F072RBと自動認識されています。よかった。オブジェクトを書き込み。書き込み成功。Lチカしてます。サンプルの実行はOKそう。
ビルドされているOSのバージョンを確認すべく、サンプルプログラムに1行書き加えました。
printf("Mbed OS %d.%d.%d.\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
ここから出力された結果は以下の通りであります。
Mbed OS 6.11.0.
6.11なら現在の最新版でないだろうか。Mbed OS 6には、OSが下にいるのに「ベアメタル」というプロファイルがあり、Mbed OS 2的な軽い開発に使えるようです。実際にはこのプロファイルを使わせてもらおうかね。
その前に、わざわざローカルな開発環境使う意味の一つである「デバッグ」を確認しておくかい。IDEの Build profileという部分をみると設定はデフォルトで “Debug” となっています。当然オブジェクトファイルはデバッグ用にコンパイル(デバッガが使う情報を含めてある)の筈。即座にデバッガ起動できると期待しました。ただ、ありがちなのが、デバッグインタフェースのドライバやファームウエアが古くてうまく行かない、という問題。ST社のサポートページに行き、最新版のWindows側ドライバとボードのデバッグツール用のファームウエアを更新しておきました。しかし、
結論から言うと「ダメ」でした。
いろいろやってもダメで、Mbedのドキュメントのあちこち見まわっていて「発見」してしまいました。
上記のページはMbed OSがサポートしている多数のボードを絞りこむために左側にフィルタが用意されています。その末尾にMbed Studioがサポート対象にしているボードを絞り込むための項目がありました。
Mbed Studio support
という欄で絞りこみができます。結構少ないのね。さらにそのサブカテゴリとして
-
- Build and run
- Debug
という2つがあるではありませんか。つまりビルドして実行できるボードと、デバッグまでできるボードは「クラス」が違うと!Debugのサブカテゴリに入っているボード、少な!Nucleo-F072RBは、Build and run には入れてもらっているのですが、Debugには入れてもらえてません。トホホ。。。
まあねえ、F072RBは古くて小さいマイコンなので力はいらなかったのかねえ。2年前の投稿を読み返してみると、デバッグには注文が多そうなことを自分でも書いてました。完全に忘却の彼方。2年の月日の間に、F072RBはビルドのお仲間に入れて貰えたみたいですが、Debugまでには入れて貰えなかったということみたいです。
数少ないDebugのお仲間を調べてみると 手元にあるもう一枚のNucleoであるF401REが入っています。ラッキー?
ターゲットボードをF401REに切り替えて再ビルドしてデバッグにトライしてみました
ダメでした。2年前の投稿によればF401REはビルドできるけれどデバッグできなかったです。最新のWeb文書上ではDebugのお仲間に入れてもらっているようなので、なにか設定を変えたら(更新しきれていない何かを更新したら)できるのかもしれませんが。トホホ。。。折角のローカル環境を大汗かいて(?)更新したのに、トホホ。