轉自: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