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

移植 lwIP

lwIP 是替代的开源 TCP/IP 堆栈。有关更多信息,请参阅 lwIP – 轻型 TCP/IP 堆栈 – 摘要。FreeRTOS 目前支持版本 2.1.2。

先决条件

要移植 lwIP 堆栈,需要以下内容:

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

  • FreeRTOS 内核的经验证配置。

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

移植

在将 lwIP TCP/IP 堆栈移植到您的设备之前,请检查 /libraries/3rdparty/lwip/src/portable 目录以确定是否已具有到您的平台的移植。

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

    /libraries/3rdparty/lwip/src/portable 中,创建一个名为 vendor/board/netif 的目录,其中 vendorboard 目录与您的平台匹配。

  2. 根据存根文件中的注释移植 /libraries/3rdparty/lwip/src/netif/ethernetif.c 存根文件。

  3. 在您创建移植之后,或者如果移植已存在,请在测试项目的 main.c 文件中,添加对 tcpip_init() 的调用。

  4. /vendors/vendor/boards/board/aws_tests/config_files 中,创建一个名为 lwipopts.h 的配置文件。此文件必须包含以下行:

    #include "arch/lwipopts_freertos.h"

    该文件还应包含任何特定于平台的配置选项。

测试

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

注意

没有特定于 lwIP 的 TCP/IP 移植测试。

设置 IDE 测试项目

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

重要

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

设置 IDE 项目中的 lwIP 源文件

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

    注意

    如果您将 .c 文件添加到 IDE 项目,然后为移植编辑该 .c 文件,则您必须将原始 .c 文件替换为在 IDE 项目中编辑过的文件。

  2. 将以下路径添加到编译器的包含路径:

    • /libraries/3rdparty/lwip/src/include

    • /libraries/3rdparty/lwip/src/portable

    • /libraries/3rdparty/lwip/src/portable/vendor/board/include

配置 CMakeLists.txt 文件

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

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

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