文章目录
- 一、 搭建linux环境
- 二、安装cmkae和g++
- 三、如何在linux运行freertos
- 四、常见问题与排查
- 1. cmake 未找到(cmake: command not found)
- 2. g++ 未找到(g++: command not found)
- 3. make 失败(make: command not found 或编译报错)
- 4. 权限不足(Permission denied)
- 5. 找不到头文件(os_api.h: No such file or directory)
- 6. 运行后无输出或程序卡住
- 五、总结
- 注意事项
- 下一步学习建议
一、 搭建linux环境
参考:[精简linux] 快速在window搭建linux验证平台
二、安装cmkae和g++
sudo apt install cmake
sudo apt install g++
三、如何在linux运行freertos
打包文件:https://download.csdn.net/download/qq_29246181/85212272
自行解压到非中文路径
- 通过ubuntu进入上述文件路径 cd freertos_linux/
- 进入bulid文件夹,cd build/
推荐建立build目录进行编译,所有的中间文件都会生成在build目录下,需要删除时直接清空该目录即可
- 执行 cmake 命令,该命令使cmake检测编译环境,并生成相应的makefile
cmake..在当前路径,执行make,并生成目标文件,main
运行目标文件 执行./main
#include<iostream>#include<stdio.h>#include"os_api.h"voidtask1(void*arg){while(1){printf("123\n");os::delay(1000);}}voidtask2(void*arg){while(1){printf("456\n");os::delay(2000);}}intmain(){os::task::create(task1,"task1",1024,1);os::task::create(task2,"task1",1024,2);os::start();return0;}下面是 FreeRTOS 示例从编译到运行的完整流程:
四、常见问题与排查
在编译或运行 FreeRTOS 示例的过程中,可能会遇到一些常见错误,下面列出典型问题及对应的解决方案。
1. cmake 未找到(cmake: command not found)
执行cmake ..时提示找不到命令,说明系统尚未安装 cmake,或安装后未生效。
sudoaptupdatesudoaptinstallcmake安装完成后可用以下命令验证版本:
cmake--version2. g++ 未找到(g++: command not found)
编译过程中提示找不到 g++,说明缺少 C++ 编译器,安装即可:
sudoaptinstallg++同样可以验证版本:
g++--version3. make 失败(make: command not found 或编译报错)
如果提示找不到 make,先安装:
sudoaptinstallmake如果 make 执行过程中报错,常见原因是 cmake 生成 Makefile 时环境不完整。建议先清空 build 目录后重新生成:
cdbuildrm-rf* cmake..make4. 权限不足(Permission denied)
运行./main时提示权限不足,通常是因为目标文件没有可执行权限,或当前用户对目录无写权限。
给目标文件添加可执行权限:
chmod+x ./main如果编译过程中因目录权限报错,可对 build 目录授权后重试:
sudochmod-R777build5. 找不到头文件(os_api.h: No such file or directory)
编译时提示找不到os_api.h,说明当前路径不在编译搜索路径中。请确认已进入build目录执行 cmake,且源码目录结构完整,不要手动移动或删除头文件。
6. 运行后无输出或程序卡住
如果./main运行后没有任何打印,先确认是否已成功生成目标文件,并检查终端是否正常。若程序卡住,可尝试重新编译,或检查代码中任务创建参数(如栈大小 1024 是否足够)。
五、总结
本文从零开始在 Linux 环境下搭建 FreeRTOS 验证平台,并成功编译、运行了一个包含两个任务的示例程序。整个过程可以概括为以下几个关键步骤:
- 搭建 Linux 环境:通过精简 Linux 方案快速在 Windows 上搭建验证平台,为后续编译运行提供基础。
- 安装编译工具:使用
apt安装 cmake 和 g++,这是生成 Makefile 和编译 C++ 代码的前提。 - 编译与运行:进入
build目录执行cmake ..生成 Makefile,再执行make生成目标文件,最后运行./main观察任务调度输出。
注意事项
- 源码包务必解压到非中文路径,避免因路径编码问题导致编译失败。
- 推荐使用独立的
build目录进行编译,便于清理中间文件。 - 遇到编译或运行错误时,可对照「常见问题与排查」一节逐一排查,多数问题源于工具缺失、权限不足或目录结构不完整。
下一步学习建议
- 深入任务调度:本文示例创建了两个任务,可进一步学习 FreeRTOS 的优先级、时间片轮转、任务状态切换等调度机制,尝试调整优先级和延时观察输出变化。
- 学习内存管理:FreeRTOS 提供多种内存分配方案(如 heap_1 ~ heap_5),可研究不同方案的适用场景,并尝试在任务中动态申请和释放内存。
- 探索同步与通信:学习信号量、队列、互斥锁等机制,实现任务间的数据传递与同步。
- 移植到真实硬件:在模拟环境跑通后,可将工程移植到 STM32 等真实开发板,体验中断、外设驱动与实时性的实际表现。
下面是本文整体流程的概览图: