鳥なき里のマイコン屋(43) ARM Mbed その1、お手軽過ぎて?

JosephHalfmoon

第2部開発ツール編行きますと自分で書いたものの、「いや~面倒くさいね~」とちょっと手を付けかねていました。新規の(私が使ったことがない)開発ツールをやるとなると、ビルドして実機で動かすことくらいはやっておきたいです。すると開発ツールをインストールするだけでなく、ツールの使い方を調べ、片やターゲットのMCUを調べ、MCUを搭載したボードの回路など調べて、と準備が結構大変。サンプルプログラムくらいはどこかで公開されているにせよ、いわゆる「Lチカ」やるだけでも勉強しないとならない(読まなければならないドキュメント)ことが多すぎ、と思っていたら最近は全然そんなことは無い環境があるのでした。年寄りは目から鱗。

今の開発ツールの「スタンダード」的な機能をまず押さえておきたいと思えば、やはりメジャーな

Arm用の開発ツール

を一つおさらいしておかないとイケないな、と思いました。これを書いているPCには、Armのクロス開発用のgcc環境はインストールしてあるので、ぶっちゃけ Raspberry Pi向けのオブジェクトなら作れるのですが、この「鳥なき里のマイコン屋」シリーズは、ROM/RAM積んだMCU、マイコンがターゲットなので、小さいボードといってもプロセッサ搭載したRaspberry Piでは「大きすぎ」るわけです。やはり、Arm搭載のマイコンボードでやりたい。そういえば、引き出しにArmのボードが埋もれているのを思い出しました。

STM32F072 Nucleo

大分前なのですが、何かの展示会で頂いた評価ボードです。Arm Cortex-M0搭載、Flash128KB、SRAM16KBの「立派な」マイコンです。

STM32F072_Nucleo

 

 

 

 

 

 

Arm用の開発ツールは複数ありますが、このボードの説明読むと、そのうちのいくつかの種類には対応しているような記述がありました。とりあえずボードが動くのを確認したら、対応開発ツールのどれかを選んで、お試し用の開発ツールをダウンロードし、「メンドイ」作業に入るかいな、という決意をいたしました。幸いパソコンにUSBで接続するだけで準備OKそうなボードであったので、USBでパソコンに接続して電源が入るかどうかくらい確認しておこうか、と。かなり前に頂いたまま引き出しの奥で何年も眠っていた(せっかくなのに使っていなくてすみません)けど大丈夫かな。

ボードをパソコンに接続するとUSBのドライブとして認識され、ファイル・フォルダが開きました。そこを見ると、

mbed.htm

というhtmlファイルが。これをクリックすれば何か情報が得られるのね。クリック。すると連れていかれたのは、

arm Mbed

というWebベースの「開発環境とオープンソースOS」の世界でした。最初にユーザー登録は必要です。しかし、必要なユーザ登録をし、届くメールにコンファームしてやれば、既に開発準備OK、という世界でした。何のことはありません、ここでは、開発ツールのダウンロードなど不要。

その上、接続しているボードを認識し、そのボードの説明ページが開くのです。

Boards >> NUCLEO-F072RB

ボード搭載のMCUのスペックやら、ボード上のヘッダピンのピン配置やらいろいろ書いてあります。とりあえずMCUやらボードマニュアルやらを読み込むのは止めにして、ちらっとそれを眺めるだけにとどめました。その上、使い方のビデオまで貼り付けてあるではありませんか。短いビデオを視聴して、ふんふんと使い方を確認。

まずビデオでも最初にやっていましたが、忘れずにドライバなど更新しておきます。こちらは、arm Mbedのサイトではなく、ST社の方からのダウンロードになるのでST社にまた登録(必要事項入力して、届いたメールで確認)が必要でした。

サンプルプログラムをちょっとビルドして、ターゲットボードで動作させたいと思ったら、ページの右の方に

Example programs

などというリストがあります。先頭のサンプルはPWM出力のデモでオシロを出してこないと動作確認が出来なそうです。その次にあった

Nucleo_blink_led

というサンプルプログラムは、如何にもオシロなど持ちださないでも動作しそうです。いわゆる「Lチカ」ですね。

そこをクリックすれば いわゆるIDE 風の画面がブラウザの中に開きます。中央のエディタ画面にはサンプルソースコードがロードされており、その下部にはコンパイル結果などを出力するプレーン、左にはプログラムワークスペースという名のツリーが見えています。どういうわけか、ずっと英語の説明だったのに、この画面のメニューなどは日本語化されていました。

ここで忘れずに1個TIPS。ダウンロードしたごく短いサンプルはLED1を点滅させるソースでしたが、該当のボードのLED1は点灯しっぱなしで、ユーザプログラムからの制御に反応しないようでした。そこで1行

DigitalOut myled2(LED2);

という追加の出力定義を書き込んで、myled2もON/OFFするようにプログラムを書き替えました。上部のコンパイルメニューからコンパイル。コンパイル結果のオブジェクトをどこにダウンロードするかダイアローグが開きますが、そのときは、ドライブとして認識されているターゲットボードがデフォルトになっていました。ここにダウンロード。

動きました。

一応、点滅のデューティ比などを変更してみて再コンパイル。ちゃんとプログラムのデューティ変更が実機上のLED動作に反映していることを確認しました。なんとあっけない。正直、覚悟していたツールやマイコンやボードなどの分厚いマニュアルなど読んではいません。勿論、ちゃんとした開発には読まないとイケないと思いますが、

「ボードをUSBでつないで、あとはクリクリしていくだけでオブジェクト作って動作確認までOK」

こんなお手軽なことでいいんでしょうか。これがモダーンな開発のスタンダードということで。

鳥なき里のマイコン屋(42) 第2部開発ツール編スタート へ戻る

鳥なき里のマイコン屋 (44) Arm Mbed その2、printf、OSのお陰です へ進む