下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

FreeRTOS-Plus-TCP 演示项目
Windows 模拟器的嵌入式 TCP/IP 示例

本页面包含:


IPv4 WinSIM 演示

源代码和项目文件

此演示应用程序可在 FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator 目录 ( 官方 FreeRTOSzip 文件下载中)以及 GitHub 上的 FreeRTOS_Plus_TCP_Minimal_Windows_Simulator 存储库中找到。

目标硬件

此项目使用 FreeRTOS Windows 模拟器。 Windows 模拟器提供了一个方便的评估平台,但它 不能显示实时行为。 模拟时间比实际时间 慢很多。

编译器/工具链

已预配置此项目,以使用 Microsoft Visual C++ (MSVC) 的免费 Express 版本 进行构建。 使用的是 MSVC Express Edition 2010。

功能

该演示包含以下标准演示配置:
  • 两组 UDP 客户端任务和服务器任务,其中客户端 任务会将数据发送至服务器任务。一组任务使用标准套接字 接口。 另一组任务使用零复制套接字接口。

构建此项目还可包括以下内容(可选):

  • 一个简单的 TCP echo 客户端任务,该任务向一个服务器 (地址使用 configECHO_SERVER_ADDR[0-3] 和 echoECHO_PORT 配置) 发送数据并等待 echo 回复。会检查回复是否正确。

  • 一个简单的 TCP echo 服务器任务,该任务使用 FreeRTOS_listen() 等待传入连接。 当建立连接并收到数据时,任务会回复 相同的数据。

构建说明

  1. 通过包含源代码和项目文件的 FreeRTOS 下载页面下载源代码 文件进行一些修改。 将 zip 文件提取至方便的位置,以确保 目录结构体得到维护。

  2. 从 Visual Studio IDE 中打开 Visual Studio 解决方案文件 FreeRTOS_Plus_TCP_Minimal.sln 。 此解决方案文件在 "FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator" 目录下。

  3. 演示使用 WinPCap, 通过访问真实网络连接上的原始以太网数据来创建虚拟网络连接。 许多 计算机具有多个真实的网络端口。 在 FreeRTOSConfig.h. 中设置 configNETWORK_INTERFACE_TO_USE,以告诉演示应该使用哪个真实端口 来创建虚拟端口。

    当执行应用程序时,可用端口号会显示在控制台上 (请参阅下文使用说明中的图像) 。

  4. 请按照 Echo 客户端示例文档页面 设置 echo 服务器并在 FreeRTOSConfig.h 中设置 echo 服务器的地址。或者, TCP echo 服务器和/或 客户端也可通过将宏 mainCREATE_TCP_ECHO_TASKS_SINGLE 和 mainCREATE_TCP_ECHO_SERVER_TASK 设置为 1 的方式进行设置。

  5. 虚拟端口有自己的 MAC 地址。 将常量 configMAC_ADDR0 设置为 configMAC_ADDR5 以确保 虚拟网络连接使用的 MAC 地址在网络上是唯一的。 这些常量 位于 FreeRTOSConfig.h 底部。

  6. 如果 IP 地址分配由 DHCP 服务器 管理, 则无需进一步进行配置。

    如果 IP 地址分配不由 DHCP 服务器管理, 那么在 FreeRTOSIPConfig.h 中将 ipconfigUSE_DHCP 设置为 0, 然后编辑 FreeRTOSConfig.h 底部的常量,以确保它们对以太网有效, 这些常量设置了静态 IP 地址、DNS 服务器地址、 网关地址和网络掩码的默认值,确保它们对 以太网有效。 如果 IP 地址的前三个八位字节 与同一网络上的其他 IP 地址的前三个八位字节相匹配,那么该 IP 地址就有效 ——网络上的每个 IP 地址都必须是唯一的 。

  7. 在 IDE 的 Build 菜单中选择 "Build Solution"(或按 F7 ) 以构建应用程序。


使用说明

  • 在 main.c 中定义以下常量, 以允许在构建中包含或排除任务:


    /* Set the following constants to 1 or 0 to define which tasks to include and
    exclude. */

    #define mainCREATE_SIMPLE_UDP_CLIENT_SERVER_TASKS 1
    #define mainCREATE_TCP_ECHO_TASKS_SINGLE 0
    #define mainCREATE_TCP_ECHO_SERVER_TASK 0

调试说明

在 Visual Studio 标准版中,F10 是 用来在进入 main() 时启动调试会话和中断的按键。

可使用同一台主机构建应用程序、调试应程序以及 并且(因为使用了 Win32 模拟器)运行应用程序。 无特殊调试说明。


IPv6 WinSIM 演示

源代码和项目文件

该演应用示程序可在 main 分支 FreeRTOS 存储库的主分支中找到。该演示应用程序可在 上述存储库的 FreeRTOS/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo 目录中找到。该演示展示了 FreeRTOS-Plus-TCP IPv6 和多接口库的多个协议(UDP、TCP、ICMP/ping、NTP)。此演示将针对所述的每个协议同时使用 IPv6 和 IPv4 。

FreeRTOS-Plus-TCP Multiple Interface Visual Studio 项目文件可在以下目录中找到:Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo。 您可以在 .props 文件中找到多个指示源文件位置的宏:

  • $(FREERTOS_SOURCE_DIR) 内核源
  • $(FREERTOS_INCLUDE_DIR) 内核 头文件
  • $(DEMO_COMMON_SOURCE_DIR) 演示的公共目录的位置
  • $(PLUS_TCP_SOURCE_DIR) The FreeRTOS-Plus-TCP 源文件
  • $(PLUS_TCP_INCLUDE_DIR) The FreeRTOS-Plus-TCP 头文件
  • $(UTILITIES_SOURCE_DIR) tcp_utilities 目录的位置

