下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

FreeRTOS-Plus-TCP 和 FreeRTOS-Plus-FAT 示例
使用 FreeRTOS Windows 移植

[可构建的 TCP/IP 和 FAT FS 示例]

简介

我们提供了两个项目,这两个项目可使用免费工具在 Windows 环境下构建并执行 FreeRTOS-Plus-TCP 和 FreeRTOS-Plus-FAT, 无需 购买任何特殊硬件:
  1. FreeRTOS-Plus-TCP 入门项目

    FreeRTOS-Plus-TCP 入门项目仅 包括本页面底部列出的其中两个示例 , 不包括 FreeRTOS-Plus-FAT、 FreeRTOS-Plus-CLI 或任何跟踪功能。

  2. 综合项目

    综合项目包括此页面底部列出的所有示例FreeRTOS-Plus-FAT 为 FTP 和 HTTP 示例提供文件存储, 而 FreeRTOS-Plus-CLI 则提供命令行接口。

这两个项目都是预配置的,以便使用 Visual Studio C/C++ 免费版进行构建, 并使用 FreeRTOS Win32 移植


简介

 

前提条件

构建和运行 Win32 RTOS 移植 示例需满足以下条件:
  • 以太网端口已连接的一台 Windows 主机(请参阅 下文的硬件设置 部分)。 这些项目 已在 Windows XP、Windows 7 和 Windows 10 系统中测试过。

    如果您没有有线以太网端口:

    • 您可以尝试 安装虚拟网卡,然后将虚拟网卡桥接至 Wi-Fi 接口——若此方法可行,希望您能 在支持论坛上发布帖子 ,以供其他网友参考!
    • 我们成功使用了 以太网转 Wi-Fi 桥接器 (但我们无法为此类设备的使用提供技术支持)。

  • Visual Studio C/C + + 的安装版本。 该工具的 免费社区版 已足够使用。 详情请参见页面顶部说明, 它详细描述了使用各版 Visual Studio for C/C++ 进行 FreeRTOS Windows 移植 的情况。

  • WinPCap 安装版本(NPCap 或许也可以)。 如果 您已安装 Wireshark,则可跳过此步骤。

  • 如果你想运行入门项目,请前往 FreeRTOS 主程序下载页面下载, 如果你想运行综合项目,请前往 FreeRTOS Labs 源代码下载页面下载 。 注意,Labs 下载页面中的源代码比较旧, 不建议用于生产

  • 最后,虽然严格来说并不需要这么做,但我们强烈建议您安装 Wireshark 等工具,以便查看网络流量。


硬件设置

此 Win32 示例使用 WinPCap 读写原始以太网数据包,以便在 以太网上创建一个虚拟节点。 该虚拟节点拥有 MAC 地址IP 地址。 在示例中,主机会使用 其真实的 MAC 地址和 IP 地址与虚拟的 MAC 地址 和 IP 地址进行通信,就好像它们是同一网络上的两台独立计算机那样—— 实际上,这两个节点都在同一主机上运行。

要让此设置有效,即使没有使用网络上的其他节点,主机也必须物理连接到网络, 否则, 在 Windows 系统下,以太网端口会被断开,无法进行通信 。 相关网络不必是真实的网络,只需 将 Windows 主机连接至具有以太网端口的 MCU 开发板即可, 前提是 Windows 认为以太网已连接。

RTOS 模拟器中的 TCP/IP
真实节点和虚拟节点都被连接到 同一网络,因此可以相互通信


打开一个项目

在完成软件设置前,必须先打开项目。

  1. 仅限 FreeRTOS-Plus-TCP 入门项目

    适用于 FreeRTOS-Plus-TCP 入门项目的 Visual Studio 工作区示例名为 FreeRTOS_Plus_TCP_Minimal.sln, 位于 FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator 目录(在主 FreeRTOS 下载中)。

  2. 综合项目

    综合项目的 Visual Studio 工作区示例名为 FreeRTOS_Plus_TCP_and_FAT.sln, 位于 FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_and_FAT_Windows_Simulator 目录(在 FreeRTOS Labs 下载中)。


 

