通常,您在独立环境中运行 FreeRTOS 应用程序 - 即,系统直接引导到您的应用程序中,而不是由操作系统加载(在某些情况下可能存在中间引导加载程序)。
FreeRTOS 本身没有“控制台”的概念;您的应用程序必须实现对stdio
I/O 或低级 I/O 的支持,通常通过 UART 和在开发主机上运行的终端仿真器或通过调试器使用半主机。这是移植标准库的问题,而不是 FreeRTOS 的问题。标准库应该有某种类型的 pirting 层(例如,在 Newlib 中称为“syscalls”,或在 ARM/Keil 工具链中称为“Retargetting”)。
FreeRTOS 应用程序是使用交叉开发工具而不是托管开发环境构建的。也就是说,代码是使用交叉编译器在开发主机上构建的,然后加载到目标硬件并执行。FreeRTOS 有一个 Win32 端口,允许在 Windows 主机上构建和执行 FreeRTOS 应用程序,但该端口只是一个模拟,不提供硬实时调度。它对于在硬件可用之前进行开发以及使用 Visual Studio 提供的通常可用于嵌入式目标的更复杂的调试环境进行测试和调试很有用。
您通常会选择一个 FreeRTOS 支持并满足您的应用程序需求的硬件平台,然后选择一个支持您的硬件平台并反过来受 FreeRTOS 支持的工具链。对于大多数 32 位平台和 8 位 AtmelAVR 平台,GNU gcc 几乎无处不在,许多专有编译器支持 GNU 扩展以实现兼容性。除非您选择一个特别模糊的工具链/目标组合,否则您不太可能无法移植以使用现有的 FreeRTOS 移植。