跳转至

实时操作系统(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官方文档。