软件设置 #1: 设置静态或动态 IP 地址

为 RTOS 节点分配 IP 地址
FreeRTOSConfig.h 中的网络地址设置
FreeRTOSIPConfig.hFreeRTOSConfig.h 头文件分别用作 FreeRTOS-Plus-TCP 和 FreeRTOS 配置文件。 两者都可以 从 Visual Studio 中打开。

如果主机所连接的网络存在 DHCP 服务器, 则 在 FreeRTOSIPConfig.h 中将 ipconfigUSE_DHCP 设置为 1,并且无需进一步配置IP地址 地址。 您不必知道 DHCP 服务器分配给演示的 IP 地址 (如果 配置了主机名),因为可以直接通过其名称 定位演示。 不过您也可以查看 IP 地址, 因为它是通过 日志工具输出的。

如果所连接的网络没有 DHCP 服务器,则在 FreeRTOSIPConfig.h 中将 ipconfigUSE_DHCP 设置为 0,然后手动配置 IP 地址和网络掩码 。 IP 地址和网络掩码分别使用 FreeRTOSConfig.h 中的 configIP_ADDR0/3 和 configNET_MASK0/3 常量进行设置。 请注意,IP 地址设置位于 FreeRTOSConfig.h, 而非 FreeRTOSIPConfig.h,因为它与应用程序有关, 而非 TCP/IP 堆栈配置选项。

手动设置 IP 地址时,必须确保所选择的 IP 地址与网络掩码兼容。 大多数情况下, IP 地址只要前三个八位字节 与主机地址的前三个八位字节相同即视为兼容。 例如, 如果主机的 IP 地址为 192.168.0.100, 则任何 192.168.0.nnn 地址都是兼容的(nnn 不得为 0 或 255,或 网络上已存在的其他 IP 地址)。

此外,还需要设置网关 地址,且该地址也需 与网络掩码兼容。 这一步骤必不可少,即使网络上并没有网关 (否则,内部健全性检查时将触发 configASSERT() 失败)。 网关地址使用 FreeRTOSConfig.h 中的 configGATEWAY_ADDR0/3 常量设置。


 

软件设置 #2: 选择(虚拟)MAC 地址

如果只有一台运行示例的计算机连接到网络, 则无需修改[虚拟] MAC 地址

如果有多台运行示例的计算机连接到 同一网络,则必须确保每台计算机都有 唯一的[虚拟] MAC 地址。

MAC 地址使用 FreeRTOSConfig.h 中的 configMAC_ADDR0/5 常量进行设置。


 

软件设置 #3: 设置主机名

使用 名称来识别网络节点通常比使用 IP 地址识别方便。 当 IP 地址未知时更是如此。 例如,与其向 IP 地址发送 诸如 “ping 192.168.0.200” 之类的 ping 请求, 不如 向主机名发送诸如 “ping MyHostName” 之类的 ping 请求(其中 MyHostName 是分配给网络节点的名称)。

如果只有一台运行示例的计算机连接到 网络,则无需修改默认主机名, 即 “RTOSDemo”。 如果有多台运行示例的计算机 连接到同一网络,则必须 给每台计算机分配不同的主机名。

主机名由 main.c 源文件顶部的 mainHOST_NAME 常量设置。 根据网络拓扑,也可使用由 mainDEVICE_NICK_NAME 常量设置的第二个主机名, 该常量也定义在 main.c 顶部。


软件设置 #4: 打印和记录消息

定向 RTOS 调试输出
FreeRTOSIPConfig.h 中的日志记录配置
提供 FreeRTOSIPConfig.h 时,FreeRTOS_debug_printf() 会被禁用, 而且 FreeRTOS_printf() 还会调用 名为 vLoggingPrintf() 的 Windows 模拟器特定实用程序文件。

