[Linux服务器] [Linux] 在linux平台搭建freertos

130 0
Honkers 昨天 16:46 | 显示全部楼层 |阅读模式

一、 搭建linux环境

参考:[精简linux] 快速在window搭建linux验证平台

二、安装cmkae和g++

sudo apt install cmake
sudo apt install g++

三、如何在linux运行freertos

打包文件:https://download.csdn.net/download/qq_29246181/85212272
自行解压到非中文路径

  1. 通过ubuntu进入上述文件路径 cd freertos_linux/
  2. 进入bulid文件夹,cd build/

推荐建立build目录进行编译,所有的中间文件都会生成在build目录下,需要删除时直接清空该目录即可

  1. 执行 cmake 命令,该命令使cmake检测编译环境,并生成相应的makefile
  1. cmake ..
复制代码

  1. 在当前路径,执行make,并生成目标文件,main

  2. 运行目标文件 执行./main

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include "os_api.h"
  4. void task1(void* arg) {
  5. while(1) {
  6. printf("123\n");
  7. os::delay(1000);
  8. }
  9. }
  10. void task2(void* arg) {
  11. while(1) {
  12. printf("456\n");
  13. os::delay(2000);
  14. }
  15. }
  16. int main() {
  17. os::task::create(task1, "task1", 1024, 1);
  18. os::task::create(task2, "task1", 1024, 2);
  19. os::start();
  20. return 0;
  21. }
复制代码

下面是 FreeRTOS 示例从编译到运行的完整流程:

四、常见问题与排查

在编译或运行 FreeRTOS 示例的过程中,可能会遇到一些常见错误,下面列出典型问题及对应的解决方案。

1. cmake 未找到(cmake: command not found)

执行 cmake .. 时提示找不到命令,说明系统尚未安装 cmake,或安装后未生效。

  1. sudo apt update
  2. sudo apt install cmake
复制代码

安装完成后可用以下命令验证版本:

  1. cmake --version
复制代码

2. g++ 未找到(g++: command not found)

编译过程中提示找不到 g++,说明缺少 C++ 编译器,安装即可:

  1. sudo apt install g++
复制代码

同样可以验证版本:

  1. g++ --version
复制代码

3. make 失败(make: command not found 或编译报错)

如果提示找不到 make,先安装:

  1. sudo apt install make
复制代码

如果 make 执行过程中报错,常见原因是 cmake 生成 Makefile 时环境不完整。建议先清空 build 目录后重新生成:

  1. cd build
  2. rm -rf *
  3. cmake ..
  4. make
复制代码

4. 权限不足(Permission denied)

运行 ./main 时提示权限不足,通常是因为目标文件没有可执行权限,或当前用户对目录无写权限。

给目标文件添加可执行权限:

  1. chmod +x ./main
复制代码

如果编译过程中因目录权限报错,可对 build 目录授权后重试:

  1. sudo chmod -R 777 build
复制代码

5. 找不到头文件(os_api.h: No such file or directory)

编译时提示找不到 os_api.h,说明当前路径不在编译搜索路径中。请确认已进入 build 目录执行 cmake,且源码目录结构完整,不要手动移动或删除头文件。

6. 运行后无输出或程序卡住

如果 ./main 运行后没有任何打印,先确认是否已成功生成目标文件,并检查终端是否正常。若程序卡住,可尝试重新编译,或检查代码中任务创建参数(如栈大小 1024 是否足够)。

五、总结

本文从零开始在 Linux 环境下搭建 FreeRTOS 验证平台,并成功编译、运行了一个包含两个任务的示例程序。整个过程可以概括为以下几个关键步骤:

  1. 搭建 Linux 环境:通过精简 Linux 方案快速在 Windows 上搭建验证平台,为后续编译运行提供基础。
  2. 安装编译工具:使用 apt 安装 cmake 和 g++,这是生成 Makefile 和编译 C++ 代码的前提。
  3. 编译与运行:进入 build 目录执行 cmake .. 生成 Makefile,再执行 make 生成目标文件,最后运行 ./main 观察任务调度输出。

注意事项

  • 源码包务必解压到非中文路径,避免因路径编码问题导致编译失败。
  • 推荐使用独立的 build 目录进行编译,便于清理中间文件。
  • 遇到编译或运行错误时,可对照「常见问题与排查」一节逐一排查,多数问题源于工具缺失、权限不足或目录结构不完整。

下一步学习建议

  • 深入任务调度:本文示例创建了两个任务,可进一步学习 FreeRTOS 的优先级、时间片轮转、任务状态切换等调度机制,尝试调整优先级和延时观察输出变化。
  • 学习内存管理:FreeRTOS 提供多种内存分配方案(如 heap_1 ~ heap_5),可研究不同方案的适用场景,并尝试在任务中动态申请和释放内存。
  • 探索同步与通信:学习信号量、队列、互斥锁等机制,实现任务间的数据传递与同步。
  • 移植到真实硬件:在模拟环境跑通后,可将工程移植到 STM32 等真实开发板,体验中断、外设驱动与实时性的实际表现。

下面是本文整体流程的概览图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 5139
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行