您可以更改这些宏,让项目使用不同的源代码树。

目标硬件

此项目使用 FreeRTOS-Plus-TCP FreeRTOS Windows 模拟器。 Windows 模拟器提供了一个便捷的评估平台,但它并未展示实时行为。模拟时间比实际时间 慢得多。

编译器/工具链

已预配置此项目,以使用 免费的 Microsoft Visual C++ (MSVC) Express 版本构建。 使用的是 MSVC Express Edition 2010。

功能

IPv6_Multi_WinSim_demo 演示可执行一些基本的网络活动:

  • 对局域网中的 IPv4 地址进行 ARP 地址解析
  • 对局域网中的 IPv6 地址进行邻居发现
  • 使用 DNS(异步或同步)查找 IPv4 或 IPv6 地址
  • 使用 LLMNR 查找本地主机 (IPv4/6)(不再视为安全操作)
  • 通过 IPv4/IPv6 与 NTP 服务器对话并使用 UDP 获取时间
  • 使用 TCP/HTTP 从任何公共服务器下载文件
  • 使用 IPv4 或 IPv6 对网络或局域网上的任何服务器执行 ping 操作

此演示可以轻松适应您的各种需求。它的工作原理与使用命令行接口 (CLI) 执行上述任务类似。

下面是一些示例:


http4 google.co.uk /index.html
http6 amazon.com /index.html
ping4 10.0.1.10
ping6 2001:470:ec54::
dnsq4 yahoo.com
ntp6a 2.europe.pool.ntp.org

最后一行将首先查找所述的 NTP 服务器,发送请求并等待回复。时间将打印在日志中。

虽然它被称为 CLI,但演示中并未包含标准输入。所有命令都在 main.c 中进行硬编码。 关键字可以包含一些单字母后缀:4 或 6(用于 IPv4/6),“a” 表示执行异步 DNS 查找,“c” 表示在开始任务前清除所有缓存 。

构建说明

  1. 通过克隆 分支 (隶属于 FreeRTOS-Plus-TCP 存储库)下载源代码。

  2. 从 Visual Studio IDE 中打开 Visual Studio 解决方案文件 FreeRTOS _Plus_TCP_IPv6_Multi.sln。 该解决方案文件位于 "FreeRTOS/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo" 目录中。

  3. 此演示使用 WinPCap 通过访问真实网络连接上的原始以太网数据来创建虚拟网络连接, 因此只能与有线网络接口一起使用。计算机都有多个真实网络接口。在 FreeRTOSConfig.h 中设置 configNETWORK_INTERFACE_TO_USE,以告知演示应使用哪个真实接口创建虚拟接口。执行应用程序时, 控制台上会显示可用的接口号。
    虚拟接口有自己的 MAC 地址。设置常量 configMAC_ADDR0 至 configMAC_ADDR5, 以确保虚拟网络连接使用的 MAC 地址在网络上是唯一的。这些常量位于 FreeRTOSConfig.h 底部。

  4. 在这种情况下, IP 地址是通过静态分配方式进行的。它不由 DHCP 服务器 管理。如果配置的 IP 地址的前三个 八位字节匹配同网络上其他 IP 地址的前三个八位字节,则该 IP 地址有效, 每个 IP 地址在网络上必须是唯一的。

  5. 在 IDE 的 Build 菜单中选择 "Build Solution"(或按 F7 )以构建应用程序。

使用说明

在 main.c 中定义以下常量,以便在构建过程中包含或排除任务:


/* Set the following constants to 1 or 0 to define which tasks to include and

exclude. */

#define mainCREATE_TCP_ECHO_TASKS_SINGLE 1 /* 1 */
#define mainCREATE_TCP_ECHO_SERVER_TASK 0
#define mainCREATE_UDP_ECHO_TASKS_SINGLE 0
mainCREATE_TCP_ECHO_TASKS_SINGLE
当设置为 1 时,会创建一组任务,这些任务发送 TCP 回显请求到标准回显端口(端口 7), 然后在同一个任务中等待和验证回显回复。( Tx 和 Rx 在同一 RTOS 任务中执行。) 必须 使用 FreeRTOSConfig.h 中的 configECHO_SERVER_ADDR0 至 configECHO_SERVER_ADDR3 常量配置回显服务器的 IP 地址。

mainCREATE_TCP_ECHO_SERVER_TASK
当设置为 1 时,会创建一个任务,接受标准回显端口(端口 7)上的连接, 并回传该连接上接收到的任何数据。

mainCREATE_UDP_ECHO_TASKS_SINGLE
当设置为 1 时,会创建一个任务,向 configECHO_SERVER_ADDR_STRING 地址(IPv4/IPv6)发送数据, 并在该地址回传数据。

有关如何运行演示的更多详细信息,请参阅 FreeRTOS_Plus_TCP_IPv6_Demo 自述文件

调试说明

F10 作为标准 Visual Studio 键用于启动调试会话并在进入 main() 时中断调试。使用同一台主机 构建应用程序、调试应用程序以及(由于使用了 Win32 模拟器)运行应用程序。没有特殊的 调试说明。


与其他开源 TCP/IP 堆栈一起使用的旧版演示
进一步阅读关于旧版 TCP/IP 演示的更多信息。

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.