实时操作系统(FreeRTOS)¶
1. 概述¶
FreeRTOS是一款著名的开源免费实时操作系统,目前已作为CI14LP系列芯片SDK的默认OS使用。其内核轻巧,稳定,接口丰富,市场占有率较高。CI14LP系列芯片集成了FreeRTOS V10.1.0版本,相较以前的V8版本,新增了邮箱、数据缓冲流等新组件接口。
提示
更多FreeRTOS信息请查看 ☞FreeRTOS官网 获取帮助。
2. 使用说明¶
在使用FreeRTOS的API函数时,需要包含FreeRTOS.h和对应的模块头文件,在CI14LP系列芯片SDK中应添加一级路径,如下所示:
#include "FreeRTOS.h"
#include "task.h"
FreeRTOSConfig.h文件内包含OS内核的一些配置项,位于 system\FreeRTOSConfig.h,这里针对具有开发需求配置做以说明:
| 配置项 | 值 | 说明 |
|---|---|---|
| configUSE_PREEMPTION | 1 | 使用抢占式调度 |
| configCPU_CLOCK_HZ | get_ipcore_clk() | CPU时钟频率(动态获取IPCORE主频) |
| configRTC_CLOCK_HZ | get_systick_clk() | RTC时钟频率(动态获取systick时钟) |
| configTICK_RATE_HZ | 1000 | 系统节拍频率1KHz |
| configMAX_PRIORITIES | 6 | 最大优先级数(0-3共6等级,idle独占0,Tmr_svc独占3) |
| configMINIMAL_STACK_SIZE | 168 | 最小任务栈大小 |
| configMAX_TASK_NAME_LEN | 16 | 任务名最大长度 |
| configUSE_MUTEXES | 1 | 支持互斥量 |
| configUSE_COUNTING_SEMAPHORES | 1 | 支持计数信号量 |
| configUSE_TIMERS | 1 | 支持软件定时器 |
| configTIMER_TASK_PRIORITY | configMAX_PRIORITIES - 1 | 定时器任务独占最高优先级 |
| configSUPPORT_STATIC_ALLOCATION | 1 | 支持静态内存分配 |
| configSUPPORT_DYNAMIC_ALLOCATION | 1 | 支持动态内存分配 |
| configTOTAL_HEAP_SIZE | &__FREERTOSHEAP_SIZE | 堆大小(由链接脚本定义) |
| configUSE_IDLE_HOOK | 1 | 使能空闲任务钩子函数 |
| configUSE_TASK_NOTIFICATIONS | 1 | 支持任务通知 |
| configUSE_TRACE_FACILITY | 1 | 支持运行时统计 |
| configPRIO_BITS | 3 | 中断优先级位数 |
| configLIBRARY_LOWEST_INTERRUPT_PRIORITY | 0x1 | 最低中断优先级 |
| configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY | 0x6 | 可调用系统API的最高中断优先级 |
3. API 参考¶
FreeRTOS提供了丰富的API接口,主要包括:
- 任务管理:xTaskCreate、vTaskDelete、vTaskDelay、vTaskDelayUntil、vTaskSuspend、vTaskResume、uxTaskPriorityGet、vTaskPrioritySet等
- 队列:xQueueCreate、xQueueSend、xQueueReceive等
- 信号量:xSemaphoreCreateBinary、xSemaphoreCreateCounting、xSemaphoreCreateMutex、xSemaphoreTake、xSemaphoreGive等
- 事件组:xEventGroupCreate、xEventGroupSetBits、xEventGroupWaitBits等
- 软件定时器:xTimerCreate、xTimerStart、xTimerStop等
- 任务通知:xTaskNotify、xTaskNotifyWait等
- 内存管理:pvPortMalloc、vPortFree等
具体接口原型及用法请参考FreeRTOS官方文档。