AZ3166 で Azure RTOS サンプルコードを動かす

マイクロソフトから、Azure RTOSチュートリアルがいくつか公開されています。

docs.microsoft.com

手元にあるボードは、STマイクロのB-L475E-IOT01とMXChipのAZ3166なので、、、AZ3166で動かしてみました。

AZ3166の手順は、azure-rtos/getting-startedリポジトリの、MXChip/AZ3166/readme.mdに詳しく書いてあります。

github.com

開発環境を用意

azure-rtos/getting-startedリポジトリに.devcontainerがあるので、VS Code Remote - Containersを使えばパッと環境が用意できるのでは?と思い試しましたが、プロンプトが遅い現象に見舞われ、またこれを回避してもコンパイルが激遅でした。現時点は、devcontainerによるコンパイルはおすすめしません。

でも、手元PCの環境を変更したくなかったので、Azure上にVMを立てて、ここでコンパイルすることにしました。

f:id:matsujirushix:20210111140710p:plain

サイズは大きなものを使う必要はないでしょう。Standard D2s v3にしました。

f:id:matsujirushix:20210111140839p:plain

VS Code - SSHの利用は必須ですね。作業効率爆上げ。

f:id:matsujirushix:20210111141129p:plain

手順に沿ってコマンドを実行します。

サンプルコードをcloneして、

git clone --recursive https://github.com/azure-rtos/getting-started.git

コンパイルに必要なツールをインストールします。

cd getting-started
./tools/get-toolchain.sh

環境変数が変更になっている(らしい)ので、ターミナルを再起動します。ターミナル右上のごみ箱マークをクリックして、メニューのターミナル > 新しいターミナルを実行します。

そして、ここで、~/getting-started ディレクトリをVS Codeで開いておきましょう。

f:id:matsujirushix:20210111141711p:plain

接続情報を設定

MXChip/AZ3166/app/azure_config.h に、Wi-FiやAzure IoT Hubの接続情報を設定します。

define名 設定する内容
WIFI_SSID Wi-Fi SSID
WIFI_PASSWORD Wi-Fi パスワード
IOT_HUB_HOSTNAME Azure IoT Hub ホスト名
IOT_HUB_DEVICE_ID Azure IoT Hub デバイスID
IOT_DEVICE_SAS_KEY Azure IoT Hub デバイスSASキー

f:id:matsujirushix:20210111142657p:plain

コンパイル

ターミナルで、rebuild.shを実行します。

./MXChip/AZ3166/tools/rebuild.sh 

2分程度でビルド完了しました。

f:id:matsujirushix:20210110212726p:plain

バイナリをAZ3166へ書き込む

生成したmxchip_azure_iot.binを(TeraTermなどを使って)手元PCへコピーして、AZ3166のMSDへコピーすればOKです。

動作確認

正常に動作すると、USBのVCOMにAzure IoT Hubへメッセージを送信しているっぽいテキストが表示されます。

f:id:matsujirushix:20210110213351p:plain

Azure IoT ExplorerでAzure IoT Hub側にメッセージが到達していることが確認できます。

f:id:matsujirushix:20210110213514p:plain

f:id:matsujirushix:20210110213625p:plain

まとめ

  • devcontainerは、現時点は激遅なので避けた方がいい。
  • コンパイル環境整備、コンパイルはチョー簡単。(シェルが用意されていて、まともに動いたので)