

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

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

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

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

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

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

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

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

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

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

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

在开始移植 freerTOS\+TCP 库之前，请检查[GitHub](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/tree/main/source/portable/NetworkInterface)目录以查看您的主板上是否已有端口。

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

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

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

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\+TCP 配置](https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html)。

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

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

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