下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

将 TCP/IP 源文件添加到 RTOS 项目
FreeRTOS-Plus-TCP 联网教程节选

FreeRTOS-Plus-TCP 是开源 TCP/IP 堆栈,因此 作为源文件提供并构建为 源文件 RTOS 应用程序中深入跟踪任务和内核 API 调用。

最好从一个已知工作正常的标准 FreeRTOS 应用程序(不含 TCP/IP 堆栈)开始, 然后添加 TCP/IP 源文件。建议使用 heap_4 或 heap_5 内存分配器。 如果您确定标准库提供的堆实现可以处理碎片化, 则也可以使用 heap_3。确定标准 RTOS 应用程序已配置并正确执行后, 请执行以下步骤:

  1. 向项目中添加以下核心 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

  2. 将网络接口的驱动程序(MAC 或以太网驱动程序)添加到您的项目中 。 实现网络驱动程序的源文件称为 NetworkInterface.c,位于:
    FreeRTOS-Plus/FreeRTOS_Plus_TCP/source/portable/NetworkInterface/[microcontroller]/, 其中,[microcontroller] 是运行 FreeRTOS-Plus-TCP 的微控制器系列。 为其他芯片创建 网络驱动程序的说明也一并提供。

  3. 如果使用的网络接口是此处列出的网络接口之一 ——ATSAME5x、DriverSAM、STM32Fxx、STM32Hxx、TM4C,则将通用 PHY 处理实现添加到项目中。源文件位于 FreeRTOS/FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/source/portable/NetworkInterface/Common

  4. 将您选择的网络缓冲区分配方案添加到您的项目中 。 实现缓冲区分配方案的源文件 : FreeRTOS-Plus/FreeRTOS_Plus_TCP/source/portable/BufferManagement/。此时,为简单起见,推荐使用 BufferAllocation_2.c, 因为它从 FreeRTOS 堆中获取 RAM。

  5. 将下列核心 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)
    • 查找芯片专用驱动程序头文件所需的任何目录。

  6. 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.