

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

# MW32x AWS IoT スターターキットの開始方法
<a name="getting_started_mw32x"></a>

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

 AWS IoT スターターキットは、NXP の最新の統合 Cortex M4 マイクロコントローラーである 88MW320/88MW322 に基づく開発キットで、802.11b/g/n Wi-Fi を単一のマイクロコントローラーチップに統合しています。FCC 認定されている開発キットです。パートナーから購入する方法の詳細については、[AWS パートナーデバイスカタログ](https://devices.amazonaws.com/detail/a3G0h000000OaRnEAK/MW320-AWS-IoT-Starter-Kit)を参照してください。また、88MW320/88MW322 モジュールも FCC 認定されており、カスタマイズと大量販売が可能です。

この入門ガイドでは、ホストコンピュータで SDK とアプリケーションをクロスコンパイルし、SDK で提供されているツールを使用して、生成されたバイナリファイルをボードにロードする方法を説明します。アプリケーションがボード上で稼働を開始すると、ホストコンピュータのシリアルコンソールからデバッグまたは操作できます。

開発とデバッグでサポートされているホストプラットフォームは Ubuntu 16.04 です。他のプラットフォームも使用できる可能性はありますが、公式にはサポートされていません。ホストプラットフォームにソフトウェアをインストールするには、アクセス許可が必要です。SDK を構築するには、次の外部ツールが必要です。
+ Ubuntu 16.04 ホストプラットフォーム
+ ARM ツールチェーンバージョン 4\_9\_2015q3
+ Eclipse 4.9.0 IDE

ARM ツールチェーンは、アプリケーションと SDK をクロスコンパイルするために必要です。SDK はツールチェーンの最新バージョンを利用して、イメージフットプリントを最適化し、より多くの機能を少ないスペースに収めます。このガイドでは、ツールチェーンのバージョン 4\_9\_2015q3 を使用していることを前提としています。古いバージョンのツールチェーンを使用することはお勧めしません。開発キットは、ワイヤレスマイクロコントローラーのデモプロジェクトのファームウェアで事前にフラッシュされています。

**Topics**
+ [ハードウェアの設定](#gsg-mw32x-hardware)
+ [開発環境のセットアップ](#gsg-mw32x-dev-env)
+ [FreeRTOS デモプロジェクトを構築して実行する](#gsg-mw32x-build-and-run)
+ [デバッグ](#gsg-mw32x-debugging)
+ [トラブルシューティング](#gsg-mw32x-troubleshooting)

## ハードウェアの設定
<a name="gsg-mw32x-hardware"></a>

ミニ USB や USB ケーブルを使用して、MW32x ボードをラップトップに接続します。ミニ USB ケーブルは、ボード上の唯一のミニ USB コネクタに接続します。ジャンパー交換は不要です。

ボードがラップトップまたはデスクトップコンピュータに接続されている場合は、外部電源は必要ありません。

この USB 接続では、次の機能が提供されます。
+ ボードへのコンソールアクセス。仮想 tty/com ポートは、コンソールへのアクセスに使用できる開発ホストに登録されます。
+ JTAG のボードへのアクセス。これは、ボードの RAM またはフラッシュにファームウェアイメージをロードまたはアンロードしたり、デバッグしたりするために使用できます。

## 開発環境のセットアップ
<a name="gsg-mw32x-dev-env"></a>

開発目的での最小要件は、ARM ツールチェーンと SDK にバンドルされているツールです。次のセクションでは、ARM ツールチェーンの設定について説明します。

### GNU ツールチェーン
<a name="gsg-mw32x-dev-env-gnu"></a>

SDK は GCC コンパイラツールチェーンを正式にサポートしています。GNU ARM のクロスコンパイラツールチェーンは、[GNU Arm Embedded Toolchain 4.9-2015-q3-update](https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update) にあります。

ビルドシステムは、デフォルトで GNU ツールチェーンを使用するように設定されています。Makefiles は、GNU コンパイラツールチェーンバイナリがユーザーのパスで利用可能であり、Makefiles から呼び出すことができることを前提としています。また、Makefiles は GNU ツールチェーンバイナリのファイル名の先頭に `arm-none-eabi-` が付いていることを想定しています。

GCC ツールチェーンを GDB と共に使用して OpenOCD (SDK にバンドルされている) でデバッグできます。これにより、JTAG と連携するソフトウェアが提供されます。

gcc-arm-embedded ツールチェーンのバージョン 4\_9\_2015q3 をお勧めします。

### Linux ツールチェーンのセットアップ手順
<a name="gsg-mw32x-dev-env-linux"></a>

Linux で GCC ツールチェーンを設定するには、以下の手順に従います。

1. ツールチェーンの tarball は、[GNU Arm Embedded Toolchain 4.9-2015-q3-update](https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update) からダウンロードできます。ファイルは `gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2` です。

1. このファイルを任意のディレクトリにコピーします。ディレクトリ名にスペースが含まれていないことを確認してください。

1. 次のコマンドを使用してファイルを展開します。

   ```
   tar –vxf {{filename}}
   ```

1. インストールされたツールチェーンのパスをシステムのパスに追加します。例えば、`/home/{{user-name}}` ディレクトリにある `.profile` ファイルの末尾に次の行を追加します。

   ```
   PATH=$PATH:{{path to gcc-arm-none-eabit-4_9_2015_q3/bin}}
   ```

**注記**  
新しい Ubuntu のディストリビューションには、GCC クロスコンパイラの Debian バージョンが含まれる場合があります。その場合、ネイティブのクロスコンパイラを削除し、上記のセットアップ手順を行う必要があります。

### Linux 開発ホストでの作業
<a name="gsg-mw32x-dev-env-linux-host"></a>

Ubuntu や Fedora などの最新の Linux デスクトップディストリビューションはどれでも使用できます。ただし、最新リリースにアップグレードすることをお勧めします。次の手順は、Ubuntu 16.04 で動作することが確認されており、そのバージョンを使用していることを前提としています。

#### パッケージのインストール
<a name="gsg-mw32x-dev-env-linux-host-pkgs"></a>

SDK には、新しくセットアップされた Linux マシンでの開発環境の迅速なセットアップを可能にするスクリプトが含まれています。スクリプトは、マシンタイプを自動的に検出し、C ライブラリ、USB ライブラリ、FTDI ライブラリ、ncurses、Python、LaTeX などの適切なソフトウェアをインストールしようとします。このセクションでは、汎用ディレクトリ名は AWS SDK ルートディレクトリ`{{amzsdk_bundle-x.y.z}}`を示します。実際のディレクトリ名は異なる場合があります。ルート権限が必要です。
+ `{{amzsdk_bundle-x.y.z/}}` ディレクトリに移動し、このコマンドを実行します。

  ```
  ./lib/third_party/mcu_vendor/marvell/WMSDK/mw320/sdk/tools/bin/installpkgs.sh
  ```

#### sudo の回避
<a name="gsg-mw32x-dev-env-linux-host-sudo"></a>

以下の説明のとおり、このガイドでは `flashprog` オペレーションで `flashprog.py` スクリプトを使用して、ボードの NAND をフラッシュします。同様に、`ramload` オペレーションでは `ramload.py` スクリプトを使用して、NAND をフラッシュせずにホストからマイクロコントローラーの RAM にファームウェアイメージを直接コピーします。

Linux 開発ホストを設定して、`sudo` コマンドを毎回必要とせずに `flashprog` および `ramload` オペレーションを実行できるようになります。これを行うには、以下のコマンドを実行します。

```
./lib/third_party/mcu_vendor/marvell/WMSDK/mw320/sdk/tools/bin/perm_fix.sh
```

**注記**  
スムーズな Eclipse IDE エクスペリエンスを実現するように、Linux 開発ホストの権限を設定する必要があります。

#### シリアルコンソールの設定
<a name="gsg-mw32x-dev-env-linux-host-serial"></a>

USB ケーブルを Linux ホスト USB スロットに挿入します。これにより、デバイスの検出がトリガーされます。`/var/log/messages` ファイル、または `dmesg` コマンド実行後に次のようなメッセージが表示されます。

```
Jan 6 20:00:51 localhost kernel: usb 4-2: new full speed USB device using uhci_hcd and address 127
Jan 6 20:00:51 localhost kernel: usb 4-2: configuration #1 chosen from 1 choice
Jan 6 20:00:51 localhost kernel: ftdi_sio 4-2:1.0: FTDI USB Serial Device converter detected
Jan 6 20:00:51 localhost kernel: ftdi_sio: Detected FT2232C
Jan 6 20:00:51 localhost kernel: usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB0
Jan 6 20:00:51 localhost kernel: ftdi_sio 4-2:1.1: FTDI USB Serial Device converter detected
Jan 6 20:00:51 localhost kernel: ftdi_sio: Detected FT2232C
Jan 6 20:00:51 localhost kernel: usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB1
```

2 つの ttyUSB デバイスが作成済みであることを確認します。2 つ目の ttyUSB はシリアルコンソールです。上記の例では「ttyUSB1」という名前です。

このガイドでは、minicom を使用してシリアルコンソールの出力を確認します。また、`putty` のような他のシリアルプログラムを使用することもできます。以下のコマンドを実行して、minicom をセットアップモードで実行します。

```
minicom –s
```

minicom で、**[Serial Port Setup]** (シリアルポートの設定) に移動し、次の設定をキャプチャします。

```
| A - Serial Device : /dev/ttyUSB1
| B – Lockfile Location : /var/lock
| C - Callin Program :
| D - Callout Program :
| E - Bps/Par/Bits : 115200 8N1
| F – Hardware Flow Control : No
| G – Software Flow Control : No
```

今後使用できるように、これらの設定を minicom に保存することができます。シリアルコンソールからのメッセージが minicom ウィンドウに表示されます。

シリアルコンソールウィンドウを選択し、**Enter** キーを押します。画面にハッシュ (\#) が表示されます。

**注記**  
開発ボードには、FTDI シリコンデバイスが含まれています。FTDI デバイスは、ホストに 2 つの USB インターフェイスを提供します。最初のインターフェイスは MCU の JTAG 機能に関連付けられ、2 つ目のインターフェイスは MCU の物理 UARTx ポートに関連付けられます。

#### OpenOCD のインストール
<a name="gsg-mw32x-dev-env-linux-host-openocd"></a>

OpenOCD は、組み込みターゲットデバイスのデバッグ、システム内プログラミング、バウンダリスキャンテストを提供するソフトウェアです。

OpenOCD バージョン 0.9 が必要です。Eclipse の機能にも必要です。バージョン 0.7 などの以前のバージョンが Linux ホストにインストールされている場合は、現在使用している Linux ディストリビューションに適したコマンドを使用して、そのリポジトリを削除します。

標準の Linux コマンドを実行して OpenOCD をインストールします。

```
apt-get install openocd
```

上記のコマンドでバージョン 0.9 以降がインストールされない場合は、次の手順を使用して openocd ソースコードをダウンロードしてコンパイルします。

**OpenOCD をインストールするには**

1. 次のコマンドを実行して libusb-1.0 をインストールします。

   ```
   sudo apt-get install libusb-1.0 
   ```

1. [http://openocd.org/](http://openocd.org/) から openocd 0.9.0 ソースコードをダウンロードします。

1. openocd を抽出し、展開したディレクトリに移動します。

1. 次のコマンドで openocd を設定します。

   ```
   ./configure --enable-ftdi --enable-jlink
   ```

1. make ユーティリティを実行して opencd をコンパイルします。

   ```
   make install
   ```

### Eclipse の設定
<a name="gsg-mw32x-eclipse"></a>

**注記**  
このセクションは、[sudo の回避](#gsg-mw32x-dev-env-linux-host-sudo) のステップが完了していることを前提としています。

Eclipse は、アプリケーションの開発とデバッグに適した IDE です。スレッド対応のデバッグなど、統合されたデバッグサポートを備えた、ユーザーフレンドリーかつ充実した IDE を提供します。このセクションでは、サポートされているすべての開発ホストで共通の Eclipse 設定について説明します。

**Eclipse を設定するには**

1. Java ランタイム環境 (JRE) をダウンロードしてインストールします。

   Eclipse では JRE をインストールする必要があります。Eclipse のインストール後にインストールすることもできますが、最初にインストールすることをお勧めします。JRE のバージョン (32 ビットまたは 64 ビット) が Eclipse のバージョン (32 ビットまたは 64 ビット) と一致している必要があります。JRE は Oracle ウェブサイトの [Java SE Runtime Environment 8 Downloads](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) からダウンロードできます。

1. [http://www.eclipse.org](http://www.eclipse.org) から「Eclipse IDE for C/C\+\+ Developers」をダウンロードしてインストールします。Eclipse バージョン 4.9.0 以降がサポートされています。ダウンロードしたアーカイブを抽出するだけでインストールできます。プラットフォーム固有の Eclipse 実行可能ファイルを実行して、アプリケーションを起動します。

## FreeRTOS デモプロジェクトを構築して実行する
<a name="gsg-mw32x-build-and-run"></a>

FreeRTOS デモプロジェクトを実行するには、次の 2 つの方法があります。
+ コマンドラインを使用します。
+ Eclipse IDE を使用します。

このトピックでは、両方のオプションについて説明します。

**プロビジョニング**
+ テストアプリケーションとデモアプリケーションのどちらを使用するかに応じて、次のいずれかのファイルにプロビジョニングデータを設定します。
  + `./tests/common/include/aws_clientcredential.h` 
  + `./demos/common/include/aws_clientcredential.h` 

  例:

  ```
  #define clientcredentialWIFI_SSID "{{Wi-Fi SSID}}"
  #define clientcredentialWIFI_PASSWORD "{{Wi-Fi password}}"
  #define clientcredentialWIFI_SECURITY "{{Wi-Fi security}}"
  ```
**注記**  
次の Wi-Fi セキュリティ値を入力できます。  
`eWiFiSecurityOpen`
`eWiFiSecurityWEP`
`eWiFiSecurityWPA`
`eWiFiSecurityWPA2`
SSID とパスワードは、二重引用符で囲む必要があります。

**コマンドラインを使用して FreeRTOS デモを構築して実行する**

1. 次のコマンドを使用して、デモアプリケーションの構築を開始します。

   ```
   cmake -DVENDOR=marvell -DBOARD=mw320 -DCOMPILER=arm-gcc -S .  -Bbuild -DAFR_ENABLE_TESTS=0
   ```

   次の例と同じ出力が得られることを確認します。  
![コマンドターミナル出力で、Marvell mw300_rd ワイヤレスマイクロコントローラーボードの FreeRTOS ビルド設定の詳細を示します。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-build-demo-app1.png)

1. ビルドディレクトリに移動します。

   ```
   cd build
   ```

1. make ユーティリティを実行して、アプリケーションを構築します。

   ```
   make all -j4
   ```

   次の図と同じ出力が得られることを確認します。  
![C オブジェクトファイルのビルドプロセスと、 AWS デモ用の静的ライブラリと実行可能ファイルへのリンクを示すターミナル出力。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-build-demo-app2.png)

1. 次のコマンドを使用して、テストアプリケーションを構築します。

   ```
   cmake -DVENDOR=marvell -DBOARD=mw320 -DCOMPILER=arm-gcc -S .  -Bbuild -DAFR_ENABLE_TESTS=1
   cd build
   make all -j4
   ```

   `aws_demos project` と `aws_tests project` の切り替えを行うたびに `cmake` コマンドを実行します。

1. ファームウェアイメージを開発ボードのフラッシュに書き込みます。ファームウェアは、開発ボードがリセットされた後に実行されます。イメージをマイクロコントローラにフラッシュする前に SDK を構築する必要があります。

   1. ファームウェアイメージをフラッシュする前に、共通コンポーネントであるレイアウトと Boot2 を使用して開発ボードのフラッシュを準備します。次のコマンドを使用します。

      ```
      cd amzsdk_bundle-x.y.z
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py -l ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/mw300/layout.txt --boot2 ./vendors/marvell/WMSDK/mw320/boot2/bin/boot2.bin
      ```

      `flashprog` コマンドを実行すると、次の処理が開始されます。
      + レイアウト — flashprog ユーティリティは、最初にレイアウトをフラッシュに書き込むように指示されます。レイアウトは、フラッシュのパーティション情報に似たものです。デフォルトのレイアウトは、`/lib/third_party/mcu_vendor/marvell/WMSDK/mw320/sdk/tools/OpenOCD/mw300/layout.txt` にあります。
      + Boot2 — WMSDK で使用されるブートローダーです。また、`flashprog` コマンドでも、ブートローダーがフラッシュに書き込まれます。ブートローダーは、ボードにフラッシュされた後、マイクロコントローラーのファームウェアイメージをロードします。下の図と同じ出力が得られることを確認します。  
![Layout 要素と boot2 要素をフラッシュするコマンド出力。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-output-flash-layout.png)

   1. ファームウェアはその機能に Wi-Fi チップセットを使用します。Wi-Fi チップセットには独自のファームウェアがあり、フラッシュにも存在する必要があります。`flashprog.py` ユーティリティを使用して、Boot2 ブートローダーと MCU ファームウェアをフラッシュしたのと同じ方法で Wi-Fi ファームウェアをフラッシュします。以下のコマンドを使用して、Wi-Fi ファームウェアをフラッシュします。

      ```
      cd amzsdk_bundle-x.y.z
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py --wififw ./vendors/marvell/WMSDK/mw320/wifi-firmware/mw30x/mw30x_uapsta_W14.88.36.p135.bin
      ```

      以下の図のようなコマンド出力になります。  
![Wi-Fi ファームウェアをフラッシュする](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-flash-wifi-firmware.png)

   1.  次のコマンドを使用して、MCU ファームウェアをフラッシュします。

      ```
      cd amzsdk_bundle-x.y.z 
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py --mcufw build/cmake/vendors/marvell/mw300_rd/aws_demos.bin -r
      ```

   1. ボードをリセットします。デモアプリケーションのログが表示されます。

   1. テストアプリケーションを実行するには、同じディレクトリにある `aws_tests.bin` バイナリをフラッシュします。

      ```
      cd amzsdk_bundle-x.y.z
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py --mcufw build/cmake/vendors/marvell/mw300_rd/aws_tests.bin -r
      ```

      コマンドの出力は、下の図と似たものになります。  
![MCU ファームウェアをフラッシュする](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-flash-mcu-firmware.png)

1. ファームウェアをフラッシュし、ボードをリセットすると、下の図のようにデモアプリケーションが開始されます。  
![デモアプリの開始](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-demo-app-start.png)

1. (オプション) イメージをテストする別の方法として、flashprog ユーティリティを使用して、ホストからマイクロコントローラー RAM に直接マイクロコントローラーイメージをコピーします。イメージはフラッシュにコピーされないため、マイクロコントローラを再起動すると失われます。

   ファームウェアイメージを SRAM にロードすると実行ファイルがすぐに起動されるため、処理が高速になります。このメソッドは、主に反復的な開発で使用されます。

   次のコマンドを使用して、ファームウェアを SRAM にロードします。

   ```
   cd amzsdk_bundle-x.y.z
   ./lib/third_party/mcu_vendor/marvell/WMSDK/mw320/sdk/tools/OpenOCD/ramload.py build/cmake/vendors/marvell/mw300_rd/aws_demos.axf
   ```

   次のようなコマンド出力が表示されます。  
![ファームウェアイメージを SRAM にロードする](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-load-firmware-sram.png)

   コマンドの実行が完了すると、デモアプリケーションのログが表示されます。

**Eclipse IDE を使用して FreeRTOS デモを構築して実行する**

1. Eclipse ワークスペースをセットアップする前に、`cmake` コマンドを実行する必要があります。

   次のコマンドを実行して、`aws_demos` Eclipse プロジェクトを操作します。

   ```
   cmake -DVENDOR=marvell -DBOARD=mw320 -DCOMPILER=arm-gcc -S .  -Bbuild -DAFR_ENABLE_TESTS=0
   ```

   次のコマンドを実行して、`aws_tests` Eclipse プロジェクトを操作します。

   ```
   cmake -DVENDOR=marvell -DBOARD=mw320 -DCOMPILER=arm-gcc -S .  -Bbuild -DAFR_ENABLE_TESTS=1
   ```
**ヒント**  
`aws_demos` プロジェクトと `aws_tests` プロジェクトの切り替えを行うたびに `cmake` コマンドを実行します。

1. Eclipse を開き、プロンプトが表示されたら、次の図のように Eclipse ワークスペースを選択します。  
![Eclipse ワークスペースの選択](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-select-eclipse-workspace.png)

1. 下の図のようにオプションを選択して、**[Makefile Project: with Existing Code]** (Makefile プロジェクト: 既存のコードを含む) を作成します。  
![既存のコードを使用した Makefile プロジェクトの作成](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-create-makefile-project.png)

1. **[Browse]** (参照) を選択し、既存のコードのディレクトリを指定し、**[Finish]** (完了) を選択します。  
![参照して既存のコードを検索する](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-locate-existing-code.png)

1. ナビゲーションペインで、プロジェクトエクスプローラーの **aws\_demos** を選択します。**aws\_demos** を右クリックしてメニューを開き、**[Build]** (構築) を選択します。  
![aws_demos プロジェクトを構築する](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-building-aws_demos.png)

   構築が成功すると、`build/cmake/vendors/marvell/mw300_rd/aws_demos.bin` ファイルが生成されます。

1. コマンドラインツールを使用して、レイアウトファイル (`layout.txt`)、Boot2 バイナリ (`boot2.bin`)、MCU ファームウェアバイナリ (`aws_demos.bin`)、Wi-Fi ファームウェアをフラッシュします。

   1. ファームウェアイメージをフラッシュする前に、共通のコンポーネントであるレイアウトと Boot2 を使用した開発ボードのフラッシュを準備します。次のコマンドを使用します。

      ```
      cd amzsdk_bundle-x.y.z
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py -l ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/mw300/layout.txt --boot2 ./vendors/marvell/WMSDK/mw320/boot2/bin/boot2.bin
      ```

      `flashprog` コマンドを実行すると、次の処理が開始されます。
      + レイアウト — flashprog ユーティリティは、最初にレイアウトをフラッシュに書き込むように指示されます。レイアウトは、フラッシュのパーティション情報に似たものです。デフォルトのレイアウトは、`/lib/third_party/mcu_vendor/marvell/WMSDK/mw320/sdk/tools/OpenOCD/mw300/layout.txt` にあります。
      + Boot2 — WMSDK で使用されるブートローダーです。また、flashprog コマンドでも、ブートローダーがフラッシュに書き込まれます。ブートローダーは、フラッシュされた後、マイクロコントローラーのファームウェアイメージをロードします。下の図と同じ出力が得られることを確認します。  
![Layout 要素と boot2 要素をフラッシュするコマンド出力](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-output-flash-layout.png)

   1. ファームウェアはその機能に Wi-Fi チップセットを使用します。Wi-Fi チップセットには独自のファームウェアがあり、フラッシュにも存在する必要があります。`flashprog.py` ユーティリティを使用して、Boot2 ブートローダーと MCU ファームウェアをフラッシュしたのと同じ方法で Wi-Fi ファームウェアをフラッシュします。以下のコマンドを使用して、Wi-Fi ファームウェアをフラッシュします。

      ```
      cd amzsdk_bundle-x.y.z
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py --wififw ./vendors/marvell/WMSDK/mw320/wifi-firmware/mw30x/mw30x_uapsta_W14.88.36.p135.bin
      ```

      以下の図のようなコマンド出力になります。  
![Wi-Fi ファームウェアをフラッシュする](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-flash-wifi-firmware.png)

   1.  次のコマンドを使用して、MCU ファームウェアをフラッシュします。

      ```
      cd amzsdk_bundle-x.y.z
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py --mcufw build/cmake/vendors/marvell/mw300_rd/aws_demos.bin -r
      ```

   1. ボードをリセットします。デモアプリケーションのログが表示されます。

   1. テストアプリケーションを実行するには、同じディレクトリにある `aws_tests.bin` バイナリをフラッシュします。

      ```
      cd amzsdk_bundle-x.y.z
      ./vendors/marvell/WMSDK/mw320/sdk/tools/OpenOCD/flashprog.py --mcufw build/cmake/vendors/marvell/mw300_rd/aws_tests.bin -r
      ```

      コマンドの出力は、下の図と似たものになります。  
![MCU ファームウェアをフラッシュする](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-flash-mcu-firmware.png)

## デバッグ
<a name="gsg-mw32x-debugging"></a>
+ Eclipse を起動し、**[Help]** (ヘルプ) を選択してから、**[Install New Software]** (新しいソフトウェアのインストール) を選択します。**[Work with]** (操作) メニューで、**[All Available Sites]** (利用可能なすべてのサイト) を選択します。フィルターテキスト `GDB Hardware` を入力します。**[C/C\+\+ GDB Hardware Debugging]** (C/C\+\+ GDB ハードウェアデバッグ) オプションを選択して、プラグインをインストールします。  
![ソフトウェアインターフェイスのインストールウィンドウのスクリーンショットで、gdb ハードウェアカテゴリでインストール対象として選択された GDB ハードウェアデバッグ項目を示しています。](http://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/images/mw32x-debugging.png)

## トラブルシューティング
<a name="gsg-mw32x-troubleshooting"></a>

**ネットワークの問題**  
ネットワーク認証情報を確認します。[FreeRTOS デモプロジェクトを構築して実行する](#gsg-mw32x-build-and-run) の「プロビジョニング」を参照してください。

**追加ログの有効化**  
+ ボード固有のログを有効にします。

  `main.c` ファイルの `prvMiscInitialization` 関数の `wmstdio_init(UART0_ID, 0)` への呼び出しを、テストまたはデモ用に有効にします。
+ Wi-Fi ログの有効化

  `{{freertos}}/vendors/marvell/WMSDK/mw320/sdk/src/incl/autoconf.h` ファイルのマクロ `CONFIG_WLCMGR_DEBUG` を有効にします。

**GDB の使用**  
SDK と一緒にパッケージ化された `arm-none-eabi-gdb` および `gdb` コマンドファイルを使用することをお勧めします。ディレクトリに移動します。  

```
cd {{freertos}}/lib/third_party/mcu_vendor/marvell/WMSDK/mw320
```
GDB に接続するには、次のコマンドを (1 行で) 実行します。  

```
arm-none-eabi-gdb -x ./sdk/tools/OpenOCD/gdbinit ../../../../../../build/cmake/vendors/marvell/mw300 _rd/aws_demos.axf
```