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

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

移植 FreeRTOS+TCP(TCP)

FreeRTOS+TCP是 FreeRTOS 内核。有关更多信息,请参阅 FreeRTOS.org

Prerequisites

要将 FreeRTOS+TCP库,您需要以下内容:

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

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

  • 一个 FreeRTOS 内核的经验证配置。

    有关配置 FreeRTOS 平台的内核,请参阅 配置 FreeRTOS 内核移植.

Porting

在您开始移植 FreeRTOS-TCP库,检查 /libraries/freertos_plus/standard/freertos_plus_tcp/source/portable/NetworkInterface 目录,查看设备端口是否已存在。

如果移植不存在,请执行以下操作:

  1. 遵循 移植 FreeRTOS+TCP至不同微控制器 说明 FreeRTOS.org至端口 FreeRTOS+TCP至您的设备。

  2. 如有必要,请遵循 移植 FreeRTOS+TCP至新的嵌入式C编译器 说明 FreeRTOS.org至端口 FreeRTOS+TCP至新的编译器。

  3. 在名为 NetworkInterface.c 的文件中实施使用供应商提供的以太网或 Wi-Fi 驱动程序的新移植,并将该文件保存到 /libraries/freertos_plus/standard/freertos_plus_tcp/source/portable/NetworkInterface/board_family 中。

    注意

    /libraries/freertos_plus/standard/freertos_plus_tcp/source/portable/BufferManagement 目录中的文件由多个移植使用。请勿编辑此目录中的文件。

在创建移植后,或者如果移植已存在,请打开 /vendors/vendor/boards/board/aws_tests/config_files/FreeRTOSIPConfig.h 并编辑配置选项,以使它们适合您的平台。有关配置选项的更多信息,请参阅 FreeRTOS+TCP配置 于 FreeRTOS.org。

Testing

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

设置 IDE 测试项目

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

重要

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

要设置 FreeRTOSIDE项目中的+TCP库

  1. /libraries/freertos_plus/standard/freertos_plus_tcp 及其子目录中的所有源文件和标头文件添加到 aws_tests IDE 项目中。

    注意

    FreeRTOS包括五个示例堆管理实施, /freertos_kernel/portable/MemMang。 FreeRTOS+TCP和 BufferAllocation_2.c 需要 heap_4.cheap_5.c 实施。您必须使用 heap_4.cheap_5.c 以确保 FreeRTOS 演示应用程序正常运行。请勿使用自定义堆栈实施。

  2. /libraries/freertos_plus/standard/freertos_plus_tcp/include 添加到编译器的包含路径中。

配置 CMakeLists.txt 文件

如果您正在使用 CMake 要构建测试项目,您需要为中的库定义一个便携式层目标 CMake 列表文件。

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

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

设置本地测试环境

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

为 TCP 测试配置源文件和标头文件

  1. 如果您尚未移植安全套接字库,请打开 /libraries/freertos_plus/standard/utils/src/iot_system_init.c,在函数中 SYSTEM_Init(),记下呼叫的线路 SOCKETS_Init()。当您到达 移植安全套接字库 部分中,将指导您取消注释此初始化函数调用。

  2. 打开 /vendors/vendor/boards/board/aws_tests/application_code/main.c,然后取消注释对 FreeRTOS_IPInit() 的调用。

  3. 使用您网络的有效值填写以下数组:

    变量 Description
    uint8_t ucMACAddress[ 6 ] 默认 MAC 地址配置。
    uint8_t ucIPAddress[ 4 ]

    默认 IP 地址配置。

    注意

    默认情况下,由 DHCP 获取 IP 地址。如果DHCP失败或您不想使用DHCP,则使用此处定义的静态IP地址。

    要禁用DHCP,请打开 /vendors/vendor/boards/board/aws_tests/config_files/FreeRTOSIPConfig.h、和设置 ipconfigUSE_DHCP0。对于演示, ipconfigUSE_DHCP 定义于 /vendors/vendor/boards/board/aws_demos/config_files/FreeRTOSIPConfig.h.

    uint8_t ucNetMask[ 4 ] 默认网络掩码配置。
    uint8_t ucGatewayAddress[ 4 ] 默认网关地址配置。
    uint8_t ucDNSServerAddress[ 4 ] 默认 DNS 服务器地址配置。
  4. 打开 /vendors/vendor/boards/board/aws_tests/config_files/FreeRTOSIPConfig.h,并将宏 ipconfigUSE_NETWORK_EVENT_HOOK 设置为 1

  5. 打开 /vendors/vendor/boards/board/aws_tests/application_code/main.c,然后将以下代码添加到 vApplicationIPNetworkEventHook() 的函数定义开头:

    if (eNetworkEvent == eNetworkUp) { configPRINT("Network connection successful. \n\r"); }

运行测试

要执行 FreeRTOS+TCP测试

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

  2. 在 UART 控制台中检查测试结果。如果 Network connection successful 显示,则以太网或 Wi-Fi 驱动程序成功连接到网络,测试完成。

Validation

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