Azure Sphereのサンプルプログラム VisualStudio編 (19.11)

しばらくAzure Sphereを触っていなかったら、SDKバージョンが結構上がったので、今日はサンプルプログラムを一通り確認することにします。

Visual Studio Extension for Azure Sphere Preview

Visual Studioに追加されたコレ。

f:id:matsujirushix:20191211193941p:plain

コレが入っていると、Visual Studioの新規プロジェクトにAzure Sphereが追加されます。

f:id:matsujirushix:20191211194149p:plain

Azure Sphereを選択すると、Azure Sphere向けのプロジェクトテンプレートがズラズラ~っと表示され、、、ていました。以前は。
どこかのバージョンから、サンプルプログラムがプロジェクトテンプレートからgithubによる配布に変更になったため、プロジェクトテンプレートには僅か2個しか出ません。(以前はこんな感じだった。)

f:id:matsujirushix:20191211194245p:plain

一応、両方確認しますか。

Azure Sphere MT3620 Blank

Azure Sphere MT3620 Blankでプロジェクトを新規作成すると、HighLevelCoreとRealTimeCoreのフォルダが出来上がります。

f:id:matsujirushix:20191211194644p:plain

良く見ると、CMakeLists.txt。
(あぁ、CMakeの波がここまで及んでいるんですね... ちょっと苦手。)

HighLevelCore

HighLevelCoreのmain.cを覗くと、1秒間隔でログ出力するコードでした。

f:id:matsujirushix:20191211195519p:plain

「tick」と「tock」を書いているところ、なんだか作者の人間味を感じますね。

RealTimeCore

一方、RealTimeCoreのmain.cは、、、

f:id:matsujirushix:20191211195734p:plain

OSレスのベアメタル!!

ペリフェラルのアドレスやベクターテーブルがベタ書きで、マニア心をくすぐる感じですw

ざっくり斜め読みすると、UARTと(ウェイトするための)タイマーを使う関数を用意して、HighLevelCoreと同様、1秒間隔でUART出力するコードでした。

f:id:matsujirushix:20191211200020p:plain

Azure Sphere Blank

今度は、Azure Sphere Blankを見てみます。

f:id:matsujirushix:20191211200324p:plain

フォルダが無い。

スタートアップを見てみると、

f:id:matsujirushix:20191211200414p:plain

HighLevelCoreだけのようです。

main.cは、

f:id:matsujirushix:20191211200510p:plain

HighLevelCoreのコードですね。

1秒間隔でLEDを点灯、消灯するコードでした。

まとめ

Visual Studioのプロジェクトテンプレートは、

  • Azure Sphere Blankは、
    • HighLevelCoreのみ
    • Lチカ
  • Azure Sphere MT3620 Blankは、
    • HighLevelCore+RealTimeCore
    • ログ出力とUART出力

でした。

おしまい。