背景ide
因爲以前接觸過一些嵌入式RTOS,如Keil-RTX,uCOS-II,也曾經關注過FreeRTOS,但一直沒有機會採用FreeRTOS開發。目前FreeRTOS作爲主流RTOS,風聲正盛。做爲嵌入式開發從業人員,貌似沒有使用過FreeRTOS,競爭力指數會直線下降。最近,剛巧項目中使用了STM32f103芯片。因爲RTOS的能夠更合理、更有效地利用CPU的資源,簡化應用軟件的設計,縮短系統開發時間,更好地保證系統的實時性和可靠性。因爲對FreeRTOS好奇的傾向性,因此,本次決定採用FreeRTOS開發。網站
FreeRTOS 簡介ui
關於FreeRTOS簡介,在此再也不多說,https://www.freertos.org/網站上有豐富的說明設計
FreeRTOS 手冊熟悉3d
161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf對象
經過該手冊能夠了解blog
1)工程建立方法,隊列
2)任務管理:主要描述任務優先級調度,搶佔式或非搶佔式調度等調度模型事件
3)堆內存管理:主要分析5種堆內存管理模型,建議選擇heap_4內存
4)隊列管理
5)軟時間管理
6)中斷管理,主要是推遲中斷處理方法
7)資源管理,主要是臨界區,資源互斥訪問
8)事件組
9) 任務通知,直接任務通訊,無需中間對象,比消息隊列,事件組和信號量更快,缺點是任務建立時須要分配8字節內存
FreeRTOS 移植
方法1 :\FreeRTOSv10.0.1\FreeRTOS\Demo\ 中包含了大量的Demo,可供選擇。
方法2 :若是感興趣,能夠先構建符合芯片的工程,而後再導入FreeRTOS,這樣更容易理解,方法大體以下
第一步:添加下圖所示文件
第二步:添加 FreeRTOSConfig.h【建議參考方法1中對象工程的FreeRTOSConfig.h】文件,並添加
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
小結
經過一週的瞭解熟悉,基本掌握FreeRTOS的各類API使用。至於方法方面主要仍是看手冊, 161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf通俗易懂的描述了各類機制的使用。從功能的角度看,與其餘RTOS大體相同。RTOS內部實現細節應該各有不一樣。之後抽時間分析一下,再繼續更新。