背景
由于之前接触过一些嵌入式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.1FreeRTOSDemo 中包含了大量的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内部实现细节应该各有不同。以后抽时间分析一下,再继续更新。