

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

# 移植 TCP/IP 堆栈
<a name="afr-porting-tcp"></a>

本节提供移植和测试板载 TCP/IP 堆栈的说明。如果您的平台将 TCP/IP 和 TLS 功能分载到单独的网络处理器或模块，您可以跳过此移植部分并访问[移植网络传输接口](afr-porting-network-transport-interface.md)。

[FreeRTOS\$1TCP](https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/index.html) 是 FreeRTOS 内核的原生 TCP/IP 堆栈。FreeRTOS\$1TCP 由 FreeRTOS 工程团队维护，是推荐与 FreeRTOS 配合使用的 TCP/IP 堆栈。有关更多信息，请参阅 [移植 FreeRTOS\$1TCP](#porting-freertos-tcp)。或者，您可以使用第三方 TCP/IP 堆栈 [lwIP](https://savannah.nongnu.org/projects/lwip/)。本节提供的测试说明使用适用于 TCP 纯文本的传输接口测试，并且不依赖于具体实现的 TCP/IP 堆栈。

## 移植 FreeRTOS\$1TCP
<a name="porting-freertos-tcp"></a>

FreeRTOS\$1TCP 是 FreeRTOS 内核的原生 TCP/IP 堆栈。有关更多信息，请参阅 [FreeRTOS.org](https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/)。

### 先决条件
<a name="porting-prereqs-freertos-tcp"></a>

要移植 FreeRTOS\$1TCP 库，您需要以下信息：
+ 包括供应商提供的以太网或 Wi-Fi 驱动程序在内的 IDE 项目。

  有关设置测试项目的信息，请参阅[为移植设置工作区和项目](porting-set-up-project.md)。
+ FreeRTOS 内核的经验证配置。

  有关为您的平台配置 FreeRTOS 内核的信息，请参阅[配置 FreeRTOS 内核移植](afr-porting-kernel.md)。

### 移植
<a name="porting-steps-freertos-tcp"></a>

在开始移植 FreeRTOS\$1TCP 库之前，请检查 [GitHub](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/tree/main/source/portable/NetworkInterface) 目录以了解是否已存在您的主板的移植。

如果移植不存在，请执行以下操作：

1. 按照 FreeRTOS.org 上[将 FreeRTOS\$1TCP 移植到不同微控制器](https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Embedded_Ethernet_Porting.html)的说明，将 FreeRTOS\$1TCP 移植到您的设备。

1. 如有必要，请按照 FreeRTOS.org 上[将 FreeRTOS\$1TCP 移植到新的嵌入式 C 编译器](https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Embedded_Compiler_Porting.html)的说明，将 FreeRTOS\$1TCP 移植到新的编译器。

1. 在名为 `NetworkInterface.c` 的文件中实施使用供应商提供的以太网或 Wi-Fi 驱动程序的新移植。访问 [GitHub](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/tree/main/source/portable/NetworkInterface/board_family) 存储库以获取模板。

在创建移植后，或者如果移植已存在，请创建 `FreeRTOSIPConfig.h` 并编辑配置选项，以使它们适合您的平台。有关配置选项的更多信息，请参阅 FreeRTOS.org 上的 [FreeRTOS\$1TCP 配置](https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html)。

## 测试
<a name="testing-tcp"></a>

无论您使用的是 freerTOS\$1TCP 库还是第三方库，请按照以下步骤进行测试：
+ 在传输接口测试中提供 `connect/disconnect/send/receive` API 的实现。
+ 在纯文本 TCP 连接模式下设置 Echo 服务器，然后运行传输接口测试。

**注意**  
要使设备正式获得 FreeRTOS 的资格，如果您的架构需要移植 TCP/IP 软件堆栈，则需要在 AWS IoT Device Tester 的纯文本 TCP 连接模式下根据传输接口测试验证设备移植的源代码。按照《FreeRTOS 用户指南》中[使用适用于 FreeRTOS 的 AWS IoT Device Tester](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html)中的说明为移植验证设置 AWS IoT Device Tester。**要测试特定库的移植，必须在 Device Tester `device.json` 文件夹下面的 `configs` 文件中启用正确的测试组。