FreeRTOS 编译器

FreeRTOS compiler

我刚开始学习 FreeRtos。我从 "Using the FreeRtos Real Time Kernel" Richard Barry 的 pdf 书开始。 这本书有全面的例子,我很了解其中的原理,但我希望能够在某个地方编译这些例子。

这听起来像是一个愚蠢的问题,但我是 RTOS 的新手:D。 我可以使用什么编译器来编译 freeRtos 代码?我在谷歌上搜索了很多,我找到了一些名为 Watcom 的编译器,并试图 运行 里面的一些代码,但是找不到也找不到任何关于如何使用这个编译器的例子。

所以基本上我想要的是一些实际有人展示如何在编译器中 运行 简单的 freeRtos 代码然后 运行 它并在控制台中查看实际结果的示例。

如有任何链接,我们将不胜感激。感谢阅读!

FreeRTOS 支持多种编译器。 Official FreeRTOS Ports page.

中列出了每个官方支持的端口的官方支持编译器

您可以使用列出的任何编译器(可能更多,但不会得到官方支持)。一般来说,您应该能够继续使用您已经使用的东西,因为 FreeRTOS 通常支持您使用的任何平台的标准供应商提供的编译器。

通常情况下,您 运行 一个独立环境中的 FreeRTOS 应用程序 - 即,系统直接启动到您的应用程序,而不是由 OS 加载(可能有在某些情况下是中间引导加载程序)。

FreeRTOS本身没有"console"的概念;您的应用程序必须实现对 stdio 或低级别 I/O 的支持,通常是通过开发主机上的 UART 和终端仿真器 运行ning 或通过调试器使用半托管。这是移植标准库的问题,而不是 FreeRTOS 的问题。标准库应该有某种 pirting 层(例如,在 Newlib 中称为 "syscalls",或在 ARM/Keil 工具链中称为 "Retargetting")。

FreeRTOS 应用程序是使用交叉开发工具而非托管开发环境构建的。也就是说,代码是使用交叉编译器在开发主机上构建的,然后加载到目标硬件并执行。有一个 FreeRTOS 的 Win32 端口允许 FreeRTOS 应用程序在 Windows 主机上构建和执行,但该端口只是一个 模拟 ,并且不提供硬实时调度。它对于在硬件可用之前进行开发以及使用 Visual Studio 提供的通常可用于嵌入式目标的更复杂的调试环境进行测试和调试非常有用。

您通常会做的是 select FreeRTOS 支持并满足您的应用程序需求的硬件平台,然后 select 支持您的硬件平台的工具链 and 又得到 FreeRTOS 的支持。对于大多数 32 位平台和 8 位 AtmelAVR 平台,GNU gcc 几乎无处不在,许多专有编译器支持 GNU 扩展以实现兼容性。除非你选择一个特别晦涩的 toolchain/target 组合,否则你不太可能无法使用任何一个端口来使用 FreeRTOS.

的现有端口

如果您使用的是基于 STM32 的开发板,则可以将系统 Workbench 用于 STM32。系统 Workbench 使用了基于 GCC 的编译器,使用起来非常愉快。您可以从以下link:

轻松下载完全跨平台IDE和编译工具

System Workbench for STM32