换个环境运行-将FreeRTOS运行在linux上【转】
转自:https://blog.csdn.net/q361750389/article/details/104105862
前言:了解FreeRTOS第一步肯定是搭建可以运行的环境,不管是移植到STM32还是哪里都阔以,有自己敲代码的实践总比只捧着书看来的印象深刻,所以为了方便,本猿查阅点资料,把FreeRTOS运行在linux上来方便学习!
本篇目标:搭建FreeRTOS可用的环境来运行,并学习基本的一些功能。
材料准备:
- FreeRTOS官方移植于linux代码:FreeRTOS-simulator-for-Linux
- FreeRTOS修改官方移植linux工程:Freertos_in_linux,(git仓库地址更新)
文件介绍
- 官方这份 FreeRTOS-simulator-for-Linux 资料demo里面包含了很多linux外设和FreeRTOS的使用,但是内核版本很低,很久没有往上迭代了,有些参数发生了变化,也不方便于最新版本的学习,所以只拿来作为移植的参考。
- 修改后的移植工程 Freertos_in_linux 借鉴了官方的移植,改变了一些编译结构,将demo分成不同的文件夹进行编译测试,同时将FreeRTOS的版本更新到了v10.2.1,方便与最新的进行同步学习了解。
.
├── output
├── Posix_GCC_Simulator
│ ├── FreeRTOS_Posix
│ │ ├── config.h //demo 配置文件
│ │ ├── Debug //demo 编译相关文件
│ │ ├── FreeRTOSConfig.h //FreeRTOS 配置文件
│ │ ├── FreeRTOS_Kernel //FreeRTOS 内核文件
│ │ ├── Release
│ │ └── study_demo //demo 工程,直接脚本可以编译,待更新,详细见例程介绍
│ └── Readme.txt
├── Posix_GCC_Simulator_6.0.4.zip
└── README.md
运行
# 编译
cd Posix_GCC_Simulator/FreeRTOS_Posix/study_demo/rtos_start_1/
sh build.sh
# 运行
./rtos_start_1_app.bin
# 清除
sh build.sh clean
运行输出
[13:18:49] jinhao:rtos_start_1 git:(master) $ ./rtos_start_1_app.bin
[log ] main.c:79 | Freertos v10.2.1 start
Running as PID: 9367
Timer Resolution for Run TimeStats is 100 ticks per second.
[log ] main.c:43 | creat_task
[log ] main.c:55 | this is creat task:idle-0
[log ] main.c:55 | this is creat task:idle-1
[log ] main.c:55 | this is creat task:idle-2
[log ] main.c:55 | this is creat task:idle-3
[log ] main.c:55 | this is creat task:idle-4
[log ] main.c:55 | this is creat task:idle-5
[log ] main.c:55 | this is creat task:idle-6
[log ] main.c:55 | this is creat task:idle-7
[log ] main.c:55 | this is creat task:idle-8
[log ] main.c:55 | this is creat task:idle-9
[log ] main.c:63 | delete creat task
例程更新ing
.
├── rtos_start_1 //rtos的启动demo
├── rtos_task_2 //rtos任务的使用和任务资源情况查看
├── rtos_message_3 //rtos消息队列的使用
├── rtos_sem_4 //rtos信号量的使用
├── rtos_message_second_5 //rtos消息队列的另一种使用
├── rtos_mutex_6 //rtos互斥锁的使用
├── rtos_event_7 //rtos事件的使用
└── rtos_timer_8 //rtos定时器的使用
小结
后续物联网的一些应用工程可以直接搭建在demo上面,毕竟linux的资源还是很足够的,用于了解协议数据还是比较方便快捷的。
Tuu
【作者】sky
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类