FreeRTOS-Plus-TCP 是开源 TCP/IP 堆栈,因此
作为源文件
提供并构建为
源文件 RTOS
应用程序中深入跟踪任务和内核 API 调用。
最好从一个已知工作正常的标准 FreeRTOS 应用程序(不含 TCP/IP 堆栈)开始,
然后添加 TCP/IP 源文件。建议使用 heap_4 或 heap_5 内存分配器。
如果您确定标准库提供的堆实现可以处理碎片化,
则也可以使用 heap_3。确定标准 RTOS 应用程序已配置并正确执行后,
请执行以下步骤:
-
向项目中添加以下核心 FreeRTOS-Plus-TCP 源文件:
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_ARP.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_BitConfig.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_DHCP.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_DHCPv6.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_DNS.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_DNS_Cache.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_DNS_Callback.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_DNS_Networking.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_DNS_Parser.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_ICMP.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IP.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IP_Timers.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IP_Utils.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IPv4.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IPv4_Sockets.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IPv4_Utils.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IPv6.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IPv6_Sockets.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_IPv6_Utils.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_ND.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_RA.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_Routing.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_Sockets.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_StreamBuffer.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_IP.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_IP_IPV4.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_IP_IPV6.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_Reception.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_State_Handling.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_State_Handling_IPV4.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_State_Handling_IPV6.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_Transmission.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_Transmission_IPV4.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_Transmission_IPV6.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_Utils.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_Utils_IPV4.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_Utils_IPV6.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_TCP_WIN.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS-Plus-TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_Tiny_TCP.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_UDP_IP.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_UDP_IPv4.c
-
FreeRTOS/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Source/FreeRTOS-Plus-TCP/source/FreeRTOS_UDP_IPv6.c
-
将网络接口的驱动程序(MAC 或以太网驱动程序)添加到您的项目中
。 实现网络驱动程序的源文件称为 NetworkInterface.c,位于:
FreeRTOS-Plus/FreeRTOS_Plus_TCP/source/portable/NetworkInterface/[microcontroller]/,
其中,[microcontroller] 是运行 FreeRTOS-Plus-TCP 的微控制器系列。
为其他芯片创建
网络驱动程序的说明也一并提供。
- 如果使用的网络接口是此处列出的网络接口之一
——ATSAME5x、DriverSAM、STM32Fxx、STM32Hxx、TM4C,则将通用 PHY 处理实现添加到项目中。源文件位于
FreeRTOS/FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/source/portable/NetworkInterface/Common。
-
将您选择的网络缓冲区分配方案添加到您的项目中
。 实现缓冲区分配方案的源文件
:
FreeRTOS-Plus/FreeRTOS_Plus_TCP/source/portable/BufferManagement/。此时,为简单起见,推荐使用 BufferAllocation_2.c,
因为它从 FreeRTOS 堆中获取 RAM。
-
将下列核心 TCP/IP 目录添加至编译器的包含路径中:
-
FreeRTOS-Plus/FreeRTOS_Plus_TCP/source/include
-
FreeRTOS-Plus/FreeRTOS_Plus_TCP/source/portable/Compiler/[compiler]
(其中 [compiler] 为正在使用的编译器)。
- FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/source/portable/NetworkInterface/include
(如果使用的网络接口是此处列出的网络接口之一——ATSAME5x、DriverSAM、STM32Fxx、
STM32Hxx、TM4C)
-
查找芯片专用驱动程序头文件所需的任何目录。
-
将 FreeRTOSIPConfig.h 头文件添加到项目,并确保
其中包含的常量
正确配置
到应用程序。 可以使用
示例项目
中的配置文件作为起点。
FreeRTOSIPConfig.h 为您的应用程序定制核心 TCP/IP 堆栈。 它
专用于应用程序而非 TCP/IP堆栈,因此应定位
应用程序目录,而不是 FreeRTOS-Plus-TCP 目录中。
<<
返回 RTOS TCP 联网教程索引
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.