

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 入门套件 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 入门套件是基于恩智浦最新集成Cortex M4微控制器 MW320 88/88的开发套件MW322，它在单个微控制器芯片上集成了802.11b/g/n Wi-Fi。此开发工具包已通过 FCC 认证。如需更多信息，请参阅[AWS 合作伙伴设备目录](https://devices.amazonaws.com/detail/a3G0h000000OaRnEAK/MW320-AWS-IoT-Starter-Kit)来从我们的合作伙伴购买一个。88 MW320 /88 MW322 模块还获得了 FCC 认证，可进行定制和批量销售。

本入门指南介绍如何在主机上交叉编译应用程序和开发工具包，然后使用开发工具包提供的工具将生成的二进制文件加载到主板上。当应用程序开始在主板上运行时，您可以从主机的串行控制台对其进行调试或与其交互。

Ubuntu 16.04 是支持开发和调试的主机平台。您也可以使用其他平台，但这些平台不受官方支持。您必须具有在主机平台上安装软件的权限。构建开发工具包需要以下外部工具：
+ Ubuntu 16.04 主机平台
+ ARM 工具链版本 4\$19\$12015q3
+ Eclipse 4.9.0 IDE

交叉编译应用程序和开发工具包需要使用 ARM 工具链。SDK 利用最新版本的工具链来优化映像占用空间，在更小的空间中容纳更多功能。本指南假设您使用的是 4\$19\$12015q3 版本的工具链。建议不要使用旧版本工具链。开发工具包已预先刷写无线微控制器演示项目固件。

**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>

使用 mini-USB 转 USB 电缆将 MW32x 主板连接到笔记本电脑。将 mini-USB 线缆连接到主板上唯一的 mini-USB 连接器。您不需要更改跳线。

如果将主板连接到笔记本电脑或台式计算机，则不需要外部电源。

该 USB 连接提供以下功能：
+ 通过控制台访问主板。在开发主机上注册了一个可用于访问控制台的虚拟 tty/com 端口。
+ 通过 JTAG 访问开发主板。这可用于将固件映像加载或卸载到主板的 RAM 或闪存中，或者用于调试目的。

## 设置开发环境
<a name="gsg-mw32x-dev-env"></a>

出于开发目的，最低要求是 ARM 工具链和与开发工具包捆绑在一起的工具。以下各节提供了有关 ARM 工具链设置的详细信息。

### GNU 工具链
<a name="gsg-mw32x-dev-env-gnu"></a>

开发工具包正式支持 GCC 编译器工具链。GNU ARM 的交叉编译器工具链已在 [GNU Arm 嵌入式工具链 4.9-2015-q3-update](https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update) 中发布。

默认情况下，构建系统配置为使用 GNU 工具链。Makefile 假设 GNU 编译器工具链二进制文件在用户的 PATH 上可用，并且可以从 Makefile 中调用。Makefiles 还假设 GNU 工具链二进制文件的文件名带有 `arm-none-eabi-` 前缀。

GCC 工具链可以与 GDB 一起使用，通过 OpenOCD（与开发工具包捆绑在一起）进行调试。其中提供了与 JTAG 接口的软件。

我们推荐使用工具链的 4\$19\$12015q3 版本。 gcc-arm-embedded

### Linux 工具链设置过程
<a name="gsg-mw32x-dev-env-linux"></a>

按照以下步骤操作，以便在 Linux 中设置 GCC 工具链。

1. 在 [GNU Arm 嵌入式工具链 4.9-2015-q3-update](https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update) 中下载工具链 tarball。文件是 `gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2`。

1. 将文件复制到所选目录。确保目录名称不包含空格。

1. 使用以下命令解压缩文件。

   ```
   tar –vxf filename
   ```

1. 将安装的工具链的路径添加到系统 PATH 中。例如，在位于 `/home/user-name` 目录中的 `.profile` 文件末尾添加以下行。

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

**注意**  
Ubuntu 的一些新分发包含 Debian 版本的 GCC 交叉编译器。如果是这样，则必须移除本机交叉编译器，并按照上述设置过程进行操作。

### 使用 Linux 开发主机
<a name="gsg-mw32x-dev-env-linux-host"></a>

您可以使用任何现代 Linux 桌面发行版，例如 Ubuntu 或 Fedora。但是，我们建议您升级到最新版本。以下步骤已经过验证，可以在Ubuntu 16.04 上运行，并假设您使用的是该版本。

#### 安装程序包
<a name="gsg-mw32x-dev-env-linux-host-pkgs"></a>

开发工具包有一个脚本，用于在新设置的 Linux 计算机上快速设置开发环境。该脚本会尝试自动检测计算机类型并安装相应的软件，包括 C 库、USB 库、FTDI 库、ncurses、python 和 latex。在本节中，通用目录名称`amzsdk_bundle-x.y.z`表示 AWS SDK 的根目录。实际目录名称可能会有所不同。您必须拥有根权限。
+ 导航到 `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` 脚本将固件映像从主机直接复制到微控制器的 RAM，无需刷写 NAND。

您可以将 Linux 开发主机配置为执行 `flashprog` 和 `ramload` 操作，而无需每次都使用 `sudo` 命令。为此，请运行以下命令。

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

**注意**  
您必须这样配置 Linux 开发主机权限才能确保流畅的 Eclipse IDE 体验。

#### 设置串行控制台
<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
```

确认已创建两个 ttyUSB 设备。第二个 ttyUSB 是串行控制台。在上面的示例中，它被命名为 “ttyUSB1”。

在本指南中，我们使用 minicom 来查看串行控制台的输出。您也可以使用其他串行程序，例如 `putty`。运行以下命令以在设置模式下执行 minicom。

```
minicom –s
```

在 minicom 中，转到**串行端口设置**并获取以下设置。

```
| 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** 键。这会在屏幕上显示一个哈希值 (\$1)。

**注意**  
开发主板包含一个 FTDI 硅芯片设备。FTDI 设备公开了主机的两个 USB 接口。第一个接口与 MCU 的 JTAG 功能相关联，第二个接口与 MCU 的物理 UARTx 端口相关联。

#### 安装 OpenOCD
<a name="gsg-mw32x-dev-env-linux-host-openocd"></a>

OpenOCD 是一款为嵌入式目标设备提供调试、系统内编程和边界扫描测试的软件。

需要 OpenOCD 版本 0.9。Eclipse 功能也需要该软件。如果您的 Linux 主机上安装了早期版本（例如版本 0.7），请使用适用于当前用途的 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。JRE 版本（32/64 位）必须与 Eclipse 版本（32/64 位）匹配。您可以从 Oracle 网站上的 [Java SE 运行时环境 8 下载](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html)中下载 JRE。

1. 从 [http://www.eclipse.org](http://www.eclipse.org) 下载并安装“适用于 C/C\$1\$1 开发人员的 Eclipse IDE”。支持 Eclipse 版本 4.9.0 及更高版本。只需解压缩下载的存档即可安装。您可以运行特定于平台的 Eclipse 可执行文件来启动应用程序。

## 构建并运行 FreeRTOS 演示项目
<a name="gsg-mw32x-build-and-run"></a>

运行 FreeRTOS 演示项目的方法有两种：
+ 使用命令行。
+ 使用 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/zh_cn/freertos/latest/userguide/images/mw32x-build-demo-app1.png)

1. 导航到构建目录。

   ```
   cd build
   ```

1. 运行 make 实用工具来构建应用程序。

   ```
   make all -j4
   ```

   确保您获得相同的输出，如下图所示：  
![\[终端输出显示了 C 目标文件的构建过程，并链接到静态库和 AWS 演示的可执行文件。\]](http://docs.aws.amazon.com/zh_cn/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. 将固件映像写入开发主板的闪存。固件将在开发主板重置后执行。将映像刷写到微控制器之前，必须构建开发工具包。

   1. 在刷写固件映像之前，请使用常用组件 Layout 和 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` 命令还会将引导加载程序写入闪存。这是引导加载程序在完成刷写后加载微控制器固件映像的作业。确保您获得相同的输出，如下图所示。  
![\[用于烧录布局和 boot2 组件的命令的输出。\]](http://docs.aws.amazon.com/zh_cn/freertos/latest/userguide/images/mw32x-output-flash-layout.png)

   1. 该固件使用 Wi-Fi 芯片组来实现功能，Wi-Fi 芯片组有自己的固件，该固件也必须存在于闪存中。使用 `flashprog.py` 实用工具刷写 Wi-Fi 固件的方式与刷写 Boot2 引导加载程序和 MCU 固件的方式相同。使用以下命令刷写 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/zh_cn/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/zh_cn/freertos/latest/userguide/images/mw32x-flash-mcu-firmware.png)

1. 刷写固件并重置主板后，演示应用程序应按下图所示启动。  
![\[演示应用程序启动\]](http://docs.aws.amazon.com/zh_cn/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/zh_cn/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/zh_cn/freertos/latest/userguide/images/mw32x-select-eclipse-workspace.png)

1. 选择创建 **Makefile 项目：使用现有代码**的选项，如下图所示。  
![\[使用现有代码创建 Makefile 项目\]](http://docs.aws.amazon.com/zh_cn/freertos/latest/userguide/images/mw32x-create-makefile-project.png)

1. 选择**浏览**，指定现有代码的目录，然后选择**完成**。  
![\[浏览以找到现有代码\]](http://docs.aws.amazon.com/zh_cn/freertos/latest/userguide/images/mw32x-locate-existing-code.png)

1. 在导航窗格中，在项目资源管理器中选择 **aws\$1demos**。右键单击 **aws\$1demos** 以打开菜单，然后选择**构建**。  
![\[构建 aws_demos 项目\]](http://docs.aws.amazon.com/zh_cn/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. 在刷写固件映像之前，请使用常用组件 Layout 和 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 命令还会将引导加载程序写入闪存。这是引导加载程序在完成刷写后加载微控制器固件映像的作业。确保您获得相同的输出，如下图所示。  
![\[用于烧录布局和 boot2 组件的命令的输出\]](http://docs.aws.amazon.com/zh_cn/freertos/latest/userguide/images/mw32x-output-flash-layout.png)

   1. 该固件使用 Wi-Fi 芯片组来实现功能，Wi-Fi 芯片组有自己的固件，该固件也必须存在于闪存中。使用 `flashprog.py` 实用工具刷写 Wi-Fi 固件的方式与刷写 boot2 引导加载程序和 MCU 固件的方式相同。使用以下命令刷写 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/zh_cn/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/zh_cn/freertos/latest/userguide/images/mw32x-flash-mcu-firmware.png)

## 调试
<a name="gsg-mw32x-debugging"></a>
+ 启动 Eclipse 并选择**帮助**，然后选择**安装新软件**。在**使用**菜单中，选择**所有可用站点**。输入筛选文本 `GDB Hardware`。选择 **C/C\$1\$1 GDB 硬件调试**选项并安装插件。  
![\[软件界面中“安装”窗口的屏幕截图，展示了在 GDB 硬件类别下选择安装的 GDB 硬件调试项目。\]](http://docs.aws.amazon.com/zh_cn/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**  
我们建议您使用与开发工具包打包在一起的 `arm-none-eabi-gdb` 和 `gdb` 命令文件。导航到 目录。  

```
cd freertos/lib/third_party/mcu_vendor/marvell/WMSDK/mw320
```
运行以下命令（只有一行）以连接到 GDB。  

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