ねころこの備忘録

僕の開発の手順とか実験結果とか感想とかをつらつら書き込んでいくお墓.僕の魂を成仏させるためのお墓です.お経(コメント)待ってます

MbedStudioでLチカまでやってみた byねころこ

どうも皆さんこんにちは,ねころこです.

先日Mbedの公式からオフラインで動作するIDEがリリースされましたね.
私はずっとLinuxでMbedのオフラインコンパイラを使っていたので,正直恩恵は微妙なんですが,デバッグができるという事,Gitが標準サポートであることなので,使ってみることにしました.
今回Lチカまでの道のりを書いていきます.



ちなみにエラーはたくさん起こりましたが,今回は割愛します.
結局皆さんが知りたいのは「こうしたらエラーが出た.」ではなく,「こうしたらできた」なのだと思っているので.
それでは始めます.

MbedStudioインストール

まずはとにもかくにもインストールです.
下記リンクより,MbedStudioをダウンロードしてインストールしてください.そこそこ時間がかかります.
os.mbed.com

MbedStudio LEDチカチカ(Lチカ)

インストールが終わればLチカです.
今回使用したボードは,LPC1768です.

f:id:ryuga13tk:20190314193947p:plain
まずは一番最初にこの画面になります.
初期状態は真っ暗だと思います.
私はLightテーマにしています.ダークは苦手なので(知らんがな)

次に,[Create Program]->[New Program...]をクリックします.
f:id:ryuga13tk:20190314194215p:plain

これが出てくるので,次に[Select]->[empty Mbed OS program]
を指定して,名前をsample(何でもよい)にします.

f:id:ryuga13tk:20190314194318p:plain


[Add Program]を選択すると,左側にsampleが追加されると思います.

なぜ,empty Mbed OS programにしたかというと,ほかのやつだと,MbedOSが入っていないからです.MbedOSが入っていないと,自分で必要なバージョンのものを引っ張って来る必要があります.なので,Mbed OSが入っているものを選びます.

また,MbedOSが入っていないと,そもそも接続したボードを認識しないなどがあります.MbedOS絶対必須.
そもそも初期状態で入ってないものがあるっていうのも,おいおいって感じがしますが,MbedOSが最初から入ったものがあるので,まあいいでしょう.


次はボードを繋ぎます.
f:id:ryuga13tk:20190314195506p:plain
ボードを繋ぐと,このようになります.

ちなみに,以下のようになる場合は,MbedOSが入っていない状態なので,OSを入れてください.
f:id:ryuga13tk:20190314194917p:plain
[Mbed OSが入っていない状態]

ここでマークの意味を説明すると,
トンカチマーク:プロジェクトをビルド(基本1回)
再生マーク:プログラムの実行
虫マーク:デバッグ

プログラムは以下のものをmain.cppに書きます.

#include "mbed.h"

DigitalOut led1(LED1);
Serial pc(USBTX, USBRX, 115200);
Timer t;

// main() runs in its own thread in the OS
int main()
{
    t.start();
    int count = 0;
    float tim = 0;
    while (true) {
        // Blink LED and wait 0.5 seconds
        led1 = !led1;
        pc.printf("%f\r\n", t.read_ms() - tim);
        ++count;
        tim = t.read_ms();
        wait_ms(20);
    }
}

え?wait_ms(2)は速すぎるですって?
実は,私の環境だと,中の数字をnとすると,10*n[ms]waitしちゃうんですよね.
なので,2です.
ほかの人は速すぎたら20にしてください.
そしたらビルドしてください.


終われば,[Outout]に[IMAGE:BUILD/LPC1768/ARMC6/sample.bin]が表示されるので,それをMbedにコピーします.
MbedStudioでは,自動的に書き込むって言う風に書いてあったのですが,書き込んでくれないので自分で書き込みます.
再起動すれば一回だけ自動で書き込んでくれました.が,それ以降はだめでした.

sample.binを右クリックして,[Open Terminal]を押します.
私の環境だと,MbedはEドライブとして扱われているので,ターミナルで

cp sample.bin E:/

を実行すれば一発でコピーできます.

そしたら,Lチカができます.
シリアル通信を見てみると,200って表示されます.200msでループしてる….
PCを再起動したら,20msでループしたのですが,なぜか書き込んだ直後は200msでループします.

デバッグについてはまだ何もわかっていないです.
ブレーキングポイントを設置してコンティニューボタンを押せばできるよって書いてあったのですが,コンティニューボタン…?
そもそもデバッグに必要な機器って何?っていう状態です...

おそらくドキュメント読んでる限り,
LPC1768は単体でデバッグができそうであること.
デバッグにはデバッグボタンを押して,ブレイクポイントを設置すれば動作するはずであること.がわかりました.
まあ,バグもいくつか見つかっているようなので,今後に期待です.

以下,known issueです.
Known issues - Arm Mbed Studio | Mbed Studio Documentation

When you start a debug session, breakpoints are ignored until they are disabled and then re-enabled.

wwww