移植 Wi-Fi 库 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

移植 Wi-Fi 库

FreeRTOS Wi-Fi 库与供应商提供的 Wi-Fi 驱动程序接口。有关 FreeRTOS Wi-Fi 库的更多信息,请参阅 FreeRTOS 用户指南中的 FreeRTOS Wi-Fi 库

如果设备不支持 Wi-Fi 联网,则可跳过移植 FreeRTOS Wi-Fi 库,开始移植 TCP/IP 堆栈

注意

为进行资格认证,设备必须连接到 AWS 云。如果设备不支持 Wi-Fi,则可改用以太网连接。移植 FreeRTOS Wi-Fi 库并不是必需的。

先决条件

要移植 Wi-Fi 库,需要具备以下条件:

  • 包括供应商提供的 Wi-Fi 驱动程序在内的 IDE 项目或 CMakeLists.txt 列表文件。

    有关设置测试项目的信息,请参阅为移植设置 FreeRTOS 源代码

  • FreeRTOS 内核的经验证配置。

    有关为您的平台配置 FreeRTOS 内核的信息,请参阅配置 FreeRTOS 内核移植

  • 两个无线接入点。

移植

/vendors/vendor/boards/board/ports/wifi/iot_wifi.c 包含一组 Wi-Fi 管理函数的空定义。可使用供应商提供的 Wi-Fi 驱动程序库,至少实施下表中列出的函数。

函数 说明
WIFI_On 打开 Wi-Fi 模块并初始化驱动程序。
WIFI_ConnectAP 连接到 Wi-Fi 接入点 (AP)。
WIFI_Disconnect 从 AP 断开。
WIFI_Scan 执行 Wi-Fi 网络扫描。
WIFI_GetIP 检索 Wi-Fi 接口的 IP 地址。
WIFI_GetMAC 检索 Wi-Fi 接口的 MAC 地址。
WIFI_GetHostIP 使用 DNS 从主机名检索主机 IP 地址。

/libraries/abstractions/wifi/include/⁠iot_wifi.h 提供实施这些函数所需的信息。

测试

如果使用 IDE 构建测试项目,您需要在 IDE 项目中设置库移植。

设置 IDE 测试项目

如果使用 IDE 进行移植和测试,您需要先将一些源文件添加到 IDE 测试项目中,然后才能测试移植的代码。

重要

在以下步骤中,请确保您将源文件从磁盘上位置添加到了 IDE 项目。请勿创建源文件的重复副本。

在 IDE 项目中设置 Wi-Fi 库

  1. 将源文件 /vendors/vendor/boards/board/ports/wifi/iot_wifi.c 添加到 aws_tests IDE 项目中。

  2. 将源文件 aws_test_wifi.c 添加到 aws_tests IDE 项目中。

配置 CMakeLists.txt 文件

如果使用 CMake 构建测试项目,您需要在 CMake 列表文件中为库定义一个可移植层目标。

要在 CMakeLists.txt 中定义库的可移植层目标,请按照FreeRTOS 可移植层中的说明进行操作。

/vendors/vendor/boards/board/CMakeLists.txt 中的 CMakeLists.txt 模板列表文件包括示例可移植层目标定义。您可以取消注释要移植的库的定义,并对其进行修改以适合您的平台。

有关示例,请参阅以下 Wi-Fi 库的可移植层目标定义。

# WiFi afr_mcu_port(wifi) target_sources( AFR::wifi::mcu_port INTERFACE "/vendors/vendor/boards/board/ports/wifi/iot_wifi.c" )

设置本地测试环境

在 IDE 项目中设置库后,您需要配置一些其他文件以进行测试。

配置 Wi-Fi 测试的源文件和标头文件

  1. 打开 /vendors/vendor/boards/board/aws_tests/application_code/main.c,然后在 vApplicationDaemonTaskStartupHook(void)prvWifiConnect(void) 的函数定义中删除 #if 0#endif 编译器指令。

  2. 如果尚未移植安全套接字库,则打开 /libraries/freertos_plus/standard/utils/src/iot_system_init.c,然后注释掉调用 SOCKETS_Init() 的行。当您浏览至移植安全套接字库部分时,会了解到如何取消注释此初始化函数调用。

  3. 打开 /tests/include/aws_clientcredential.h,然后为第一个 AP 设置下表中的宏。

    clientcredentialWIFI_SSID 作为 C 字符串的 Wi-Fi SSID(用引号引起)。
    clientcredentialWIFI_PASSWORD 作为 C 字符串的 Wi-Fi 密码(用引号引起)。
    clientcredentialWIFI_SECURITY 以下值之一:
    • eWiFiSecurityOpen

    • eWiFiSecurityWEP

    • eWiFiSecurityWPA

    • eWiFiSecurityWPA2

    推荐使用 eWiFiSecurityWPA2

  4. 打开 /libraries/abstractions/wifi/test/aws_test_wifi.h,然后为第二个 AP 设置下表中的宏。

    testWIFI_SSID 作为 C 字符串的 Wi-Fi SSID(用引号引起)。
    testWIFI_PASSWORD 作为 C 字符串的 Wi-Fi 密码(用引号引起)。
    testWIFI_SECURITY 以下值之一:
    • eWiFiSecurityOpen

    • eWiFiSecurityWEP

    • eWiFiSecurityWPA

    • eWiFiSecurityWPA2

    推荐使用 eWiFiSecurityWPA2

  5. 要启用 Wi-Fi 测试,请打开 /vendors/vendor/boards/board/aws_tests/config_files/aws_test_runner_config.h 并将 testrunnerFULL_WIFI_ENABLED 设置为 1

    重要

    以下测试需要移植安全套接字库并运行回声服务器:

    • WiFiConnectionLoop

    • WiFiIsConnected

    • WiFiConnectMultipleAP

    在移植安全套接字库并启动回声服务器之前,将无法通过这些测试。在移植安全套接字库并启动回声服务器之后,重新运行 Wi-Fi 测试,以确保所有测试均已通过。有关移植安全套接字库的信息,请参阅移植安全套接字库。有关设置回声服务器的信息,请参阅设置 Echo 服务器

运行测试

执行 Wi-Fi 测试

  1. 构建测试项目,然后将其刷写到您的设备以执行该项目。

  2. 在 UART 控制台中检查测试结果。

    ...

验证

要正式对设备进行 FreeRTOS 资格认证,您需要使用 AWS IoT Device Tester 验证设备的移植源代码。按照《FreeRTOS 用户指南》中的将 AWS IoT Device Tester 用于 FreeRTOS 中的说明操作,设置 Device Tester 以进行移植验证。要测试特定库的移植,必须在 Device Tester configs 文件夹下面的 device.json 文件中启用正确的测试组。

将 FreeRTOS Wi-Fi 库移植到设备之后,可以开始移植 TCP/IP 堆栈。有关说明,请参阅移植 TCP/IP 堆栈