日志输出可发送到:

  1. UDP 端口:

    如果 mainLOG_TO_UDP 在 main.c 中被设置为 pdTRUE,则将 使用 UDP 发送日志输出。 UDP 数据将被发送至由 定义在 FreeRTOSConfig.h 中的 configECHO_SERVER_ADDR0 和 ConfigECHO_SERVER_ADDR3 常量设置的 IP 地址 (当 使用回显服务器演示示例时,它就是回显服务器的地址) 和端口号 (由同样定义在 FreeRTOSConfig.h 中的 configPRINT_PORT 常量设置)。

  2. 磁盘文件:

    如果 mainLOG_TO_DISK_FILE 在 main.c 中被设置为 pdTRUE ,则日志输出将被 写入名为 RTOSDemo.log 的文件中。 当此文件达到 40M 字节时,它将被重命名为 RTOSDemo.ful,并启动一个新的日志文件 。

  3. 标准输出:

    如果 mainLOG_TO_STDOUT 在 main.c 中被设置为 pdTRUE ,则日志输出将被 发送到 stdout。

注意: 不应从 RTOS 任务中进行与输出相关的 Windows 系统调用。 因此,标准输出和磁盘 文件日志数据会被传递至标准的 Windows 线程以进行输出。 UDP 日志直接从 RTOS 任务发送,因为它使用 FreeRTOS-Plus-TCP,而不是 Windows TCP/IP 堆栈。


 

软件设置 #5: 选择网络接口

大多数计算机都有多个网络接口,因此须 告诉应用程序该使用哪个接口。

先编译(在 Visual Studio 中按 F7),然后运行(在 Visual Studio 中按 F5) 应用程序。 控制台屏幕会显示可用的网络 接口。 将 FreeRTOSConfig.h 中的 configNETWORK_INTERFACE_TO_USE 常量设置为 正在使用的接口旁边的数字。 然后须重新编译程序。

故障排除:

  • 如果未显示网络接口,那 可能是 windows 没有运行 NPF 服务。 为解决此问题, 请在命令控制台输入 "sc start npf" (需要管理员权限), 然后重新启动应用程序。

  • 如果您无法建立通信,或者您 在 Wireshark 中看不到任何网络流量,那请使用有线网络, 而不要使用无线网络。如果此法不通,则请 从同一网络的其他计算机连接到 (或 ping)项目 。

  • 请务必确保您的防火墙或 Windows 设置没有阻止 网络流量。

RTOS 网络接口
示例开始运行时所显示的 可用网络接口


运行示例

现在,硬件和软件均已配置好,可以开始执行示例。


 

基本连接性测试

在尝试以下示例之前,建议 通过启动、运行应用程序,然后对目标执行 ping 操作以测试基本连接性。 如果收到 ping 回复, 且正确连接到网络。

若要 ping 设备,请打开命令提示符并键入 “ping aaa.bbb.ccc.ddd”,其中 aaa.bbb.ccc.ddd 是 网络连接时显示在控制台上的 IP 地址。 另外,如果要在配置文件中启用 ping 操作, 则请键入 “ping RTOSDemo” ,这里假设 主机名尚未发生改变,仍是默认的 “RTOSDemo” 。

如果未收到 ping 回复,则关闭 DHCP,为目标分配一个 IP 地址,然后使用分配的 IP 地址代替主机名重试。

本页的设置说明描述了如何设置静态 IP 地址以及如何设置 主机名。

对 TCP 目标进行 ping 操作
对目标执行 ping 操作,并接收 ping 响应


选择要运行的示例

综合项目包含多个示例, 可以使用 #define 常量 (位于 main.c 顶部)有选择地在构建中包含这些示例。 关于每个示例的描述以及 将示例包含在构建中的详情说明,请参阅下方链接。

所有示例均可在综合项目中使用。 只有 “与基本 UDP 服务器进行通信的基本 UDP 客户端”和 “TCP 回显客户端 (在同一 RTOS 任务中执行 Rx 和 Tx )”示例 可在更简单的 FreeRTOS-Plus-TCP 入门项目中使用。

可用示例

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