mbed 開発環境で、Lチカ、SDカード操作など

mbed を使った解説例は、こちら → PIC32MXを使ってみる。 ドライストーンで評価。にもありますが、ここでは、mbed に関して、使ってみた感想や、問題点などを説明したいと思います。
mbed の特徴と機能、そして感想。
  1. マイコンの周辺機器を操作するライブラリがすでにあり、マイコンのリファレンスマニュアルを読まなくてもすぐに動作可能。
    ただし、ライブラリは十分整備されているとは言えないし、バグも存在するし、リビジョン管理も自前で行う必要がある。
  2. mbed インターフェイスとして機能する別のマイコンが基板に搭載されており、それがターゲットマイコンのフラッシュROMにプログラムを書いたりする。
  3. 開発環境はブラウザとなり、ソースは ここhttps://www.mbed.com/en/のサーバーに保存されるが、Keil,IAR,GCC のプロジェクトソースに変換して、ダウンロードできる。さらに、ソースを zip ファイルに圧縮してダウンロードでき、PCに保存して自前でソース管理できる。
  4. mbed インターフェイスが付いてないターゲットマイコンでも、開発したプログラムを動作させることができる。
    ただし、mbed 基板で設定されている基板上のペリフェラルは、ターゲット基板の同じポートに同じICが付いてること。登録されていないペリフェラルは自前でBIOSから書かないといけない。ポートのみ異なった、LEDなどは、ポート番号を書き換えるだけで、操作できる。
  5. mbed インターフェイスには、PCと接続すると、仮想COMポートがPCのデバイスに登録され(これは、mbed 基板のメーカーからドライバーをダウンロードしてインストールしておく必要がある)ターミナルソフトを介して、printf を使ってプログラムの情報を表示できる。
Web mbed で STM32F446 を使ってみる
Web mbed で FRDM-K64F を使ってみる
mbed OS でFRDM-K64F を使ってみる
Web mbed で FRDM-K64F を使い、SDカードのリード、ライトをしてみる 2016.06.02 追加

STM32F446 を使ってみる

使用する基板は、以下。メーカーのURLはこちら https://developer.mbed.org/platforms/ST-Nucleo-F446RE/

このボードは、Coretex-M4 で、180MHzと高速です。PCにドライバーをインストールしておくと、ディスクとして認識され、その中のMBED.HTMLっをクリックすると、mbed のWebIDEが開くので、左上の「新規」を選択すると、いくつか候補が現れ、その中の「 Blinky LED test for the ST Nucleo boards」を選択します。

ダウンロードしたソースに若干修正し、PCのUARTにメッセージを出しながら、LEDを点滅させるソースにしたのが以下です。


FRDM-K64F を使ってみる

基板は以下。

しかし、この基板では、サンプルソフトがコンパイル時でエラーになってしまいます。画像の下の部分( Cannot open source input file "device.h"; No... ) このスクリーンショットにあるように、いくつかはコンパイル、実行できていたのですが、2016.5.28時点でできなくなっています。

このエラーを検索で調べましたが、このサイトにmbed ライブラリのリビジョンを121から、119に戻すと良いというアンサーを見つけ、さっそくリビジョンを119に戻すと、コンパイル、実行ができました。main.cpp のソースのすぐ下の、mbed という名のライブラリで右クリックして、「リビジョン」を開くと、以下のように、リビジョンのリストがいくつか表示され、119番を選んで、「ワーキングコピーを、このリビジョンに切り替える・・」を選択すると、リビジョンが119になってコンパイルでエラーが出なくなります。



最近注目されてきた、mbed OS で開発してみます。


 こちらのサイト mbed OSでLチカ: Todotaniのはやり物Logを参考に、mbed OS をインストールして、デスクトップに登録されたアイコンをクリックして、専用コマンドプロンプトを開き、(workspase) xxxx\yotta>yotta init を実行します。(workspase) はどこにでも配置できます。

さらに、(workspase) xxxx\yotta>yotta target frdm-k64f-gcc で、ターゲットボードを指定しますが、mbed OS に登録された基板でないと、この操作はエラーになります。この、処理はかなり長く続きます。

初期化が終わったあと、こちらのサイト mbed OSでLチカ: Todotaniのはやり物Logを参考に、以下のソースを、led\source フォルダに、app.cpp という名でソースファイルを書き、(workspase) xxxx\yotta>yotta build を実行します。



上の図の処理は、最初にコンパイルした場合で、以後は、app.cpp などのソースだけのコンパイルになるので、変更したソースが少なく、小さければコンパイルとリンクはすぐに終わります。コンパイル結果は、\led\build\frdm-k64f-gcc\source に、led.bin ができているので、これをコピーすれば、実行できます。

ここで、mbed OS で動かす中心の記述が、minar::Scheduler::postCallback(blinky).period(minar::milliseconds(500)); となっており、スケジューラーが基本になっていますが、こちらのサイト mbed OSでLチカ: Todotaniのはやり物Logで解説されているように、 minar を使わないでもコンパイル、実行ができます。


Web mbed で FRDM-K64F を使い、SDカードのリード、ライトをしてみる

FRDM-K64F には、マイクロSDカードのソケットが付いているので、追加の基板なしに、SDカードを操作できるようになります。mbed のインポートサンプルには、ELM by ChaN の、FatFsを入れてSDカードのファイルシステムを操作する例がありますが、( FRDM-K64F-SDcard という名がつけられている )コンパイル時にいくつかエラーが出るので、原因を調べていましたが、すぐには解決できず、あきらめて、自前でFatFsを入れることにしました。いきなりFatFsを入れるのではなく、とりあえずSDカードの読み書きができるものを作成し、BIOS操作部分を、後ほどFatFsで使うという手順にします。

こちらが、とりあえず動作した mbed のソースです。mbed のライブラリは、119にしています。
以下は、このソースを mbed でコンパイルし、テラタームで操作したものです。こちらが mbed でコンパイルしたもの
操作コマンドは、「 Si 」、「 Sm 」、「 Sd 」 です。それぞれ、「初期化」、「マウント」、「ディレクトリ表示」 です。




工事中


ホーム に戻る



inserted by FC2 system