

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Renesas RX65N での FreeRTOS OTA デモのダウンロード、構築、フラッシュ、および実行
<a name="download-rx65n-ota"></a>

**重要**  <a name="deprecation-message"></a>
このリファレンス統合は、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、[ここから始める](freertos-getting-started-modular.md)ことをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「[Amazon FreeRTOS Github リポジトリ移行ガイド](github-repo-migration.md)」を参照してください。

この章では、Renesas RX65N で FreeRTOS OTA デモアプリケーションをダウンロード、構築、フラッシュ、および実行する方法について説明します。

**Topics**
+ [オペレーティング環境をセットアップする](#download-rx65n-ota-environment)
+ [AWS リソースをセットアップする](#download-rx65n-ota-setup)
+ [ヘッダーファイルをインポートして設定し、aws\_demos と boot\_loader を構築する](#download-rx65n-ota-import-configure)

## オペレーティング環境をセットアップする
<a name="download-rx65n-ota-environment"></a>

このセクションの手順では、次の環境を使用します。
+ **IDE**: e2 studio 7.8.0、e2 studio 2020-07
+ **ツールチェーン**: CCRX Compiler v3.0.1
+ **ターゲットデバイス**: RSKRX65N-2MB
+ **デバッガー**: E2、E2 Lite エミュレータ
+ **ソフトウェア**: Renesas Flash Programmer、Renesas Secure Flash Programmer.exe、Tera Term

**ハードウェアをセットアップするには**

1. E2 Lite エミュレータと USB シリアルポートを RX65N ボードと PC に接続します。

1. 電源を RX65N に接続します。

## AWS リソースをセットアップする
<a name="download-rx65n-ota-setup"></a>

1. FreeRTOS デモを実行するには、 AWS IoT サービスへのアクセス権限を持つ IAM ユーザーの AWS アカウントが必要です。まだの場合は、[AWS アカウントとアクセス許可の設定](freertos-prereqs.md#freertos-account-and-permissions)の手順に従ってください。

1. OTA の更新を設定するには、[OTA 更新の前提条件](ota-prereqs.md)の手順に従います。特に、[MQTT を使用した OTA 更新の前提条件](ota-mqtt-freertos.md) の手順を実行してください。

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)を開きます。

1. 左側のナビゲーションペインで、**[Manage]** (管理)、**[Things]** (モノ) の順に選択して、モノを作成します。

   モノとは、 AWS IoTにおける特定のデバイスまたは論理エンティティを表します。物理的なデバイスやセンサー (電球や壁のスイッチなど) は、モノとして扱うことができます。また、アプリケーションのインスタンスのような論理エンティティや AWS IoT、接続しないが接続するデバイスに関連する物理エンティティ (エンジンセンサーやコントロールパネルがある車など) でもかまいません。 は、モノの管理に役立つモノレジストリ AWS IoT を提供します。

   1. **[Create]** (作成)、**[Create a single thing]** (単一のモノを作成する) の順に選択します。

   1. モノの名前を **[Name]** (名前) に入力し、**[Next]** (次へ) を選択します。

   1. [**証明書の作成**] を選択します。

   1. 作成された 3 つのファイルをダウンロードして、**[Activate]** (アクティブ化) を選択します。

   1. [**ポリシーのアタッチ**] を選択します。  
![ダウンロードするファイルを表示するコンソール画面](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/download-these-files-rx65n.png)

   1. [デバイスポリシー](ota-mqtt-freertos.md#ota-mqtt-freertos-device-policy)で作成したポリシーを選択します。

      MQTT を使用して OTA 更新を受信する各デバイスは、 にモノとして登録する必要があり AWS IoT 、モノにはリストされているようなポリシーがアタッチされている必要があります。`"Action"` および `"Resource"` オブジェクトの項目の詳細については、[AWS IoT Core ポリシーアクション](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html)と[AWS IoT Core アクションリソース](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html)を参照してください。

**注意事項**
      + アクセス`iot:Connect`許可により、デバイスは MQTT AWS IoT 経由で に接続できます。
      +  AWS IoT ジョブ (`.../jobs/*`) のトピックに対する `iot:Subscribe` および `iot:Publish` アクセス許可を使用すると、接続されたデバイスがジョブ通知とジョブドキュメントを受け取り、ジョブ実行の完了状態を公開できます。
      + OTA ストリーム (`.../streams/*`) AWS IoT のトピックに対する `iot:Subscribe`および アクセス`iot:Publish`許可により、接続されたデバイスは OTA 更新データを取得できます AWS IoT。これらのアクセス許可は、MQTT を介してファームウェア更新を実行するために必要です。
      + アクセス`iot:Receive`許可により、 AWS IoT Core はそれらのトピックに関するメッセージを接続されたデバイスに発行できます。このアクセス許可は、MQTT メッセージの配信ごとにチェックされます。このアクセス許可を使用して、トピックに現在サブスクライブしているクライアントへのアクセスを取り消すことができます。

1. コード署名プロファイルを作成し、コード署名証明書を登録するには AWS。

   1. キーと証明書を作成するには、[Renesas MCU ファームウェア更新の設計ポリシー](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy)のセクション 7.3「OpenSSL で ECDSA-SHA256 キーペアを生成する」を参照してください。

   1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)を開きます。左側のナビゲーションペインで、**[Manage]** (管理)、**[Jobs]** (ジョブ) の順に選択します。**[Create a job]** (ジョブの作成) を選択して、**[Create OTA update Job]** (OTA 更新ジョブの作成) を選択します。

   1. **[Select devices to update]** (更新するデバイスの選択) で、**[Select]** (選択) を選択して作成済みのモノを選択します。**[次へ]** を選択してください。

   1. **[Create a FreeRTOS OTA update job]** (FreeRTOS OTA 更新ジョブの作成) ページで、次の手順を実行します。

      1. **[Select the protocol for firmware image transfer]** (ファームウェアイメージ転送プロトコルを選択) で、**[MQTT]** を選択します。

      1. **[Select and sign your firmware image]** (ファームウェアイメージの選択と署名) で、**[Sign a new firmware image for me]** (新しいファームウェアイメージに署名します) を選択します。

      1. **[Code signing profile]** (コード署名プロファイル) で、**[Create]** (作成) を選択します。

      1. **[Create a code signing profile]** (コード署名プロファイルの作成) ウィンドウで、**[Profile name]** (プロファイル名) を入力します。**[Device hardware platform]** (デバイスハードウェアプラットフォーム) で、**[Windows Simulator]** を選択します。**[Code signing certificate]** (コード署名証明書) で、**[Import]** (インポート) を選択します。

      1. 証明書 (`secp256r1.crt`)、証明書のプライベートキー (`secp256r1.key`)、証明書チェーン (`ca.crt`) を参照して選択します。

      1. **[Pathname of code signing certificate on device]** (デバイスのコード署名証明書のパス名) を入力します。次に **[作成]** を選択します。

1. のコード署名へのアクセスを許可するには AWS IoT、「」の手順に従います[のコード署名へのアクセスを許可する AWS IoT](code-sign-policy.md)。

Tera Term が PC にインストールされていない場合は、以下のとおり [https://ttssh2.osdn.jp/index.html.en](https://ttssh2.osdn.jp/index.html.en) からダウンロードしてセットアップできます。USB シリアルポートがデバイスから PC に差し込まれていることを確認します。

![Tera Term シリアルポート設定ウィンドウ](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/tera-team-rx65n.png)


## ヘッダーファイルをインポートして設定し、aws\_demos と boot\_loader を構築する
<a name="download-rx65n-ota-import-configure"></a>

まず、FreeRTOS パッケージの最新バージョンを選択すると、GitHub からこれがダウンロードされ、プロジェクトに自動的にインポートされます。このようにして、FreeRTOS の設定とアプリケーションコードの記述に集中できます。

1. e2 studio を起動します。

1. **[File]** (ファイル) を選択して、**[Import...]** (インポート...) を選択します。

1. **[Renesas GitHub FreeRTOS (with IoT libraries) Project]** (Renesas GitHub FreeRTOS (IoT ライブラリ) プロジェクト) を選択します。  
![e-squared studio インポートウィンドウ](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/import-renesas-project-rx65n.png)

1. **[Check for more version...]** (他のバージョンを確認する...) を選択して、ダウンロードダイアログボックスを表示します。  
![e-squared studio ダウンロードダイアログウィンドウ](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/check-more-version-rx65n.png)

1. 最新のパッケージを選択します。  
![e-squared studio モジュールのダウンロードダイアログウィンドウ](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/choose-latest-version-rx65n.png)

1. **[Agree]** (同意する) を選択して、エンドユーザー使用許諾契約に同意します。  
![e-squared studio EULA ダイアログ](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/eula-rx65n.png)

1. ダウンロードが完了するまで待ちます。  
![ダウンロードの進行状況バー](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/downloading-rx65n.png)

1. **aws\_demos** と **boot\_loader** プロジェクトを選択し、**[Finish]** (完了) を選択してインポートします。  
![プロジェクトインポートウィンドウ](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/import-projects-rx65n.png)

1. 両方のプロジェクトで、プロジェクトプロパティを開きます。ナビゲーションペインで **[Tool Chain Editor]** (ツールチェーンエディタ) を選択します。

   1. **[Current toolchain]** (現在のツールチェーン) を選択します。

   1. **[Current builder]** (現在のビルダー) を選択します。  
![e-squared studio プロパティウィンドウ](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/project-properties-rx65n.png)

1. ナビゲーションペインで **[設定]** を選択します。**[Toolchain]** (ツールチェーン) タブで、ツールチェーンの **[Version]** (バージョン) を選択します。  
![Renesas CCRX バージョン v3.01.00 のツールチェーン統合設定で、ツールチェーン変更オプションが含まれます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/project-properties-toolchain-rx65n.png)

   **[Tool Settings]** (ツール設定) タブを選択して、**[Converter]** (コンバーター) を展開し、**[Output]** (出力) を選択します。メインウィンドウで **[Output hex file]** (16 進数ファイルの出力) が選択されていることを確認し、**[Output file type]** (出力ファイルタイプ) を選びます。  
![C/C++ ビルド設定ウィンドウで、出力 16 進数ファイル、出力ファイルタイプ、出力ディレクトリ、ファイル分割オプションなどのコンパイラとリンカーのオプションが表示されます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/project-properties-settings-rx65n.png)  
![インターフェイス設定ツリーで、スタック分析、ツールチェーンエディタ、C/C++ 全般、MCU、プロジェクトリファレンスなどのオプションが含まれます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/project-properties-settings-2-rx65n.png)

1. bootloader プロジェクトで、`projects\renesas\rx65n-rsk\e2studio\boot_loader\src\key\code_signer_public_key.h` を開き、パブリックキーを入力します。パブリックキーの作成方法については、[Amazon Web Services を使用して RX65N で FreeRTOS OTA を実装する方法](https://www.renesas.com/us/en/document/apn/rx-family-how-implement-freertos-ota-using-amazon-web-services-rx65n)と [Renesas MCU ファームウェア更新の設計ポリシー](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy)のセクション 7.3「OpenSSL で ECDSA-SHA256 キーペアを生成する」を参照してください。  
![C ヘッダーファイルを示す Code Editor で、CODE_SIGNER_PUBLIC_KEY と PEM エンコードされたコードの署名者のパブリックキー変数の定義が含まれます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/open-bootloader-project-rx65n.png)

   次にプロジェクトを構築して、`boot_loader.mot` を作成します。

1. `aws_demos` プロジェクトを開きます。

   1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/home)を開きます。

   1. 左のナビゲーションペインの [**Settings**] (設定) を選択します。**[Device data endpoint]** (デバイスデータエンドポイント) テキストボックスのカスタムエンドポイントをメモします。

   1. **[Manage]** (管理) を選択して、**[Things]** (モノ) を選択します。ボードの AWS IoT モノの名前を書き留めます。

   1. `aws_demos` プロジェクトで、`demos/include/aws_clientcredential.h` を開き、次の値を指定します。

      ```
      #define clientcredentialMQTT_BROKER_ENDPOINT[] = "{{Your AWS IoT endpoint}}";
      #define clientcredentialIOT_THING_NAME "{{The AWS IoT thing name of your board}}"
      ```  
![AWS IoT モノの名前とブローカーエンドポイントの設定を示すコードスニペット。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/client-credential-rx65n.png)

   1. `tools/certificate_configuration/CertificateConfigurator.html` ファイルを開きます。

   1. ダウンロード済みの証明書 PEM ファイルとプライベートキー PEM ファイルをインポートします。

   1. **[Generate and save aws\_clientcredential\_keys.h]** (aws\_clientcredential\_keys.h の生成と保存) を選択して、`demos/include/` ディレクトリのこのファイルを置き換えます。  
![証明書設定ツールには、 AWS IoT コンソールからクライアント証明書とプライベートキーの PEM ファイルを提供するフィールドと、aws_clientcredential_keys.h ファイルを生成して保存するボタンがあります。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/certificate-config-tool-rx65n.png)

   1. `vendors/renesas/boards/rx65n-rsk/aws_demos/config_files/ota_demo_config.h` ファイルを開いて、次の値を指定します。

      ```
      #define otapalconfigCODE_SIGNING_CERTIFICATE [] = "{{your-certificate-key}}";
      ```

      ここで、{{your-certificate-key}} はファイル `secp256r1.crt` の値です。証明書の各行の後に必ず「\\」を追加してください。`secp256r1.crt` ファイルの作成方法については、[Amazon Web Services を使用して RX65N で FreeRTOS OTA を実装する方法](https://www.renesas.com/us/en/document/apn/rx-family-how-implement-freertos-ota-using-amazon-web-services-rx65n)と [Renesas MCU ファームウェア更新の設計ポリシー](https://www.renesas.com/us/en/document/apn/renesas-mcu-firmware-update-design-policy)のセクション 7.3「OpenSSL で ECDSA-SHA256 キーペアを生成する」を参照してください。  
![ソースコードファイルで、秘匿化済みの証明書データを含む PEM エンコードされたコードの署名者証明書の定数文字列を定義する C コードを示します。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/codesigner-cert-rx65n.png)

1. **タスク A: ファームウェアの初期バージョンをインストールする**

   1. `vendors/renesas/boards/board/aws_demos/config_files/aws_demo_config.h` ファイルを開き、`#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED` をコメントアウトして、`CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED` または `CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED` を定義します。

   1. `demos/include/ aws_application_version.h` ファイルを開き、ファームウェアの初期バージョンを `0.9.2` に設定します。  
![コードスニペットで、メジャーバージョン番号、マイナーバージョン番号、ビルドバージョン番号のマクロなど、アプリケーションのバージョン定義を示します。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/firmware-version-rx65n.png)

   1. **[Section Viewer]** (セクションビューワー) で以下の設定を変更します。  
![セクションビューワーウィンドウには、メモリアドレス、SU、SI、レジスターなどのセクション名、ネットワークバッファ、例外、アクションボタンなどのインターフェイスコンポーネントが表示されます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/section-viewer-rx65n.png)

   1. **[Build]** (構築) を選択して、`aws_demos.mot` ファイルを作成します。

1. Renesas Secure Flash Programmer を使用してファイル `userprog.mot` を作成します。`userprog.mot` は `aws_demos.mot` と `boot_loader.mot` の組み合わせです。このファイルを RX65N-RSK にフラッシュすると、初期ファームウェアをインストールできます。

   1. [https://github.com/renesas/Amazon-FreeRTOS-Tools](https://github.com/renesas/Amazon-FreeRTOS-Tools) をダウンロードして、`Renesas Secure Flash Programmer.exe` を開きます。

   1. **[Initial Firm]** (初期ファーム) タブを選択し、以下のパラメータを設定します。
      + **[Private Key Path]** (プライベートキーのパス): `secp256r1.privatekey` の場所。
      + **[Boot Loader File Path]** (ブートローダーファイルパス): `boot_loader.mot` の場所 (`projects\renesas\rx65n-rsk\e2studio\boot_loader\HardwareDebug`)。
      + **[File Path]** (ファイルパス): `aws_demos.mot` の場所 (`projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug`)。  
![Renesas Secure Flash Programmer ウィンドウで、MCU、ファームウェア検証、シーケンス番号、AES キーパス、ファイルパスフィールドが含まれます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/secure-flash-rx65n.png)

   1. `init_firmware` という名前のディレクトリを作成し、`userprog.mot` を生成して `init_firmware` ディレクトリに保存します。生成が成功したことを確認します。

1. RX65N-RSK で初期ファームウェアをフラッシュします。

   1. Renesas Flash Programmer (プログラミング GUI) の最新バージョンを [https://www.renesas.com/tw/en/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html](https://www.renesas.com/tw/en/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html) からダウンロードします。

   1. `vendors\renesas\rx_mcu_boards\boards\rx65n-rsk\aws_demos\flash_project\erase_from_bank\ erase.rpj` ファイルを開いて銀行のデータを消去します。

   1. **[Start]** (開始) を選択して、銀行を消去します。  
![Renesas Flash Programmer ウィンドウには、RX グループのマイクロコントローラープロジェクトの詳細、ファイルパス、消去、プログラム、開始時に検証ボタンと OK ボタンなどのフラッシュオペレーションオプションが表示されます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/flash-programmer-erasing-rx65n.png)

   1. `userprog.mot` をフラッシュするには、**[Browse...]** (参照...) を選択して `init_firmware` ディレクトリに移動し、`userprog.mot` ファイルを選択して、**[Start]** (開始) を選択します。  
![Renesas Flash Programmer ウィンドウには、マイクロコントローラー RX グループ、プログラムファイルを参照するオプション、消去ボタンと開始ボタン、消去対象として選択したブロックのステータスの詳細など、消去オペレーション設定が表示されます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/flash-programmer-complete-rx65n.png)

1. バージョン 0.9.2 (初期バージョン) のファームウェアが RX65N-RSK にインストールされました。RX65N-RSK ボードは OTA 更新をリッスンするようになりました。PC で Tera Term を開いている場合、初期ファームウェアの実行時に次のように表示されます。

   ```
   -------------------------------------------------
   RX65N secure boot program
   -------------------------------------------------
   Checking flash ROM status.
   bank 0 status = 0xff [LIFECYCLE_STATE_BLANK]
   bank 1 status = 0xfc [LIFECYCLE_STATE_INSTALLING]
   bank info = 1. (start bank = 0)
   start installing user program.
   copy secure boot (part1) from bank0 to bank1...OK
   copy secure boot (part2) from bank0 to bank1...OK
   update LIFECYCLE_STATE from [LIFECYCLE_STATE_INSTALLING] to [LIFECYCLE_STATE_VALID]
   bank1(temporary area) block0 erase (to update LIFECYCLE_STATE)...OK
   bank1(temporary area) block0 write (to update LIFECYCLE_STATE)...OK
   swap bank...
   -------------------------------------------------
   RX65N secure boot program
   -------------------------------------------------
   Checking flash ROM status.
   bank 0 status = 0xf8 [LIFECYCLE_STATE_VALID]
   bank 1 status = 0xff [LIFECYCLE_STATE_BLANK]
   bank info = 0. (start bank = 1)
   integrity check scheme = sig-sha256-ecdsa
   bank0(execute area) on code flash integrity check...OK
   jump to user program
   0 1 [ETHER_RECEI] Deferred Interrupt Handler Task started
   1 1 [ETHER_RECEI] Network buffers: 3 lowest 3
   2 1 [ETHER_RECEI] Heap: current 234192 lowest 234192
   3 1 [ETHER_RECEI] Queue space: lowest 8
   4 1 [IP-task] InitializeNetwork returns OK
   5 1 [IP-task] xNetworkInterfaceInitialise returns 0
   6 101 [ETHER_RECEI] Heap: current 234592 lowest 233392
   7 2102 [ETHER_RECEI] prvEMACHandlerTask: PHY LS now 1
   8 3001 [IP-task] xNetworkInterfaceInitialise returns 1
   9 3092 [ETHER_RECEI] Network buffers: 2 lowest 2
   10 3092 [ETHER_RECEI] Queue space: lowest 7
   11 3092 [ETHER_RECEI] Heap: current 233320 lowest 233320
   12 3193 [ETHER_RECEI] Heap: current 233816 lowest 233120
   13 3593 [IP-task] vDHCPProcess: offer c0a80a09ip
   14 3597 [ETHER_RECEI] Heap: current 233200 lowest 233000
   15 3597 [IP-task] vDHCPProcess: offer c0a80a09ip
   16 3597 [IP-task] IP Address: 192.168.10.9
   17 3597 [IP-task] Subnet Mask: 255.255.255.0
   18 3597 [IP-task] Gateway Address: 192.168.10.1
   19 3597 [IP-task] DNS Server Address: 192.168.10.1
   20 3600 [Tmr Svc] The network is up and running
   21 3622 [Tmr Svc] Write certificate...
   22 3697 [ETHER_RECEI] Heap: current 232320 lowest 230904
   23 4497 [ETHER_RECEI] Heap: current 226344 lowest 225944
   24 5317 [iot_thread] [INFO ][DEMO][5317] ---------STARTING DEMO---------
   
   25 5317 [iot_thread] [INFO ][INIT][5317] SDK successfully initialized.
   26 5317 [iot_thread] [INFO ][DEMO][5317] Successfully initialized the demo. Network type for the demo: 4
   27 5317 [iot_thread] [INFO ][MQTT][5317] MQTT library successfully initialized.
   28 5317 [iot_thread] [INFO ][DEMO][5317] OTA demo version 0.9.2
   
   29 5317 [iot_thread] [INFO ][DEMO][5317] Connecting to broker...
   
   30 5317 [iot_thread] [INFO ][DEMO][5317] MQTT demo client identifier is rx65n-gr-rose (length 13).
   31 5325 [ETHER_RECEI] Heap: current 206944 lowest 206504
   32 5325 [ETHER_RECEI] Heap: current 206440 lowest 206440
   33 5325 [ETHER_RECEI] Heap: current 206240 lowest 206240
   38 5334 [ETHER_RECEI] Heap: current 190288 lowest 190288
   39 5334 [ETHER_RECEI] Heap: current 190088 lowest 190088
   40 5361 [ETHER_RECEI] Heap: current 158512 lowest 158168
   41 5363 [ETHER_RECEI] Heap: current 158032 lowest 158032
   42 5364 [ETHER_RECEI] Network buffers: 1 lowest 1
   43 5364 [ETHER_RECEI] Heap: current 156856 lowest 156856
   44 5364 [ETHER_RECEI] Heap: current 156656 lowest 156656
   46 5374 [ETHER_RECEI] Heap: current 153016 lowest 152040
   47 5492 [ETHER_RECEI] Heap: current 141464 lowest 139016
   48 5751 [ETHER_RECEI] Heap: current 140160 lowest 138680
   49 5917 [ETHER_RECEI] Heap: current 138280 lowest 138168
   59 7361 [iot_thread] [INFO ][MQTT][7361] Establishing new MQTT connection.
   62 7428 [iot_thread] [INFO ][MQTT][7428] (MQTT connection 81cfc8, CONNECT operation 81d0e8) Wait complete with result SUCCESS.
   63 7428 [iot_thread] [INFO ][MQTT][7428] New MQTT connection 4e8c established.
   64 7430 [iot_thread] [OTA_AgentInit_internal] OTA Task is Ready.
   65 7430 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [Ready] Event [Start] New state [RequestingJob]
   66 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled.
   67 7431 [OTA Agent T] [INFO ][MQTT][7431] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion.
   68 7436 [ETHER_RECEI] Heap: current 128248 lowest 127992
   69 7480 [OTA Agent T] [INFO ][MQTT][7480] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS.
   70 7480 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/$next/get/accepted
   71 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8) SUBSCRIBE operation scheduled.
   72 7481 [OTA Agent T] [INFO ][MQTT][7481] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Waiting for operation completion.
   73 7530 [OTA Agent T] [INFO ][MQTT][7530] (MQTT connection 81cfc8, SUBSCRIBE operation 818c48) Wait complete with result SUCCESS.
   74 7530 [OTA Agent T] [prvSubscribeToJobNotificationTopics] OK: $aws/things/rx65n-gr-rose/jobs/notify-next
   75 7530 [OTA Agent T] [prvRequestJob_Mqtt] Request #0
   76 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8) MQTT PUBLISH operation queued.
   77 7532 [OTA Agent T] [INFO ][MQTT][7532] (MQTT connection 81cfc8, PUBLISH operation 818b80) Waiting for operation completion.
   78 7552 [OTA Agent T] [INFO ][MQTT][7552] (MQTT connection 81cfc8, PUBLISH operation 818b80) Wait complete with result SUCCESS.
   79 7552 [OTA Agent T] [prvOTAAgentTask] Called handler. Current State [RequestingJob] Event [RequestJobDocument] New state [WaitingForJob]
   80 7552 [OTA Agent T] [prvParseJSONbyModel] Extracted parameter [ clientToken: 0:rx65n-gr-rose ]
   81 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: execution
   82 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobId
   83 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: jobDocument
   84 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: afr_ota
   85 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: protocols
   86 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: files
   87 7552 [OTA Agent T] [prvParseJSONbyModel] parameter not present: filepath
   99 7651 [ETHER_RECEI] Heap: current 129720 lowest 127304
   100 8430 [iot_thread] [INFO ][DEMO][8430] State: Ready  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   101 9430 [iot_thread] [INFO ][DEMO][9430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   102 10430 [iot_thread] [INFO ][DEMO][10430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   103 11430 [iot_thread] [INFO ][DEMO][11430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   104 12430 [iot_thread] [INFO ][DEMO][12430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   105 13430 [iot_thread] [INFO ][DEMO][13430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   106 14430 [iot_thread] [INFO ][DEMO][14430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   107 15430 [iot_thread] [INFO ][DEMO][15430] State: WaitingForJob  Received: 1   Queued: 0   Processed: 0   Dropped: 0
   ```

1. **タスク B: ファームウェアのバージョンを更新する**

   1. `demos/include/aws_application_version.h` ファイルを開き、`APP_VERSION_BUILD` トークン値を `0.9.3` に増やします。

   1. プロジェクトを再構築します。

1. Renesas Secure Flash Programmer で `userprog.rsu` ファイルを作成し、ファームウェアのバージョンを更新します。

   1. `Amazon-FreeRTOS-Tools\Renesas Secure Flash Programmer.exe` ファイルを開きます。

   1. **[Update Firm]** (ファームの更新) タブを選択し、以下のパラメータを設定します。
      + **[File Path]** (ファイルパス): `aws_demos.mot` ファイルの場所 (`projects\renesas\rx65n-rsk\e2studio\aws_demos\HardwareDebug`)。

   1. `update _firmware` という名前のディレクトリを作成します。`userprog.rsu` を生成して、`update_firmware` ディレクトリに保存します。生成が成功したことを確認します。  
![Renesas Secure Flash Programmer ウィンドウには、MCU 選択、ファームウェア検証タイプ、シーケンス番号、AES MAC キーフィールド、セキュアファームウェアを生成するためのファイルパス入力が表示されます。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/update-firmware-rx65n.png)

1. [更新を保存する Amazon S3 バケットを作成する](dg-ota-bucket.md) のとおり、ファームウェア更新 `userproj.rsu` を Amazon S3 バケットに更新します。  
![Amazon S3 バケット管理インターフェイスで、フォルダ、アップロード、バージョン、権限オプションがあります。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/upload-firmware-rx65n.png)

1. RX65N-RSK でファームウェアを更新するジョブを作成します。

   AWS IoT ジョブは、1 つ以上の接続されたデバイスに保留中の[ジョブ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)を通知するサービスです。ジョブは、多数のデバイスの管理、デバイス上のファームウェアおよびセキュリティ証明書の更新、デバイスの再起動や診断の実行などの管理タスクの実行に使用できます。

   1. [AWS IoT コンソール](https://console.aws.amazon.com/iotv2/) にサインインします。ナビゲーションペインで、**[Manage]** (管理)、**[Jobs]** (ジョブ) の順に選択します。

   1. **[Create a job]** (ジョブの作成) を選択して、**[Create OTA Update job]** (OTA 更新ジョブの作成) を選択します。モノを選択して、**[Next]** (次へ) を選択します。

   1. FreeRTOS OTA 更新ジョブを次のように作成します。
      + **[MQTT]** を選択します。
      + 前のセクションで作成したコード署名プロファイルを選択します。
      + Amazon S3 バケットにアップロードしたファームウェアイメージを選択します。
      + **[Pathname of firmware image on device]** (デバイスのファームウェアイメージのパス名) で、**test** と入力します。
      + 前のセクションで作成した IAM ロールを選択します。

   1. [**次へ**] を選択します。  
![ファームウェアイメージの署名と OTA 更新設定には、新しいファームウェアの署名、以前に署名されたファームウェアの選択、カスタム署名されたファームウェアの使用、コード署名プロファイルの指定、ファームウェアイメージファイル、デバイスのパス、OTA 更新ジョブの IAM ロールのオプションがあります。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/create-job-next-rx65n.png)

   1. ID を入力して、**[Create]** (作成) を選択します。

1. Tera Term を再度開いて、ファームウェアが OTA デモバージョン 0.9.3 に正常に更新されたことを確認します。  
![コマンドライン出力で、スレッドの初期化とブローカーへの接続を示します。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/update-successful-rx65n.png)

1.  AWS IoT コンソールで、ジョブのステータスが**成功**であることを確認します。  
![AFR OTA-demo テストジョブ概要: 1 つリソースが正常に完了しました。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/completed-succeeded-rx65n.png)