移植的东西
- 任务管理(task)
任务的创建、销毁,
任务状态的切换:运行态,就绪态,阻塞态,挂起态,被中断态 - 内存管理(heap)
常用heap4,优点如下:
内存申请:采用frist fib算法,第一个足够容纳请求字节数的空闲内存块
碎片化管理:合并相邻的空闲内存块 - 队列(queue)
消息队列创建,消息队列发送,消息接受,任务之间的通讯,关键字volatile
2. 配置
board config:
1. 定时器中断服务函数:为嵌入式系统提供心跳
2. Pendsv中断服务函数:进行任务切换的相关操作,可以像普通中断一样被悬起,os利用它缓期执行
3. SVC中断服务函数: SVC异常必须立即得到响应(如果因优先级不比当前正处理的高,或是其他原因使之
无法立即响应,则上访成硬fault),SVC是用于触发一个PendSV异常来进行一个上下文切换
system config:
1. freertos配置文件: 时钟频率,调度方式(时间片,优先级),任务最大优先级,堆大小
具体文件查看:https://github.com/FreeRTOS/FreeRTOS/blob/main/FreeRTOS/Demo/CORTEX_STM32F103_Keil/FreeRTOSConfig.h#L46C34-L46C45
附:https://github.com/FreeRTOS/FreeRTOS/tree/main