目錄
- 前言
- 資源
- 說明
- 大概思路
- 實戰
- 1. 擷取源碼
- 2. 組建自己的工程
- 3. 編譯&運作
前言
主要是freertos。
為啥突然要寫這玩意的筆記?
因為工作需要,是以在空閑時間抽時間寫下,這個系列可能随時斷更,因為作者在學和在做的主要還是網絡協定棧。
特别提示:
有條件的同學們建議使用keil來線上仿真freertos,友善學習,可以直覺地看到CPU寄存器組資訊、實時棧資訊、各個任務詳細資訊、各個任務占用CPU的時間軸圖表等等。
作者因為想在公司空閑時間和在家裡空閑時間都能寫下這些筆記,是以就不用keil了,因為版權原因。
資源
- 用于FreeRTOS的Posix/Linux模拟器示範
- freertos學習官網
- 李柱明部落格:https://www.cnblogs.com/lizhuming/p/16062433.html
說明
本系列是在 posix/linux 模拟器上跑freertos;
是以本次freertos實作的接口層是使用posix标準實作。
本節環境搭建對新手不太友好,偏向理論化,但是遇到的問題都比較簡單,是以搭建環境不做細緻教程。
後面代碼分析可以比較細化。
注意:
- 不要與freertos+posix library混淆,因為兩者是相反的。
- freertos+posix library 是freertos本地的一個接口庫,是為了讓posix标準的原因程式在freertos上跑。
- 而 posix/linux 接口是為了讓freertos在posix作業系統上跑。
大概思路
編譯一個可跑的出現主要需要以下檔案:
- 核心:freertos kernel相關檔案;
- 接口:portable;
- 使用者檔案:main.c、freertos_config.h檔案;
- 編譯腳本:在linux使用GCC。
提示:
- 其實上述資料都可以在freertos官網上,下載下傳源碼,在源碼中找出。
- 其中接口檔案隻需要找到對應編譯器下的即可。
- makefile可以自己寫。
實戰
1. 擷取源碼
去官網或者github下。
注意:
如果去官網下,可能找不到
githubusercontent.com
相關的伺服器;
那可以在ipaddress.com查找,然後ping一下,能ping通就把這個IP和對應的域名寫到本地裝置的hosts檔案中固定下來。
2. 組建自己的工程
先建立兩個檔案夾:
- kernel:
- 參考指令:
mkdir kernel
- 存放freertos核心相關檔案,包括核心源碼、接口檔案等。
- 參考指令:
- user:
- 參考指令:
mkdir user
- 存放使用者檔案。
- 參考指令:
建立好檔案夾後,拉取相關檔案:
- kernel:
- 把核心的頭檔案全部拉取:FreeRTOS/Source/include
- 把核心中源檔案全部拉取(這部分可以按需拉取):FreeRTOS/Source/*.c
- 拉取對應接口檔案和記憶體管理檔案到kernel/portable下:
- GCC的Posix标準接口:FreeRTOS/Source/portable/ThirdParty/GCC/Posix/
- FreeRTOS/Source/portable/MemMang/
- user:
- 建立main.c;(記得寫上基本内容、可參考freertos提供的demo中的main.c)
- 拷貝
下的FreeRTOSConfig.hFreeRTOS/Demo/POSIX_GCC
準備好相關檔案後,準備編譯腳本。
編譯腳本的實作有很多種,按自己習慣實作。
在編譯過程中遇到問題,按提示解決即可。
最終工程大緻布局如下:

3. 編譯&運作
編譯成功
運作: