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() 等待传入连接。
当建立连接并收到数据时,任务会回复
相同的数据。
-
通过包含源代码和项目文件的 FreeRTOS 下载页面下载源代码
文件进行一些修改。 将 zip 文件提取至方便的位置,以确保
目录结构体得到维护。
-
从 Visual Studio IDE 中打开 Visual Studio 解决方案文件 FreeRTOS_Plus_TCP_Minimal.sln
。 此解决方案文件在
"FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator"
目录下。
-
演示使用 WinPCap,
通过访问真实网络连接上的原始以太网数据来创建虚拟网络连接。 许多
计算机具有多个真实的网络端口。 在
FreeRTOSConfig.h. 中设置 configNETWORK_INTERFACE_TO_USE,以告诉演示应该使用哪个真实端口
来创建虚拟端口。
当执行应用程序时,可用端口号会显示在控制台上
(请参阅下文使用说明中的图像)
。
-
请按照
Echo 客户端示例文档页面
设置 echo 服务器并在
FreeRTOSConfig.h 中设置 echo 服务器的地址。或者, TCP echo 服务器和/或
客户端也可通过将宏 mainCREATE_TCP_ECHO_TASKS_SINGLE
和 mainCREATE_TCP_ECHO_SERVER_TASK 设置为 1 的方式进行设置。
-
虚拟端口有自己的 MAC 地址。
将常量 configMAC_ADDR0 设置为 configMAC_ADDR5 以确保
虚拟网络连接使用的 MAC 地址在网络上是唯一的。 这些常量
位于 FreeRTOSConfig.h 底部。
-
如果 IP 地址分配由
DHCP 服务器 管理,
则无需进一步进行配置。
如果 IP 地址分配不由 DHCP 服务器管理,
那么在 FreeRTOSIPConfig.h 中将 ipconfigUSE_DHCP 设置为 0,
然后编辑 FreeRTOSConfig.h 底部的常量,以确保它们对以太网有效,
这些常量设置了静态 IP 地址、DNS 服务器地址、
网关地址和网络掩码的默认值,确保它们对
以太网有效。 如果 IP 地址的前三个八位字节
与同一网络上的其他 IP 地址的前三个八位字节相匹配,那么该 IP 地址就有效
——网络上的每个 IP 地址都必须是唯一的
。
-
在 IDE 的 Build 菜单中选择 "Build Solution"(或按 F7 )
以构建应用程序。
-
在 main.c 中定义以下常量,
以允许在构建中包含或排除任务:
#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
http6 amazon.com
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” 表示在开始任务前清除所有缓存
。
构建说明
- 通过克隆
主分支
(隶属于 FreeRTOS-Plus-TCP 存储库)下载源代码。
- 从 Visual Studio IDE 中打开 Visual Studio 解决方案文件
FreeRTOS _Plus_TCP_IPv6_Multi.sln
。
该解决方案文件位于 "FreeRTOS/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo" 目录中。
- 此演示使用 WinPCap 通过访问真实网络连接上的原始以太网数据来创建虚拟网络连接,
因此只能与有线网络接口一起使用。计算机都有多个真实网络接口。在
FreeRTOSConfig.h 中设置 configNETWORK_INTERFACE_TO_USE,以告知演示应使用哪个真实接口创建虚拟接口。执行应用程序时,
控制台上会显示可用的接口号。
虚拟接口有自己的 MAC 地址。设置常量 configMAC_ADDR0 至 configMAC_ADDR5,
以确保虚拟网络连接使用的 MAC 地址在网络上是唯一的。这些常量位于 FreeRTOSConfig.h 底部。
- 在这种情况下, IP 地址是通过静态分配方式进行的。它不由
DHCP 服务器 管理。如果配置的 IP 地址的前三个
八位字节匹配同网络上其他 IP 地址的前三个八位字节,则该 IP 地址有效,
每个 IP 地址在网络上必须是唯一的。
- 在 IDE 的 Build 菜单中选择 "Build Solution"(或按 F7 )以构建应用程序。
使用说明
在 main.c 中定义以下常量,以便在构建过程中包含或排除任务:
#define mainCREATE_TCP_ECHO_TASKS_SINGLE 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 模拟器)运行应用程序。没有特殊的
调试说明。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.