目录
[一 虚拟机安装](#一 虚拟机安装)
[二 FreeRTOS库下载](#二 FreeRTOS库下载)
[三 移植POSIX](#三 移植POSIX)
[四 测试结果](#四 测试结果)
FreeRTOS 移植允许 FreeRTOS 在 Linux 上运行, 就像 FreeRTOS Windows 移植(通常 称为 FreeRTOS Windows 模拟器)始终允许 FreeRTOS 在 Windows 上运行那样。该移植由 David Vrabel 开发, 灵感来自 William Davy 在 2008 年开发的 Linux 移植。
移植层的实现使用 POSIX 线程,因此该移植也称为 POSIX 移植。请不要将其与 FreeRTOS-Plus-POSIX 库混淆,两者的作用完全相反。 FreeRTOS-Plus-POSIX 为原生 FreeRTOS API 提供 POSIX 线程包装器,使用 POSIX API 编写的应用程序因此可以在 FreeRTOS 上运行,而 Linux/POSIX FreeRTOS 移植则让 FreeRTOS 应用程序可以在 POSIX 操作系统上运行。
就像 Windows 移植一样,FreeRTOS Linux 移植提供了一个方便的环境, 您可以在其中试验 FreeRTOS 并开发 FreeRTOS 应用程序,以便之后将其移植到真正的嵌入式硬件上,但 FreeRTOS 应用程序 (使用 Linux 移植)不会表现出实时行为。

参考适用于 FreeRTOS 的 Posix/Linux 模拟器演示 使用 GCC - FreeRTOS™中的内容,实现一下Ubuntu系统中,FreeRTOS的POSIX移植。
一 虚拟机安装
【1】安装VMware虚拟机:VMware Workstation Pro - 行业标准桌面虚拟机软件
【2】下载ubuntu:ubuntu-cdimage-releases-24.04-release安装包下载-开源镜像站-阿里云
【3】在VMware虚拟机上安装ubuntu:windows 11安装VMware 17 ,VMware安装Ubuntu 20.4,ssh传文件-腾讯云开发者社区-腾讯云
二 FreeRTOS库下载
【1】运行ubuntu,并在其中安装移植必备的工具 gcc / make / libpcap:
bash
sudo apt install gcc
sudo apt install make
sudo apt install libpcap-dev
【2】安装git,并用git拉取FreeRTOS源码(Http、ssh或者直接下载压缩包都可以):
bash
sudo apt install git
# 使用 Git 克隆仓库(会包含所有演示代码)
方法1(Http):git clone https://github.com/FreeRTOS/FreeRTOS.git
方法2(ssh):git clone git@github.com:FreeRTOS/FreeRTOS.git
# 使用 Git 克隆仓库(会包含所有演示代码)
方法1(Http):git clone https://github.com/FreeRTOS/FreeRTOS-Kernel.git
方法2(ssh):git clone git@github.com:FreeRTOS/FreeRTOS-Kernel.git
【注意!】clone的代码中,FreeRTOS/FreeRTOS/Source 中有包含软链接,可能拉取不了,这边需要手动整理一下,将 FreeRTOS-Kernel 中的内容直接放在 FreeRTOS/FreeRTOS/Source 路径下。
三 移植POSIX
【1】只进行一项简单的Blinky演示,如果 mainSELECTED_APPLICATION 设置为 BLINKY_DEMO,则 main() 将调用 main_blinky(),该函数在 main_blinky.c 中实现。main_blinky()会创建一个非常简单的演示,其中包括两项任务、一个软件定时器和一个队列。其中一项任务通过队列以200毫秒的频率向另一项任务反复发送值 100,而定时器则每 2000 毫秒就向同一队列发送值 200。接收任务每次从队列接收到任一值时都会打印出一条消息。
【2】构建源代码(编译选项里将追踪功能禁用,否则编译会有问题。同时用户DEMO选择BLINKY_DEMO),编译成功后,会在 FreeRTOS/Demo/Posix_GCC 目录下新生成一个 build 文件夹:
bash
make NO_TRACING=1 USER_DEMO=BLINKY_DEMO
四 测试结果
【1】运行编译成功的可执行文件:
bash
./build/posix_demo
【2】结果如下:
