背景
由於之前接觸過一些嵌入式RTOS,如Keil-RTX,uCOS-II,也曾經關注過FreeRTOS,但一直沒有機會采用FreeRTOS開發。目前FreeRTOS做為主流RTOS,風聲正盛。作為嵌入式開發從業人員,貌似沒有使用過FreeRTOS,競爭力指數會直線降低。最近,剛巧項目中使用了STM32f103芯片。由於RTOS的可以更合理、更有效地利用CPU的資源,簡化應用軟件的設計,縮短系統開發時間,更好地保證系統的實時性和可靠性。由於對FreeRTOS好奇的傾向性,所以,本次決定采用FreeRTOS開發。
FreeRTOS 簡介
關於FreeRTOS簡介,在此不再多說,https://www.freertos.org/網站上有豐富的說明
FreeRTOS 手冊熟悉
161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf
通過該手冊可以了解
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內部實現細節應該各有不同。以后抽時間分析一下,再繼續更新。