Renesas RX65N Cloud Kit で Azure RTOS を動かして Azure IoT Hubに接続してみる

この記事では、Renesas RX65N Cloud Kit を使って、Azure RTOS を動かして、Azure IoT Hubにデータがアップロードされるまでの手順を記載します。Azure RTOS を試してみたい気持ちが強かったので、今回の記事では主にデバイス側の開発環境の構築からサンプルプロジェクトを動かしてみるところを書きます。一方で、Azure IoT Hub の環境構築は多くの情報がネット上にあるので、今回は割愛します（ごめんなさい）。

**Renesas RX65N Cloud Kit**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/e8fa8754-de5c-eeed-005d-25b7a9081ca5.png)

# 全体の流れ
1. ルネサスマイコン用の統合開発環境e² studioのインストール
1. RX用コンパイラ（GCC for Renesas RX）のインストール
1. AzureRTOSのサンプルプロジェクトのダウンロード
1. RX65N Cloud KitのPC接続
1. サンプルプロジェクトを使った環境構築
1. サンプル（sample_azure_iot_embedded_sdk）を動作させる

# ルネサスマイコン用の統合開発環境e² studioのインストール
以下のサイトよりインストールします。
https://www2.renesas.cn/us/ja/software-tool/e-studio

[Upgrades]となっていたので、新規インストールなので大丈夫かなと一瞬迷いましたが、これで良かったみたいです。後の手順では、特に悩む点はなかったので、インストーラの手順に従ってインストールします。最新版をインストールして問題ないと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/b5ea6607-433f-7155-5804-55692d14efac.png)

# RX用コンパイラ（GCC for Renesas RX）のインストール
以下のサイトよりインストールします。
https://llvm-gcc-renesas.com/ja/rx-download-toolchains/

尚、以下で使用するAzureRTOSのサンプルプログラムは、「GCC for Renesas 8.3.0.202004-GNURX Toolchain」を使用する構成になっているので、バージョンには気を付けて下さい。ちなみに、私は最新版のToolchainをインストールしてはまりました。。。
※e² studio上でちゃんとツールチェーンを指定すれば問題はないと思いますが、無難なのはこのバージョン。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/c1023bb7-948b-4bf2-34a6-9022dbab47c0.png)


# AzureRTOSのサンプルプロジェクトのダウンロード
以下のサイトよりダウンロードします。
https://github.com/azure-rtos/samples

各種マイコン用のサンプルやいろいろなサンプルがありますが、今回は、「Azure_RTOS_6.1_RX65N_Cloud_Kit_E2Studio_GNURX_Samples_2021_03_18.zip」を使用します。上にも書いてありますが、このサンプルプログラムでは、ツールチェーンのバージョンが「8.3.0.202004」になっているので、注意が必要です。
RX65Nのプロジェクトも複数ありますが、「2021_03_18」の日付のものを見ると、開発環境による違いとコンパイラによる違いでしょうか。簡単でも説明が書いてあると迷わなくて良いのですが。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/1cf4fbb3-b0a8-e9f4-5fc1-8c6911e45ec9.png)

あとは、ダウンロードファイルがzipファイルであり、解凍して使用する必要があるのですが、解凍先のパスが長くなると解凍でエラーが発生する場合があるそうなので、パスは短いものを使用します。私も、これぐらい大丈夫だろと思って解凍したら、エラーが発生しました。

# RX65N Cloud KitのPC接続方法
マイクロソフトの公式ドキュメントが分かりやすいので、参考に
EJ2のヘッダピンを外す必要があるので、忘れずに外して、PCに接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/41067564-12f9-45ea-153a-d6256c20c4c5.png)


# サンプルプロジェクトを使った環境構築
1. e² studioを起動する
1. ワークスペースは適当に選択
1. ツールチェーンの登録画面が出るので、一応、バージョンを確認して登録
1. e² studioが起動したら、[ファイル]-[インポート]からサンプルのプロジェクトをインポート
1. インポート・ウィザードでは、[一般]-[既存プロジェクトをワークスペースへ]を選択
1. 解凍したAzureRTOSのフォルダを選択して、全てのプロジェクトをインポート
1. [オプション]の「プロジェクトをワークスペースにコピー」にチェックを入れておく（おすすめ）

Toolchainの設定を確認しておきましょう（特にバージョン）。
・ツール全体：[ヘルプ]-[Renesasツールチェーンの追加]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/3d29982c-64c9-226b-dcd4-73ebc23614a0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/5314ae42-b349-1f56-8e2a-e006335d7156.png)
・プロジェクト毎の設定
プロジェクトを選択して、右クリックからの[プロパティ]-[C/C++ ビルド]-[設定]-[Toolchain]
このプロジェクトのツールチェーンのバージョンが、ツール全体で有効になっていないと駄目なようです。なので、初めから、「8.3.0.202004」で統一しておくと無難です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/2b78c978-4b03-2f91-7f53-80c8d3d62107.png)

# サンプル（sample_azure_iot_embedded_sdk）を動作させる
ソースコードに追記する必要があるのは、以下の２点です。
・WiFi設定：main.cに追記
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/f213a457-7aa7-32b3-7a12-82cd9bd908cd.png)
・Azure IoT Hub設定：sample_config.h
ここでは、Azure IoT Hubの接続の設定値を入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/600203cd-bfba-332f-101a-848e936c460d.png)

あとは、クリーン／ビルド／デバッグを行います。
TeraTermなどでシリアルからログ出力を確認できるので、動作を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475457/2b29236f-d155-ca13-b638-46433e1f265b.png)

# 関連サイト
・RXクラウドコネクティビティソリューション
https://www.renesas.com/us/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/cloud-solution

・Azure RTOSチュートリアル(1/3) RX65N Cloud Kit : ~開発環境セットアップ編～
https://www2.renesas.cn/us/ja/node/1524376

・Azure RTOS チュートリアル(2/3) RX65N Cloud Kit : ~プログラムセットアップ編～
https://www2.renesas.cn/us/ja/node/1524381

・Azure RTOS チュートリアル(3/3) RX65N Cloud Kit : ~Azureクラウド操作編～
https://www2.renesas.cn/us/ja/node/1524386

・クイックスタート: Renesas RX65N Cloud Kit を IoT Central に接続する
https://docs.microsoft.com/ja-jp/azure/iot-develop/quickstart-devkit-renesas-rx65n-cloud-kit

# 最後に
記事を記載の現時点(2021/9/2)では、Azure用のOTAサンプルプログラムはありません。AWS用は既にRenesasの[Github](https://github.com/renesas)に公開されているので、そのうち対応されるとと思います。
※AWS用はアプリケーションノートとして纏まってます。
https://www.renesas.com/jp/ja/document/apn/rx-family-how-implement-freertos-ota-using-amazon-web-services-rx65n-rev102?r=1471546

あとは、WiFi設定やAzureへの接続情報は現状はソースコードに直接記載になるので、いろいろ思うところがあります。プロダクトに仕上げる際は、そういった各種設定をどうユーザーにさせるかはプロダクトの設計側で考えることかと思いますが、液晶とタッチパネルで変更できるようにするとか、内部にWebサーバーを立ててそこから変更できるようにするとか、OTAをするだけでもちょっとユーザー側で開発させる項目が多いよなと思うのが、正直なところです。こういったところを含めてメーカー側でもう少し頑張ってくれるを期待したい。