FreeRTOS系列|FreeRTOS简介
FreeRTOS简介
1. RTOS简介
RTOS全称为 Real Time Operation System,即实时操作系统。RTOS强调的是实时性,又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作,不允许超时;而软实时里对处理过程超时的要求则没有很严格。RTOS的核心就是任务调度
RTOS的多个工作流如下图示:
RTOS工作原理如下图示:
RTOS通用组件如下图示:
RTOS的特点:
- 更好的事件实时处理机制
- 更高效利用CPU资源
- 通用的任务管理框架
2. FreeRTOS介绍
FreeRTOS是RTOS的一种,尺寸非常小,可运行于微控制器上。微控制器是尺寸小,资源受限的处理器,它在单个芯片上包含了处理器本身、用于保存要执行的程序的只读存储器(ROM或Flash)、所执行程序需要的随机存取存储器(RAM),一般情况下程序直接从只读存储器执行
微控制器用于深度嵌入式应用,一般都有非常明确、专门的工作。尺寸的限制以及专用的终端应用等性质,令其很少能使用完整的RTOS实现。因此FreeRTOS仅为内核提供了实时调度功能、任务间通信、时序和同步原语。更准确地说,它是一个实时内核,或实时执行器。命令控制台界面、网络栈等额外的功能可作为附加组件
在实际使用FreeRTOS的时候我们需要根据自已的需求来配置FreeRTOS,不同架构的MCU在使用的时候配置也不同,下面介绍FreeRTOS配置文件详解
- 内核配置一
参数名称 | 参数说明 |
---|---|
USE_PREEMPTION | 定义调度器模式 |
CPU_CLOCK_HZ | 定义CPU的主频 |
TICK_RATE_HZ | 定义系统时钟节拍数 |
MAX_PRIORITIES | 定义可供用户使用的最大优先级数 |
MINIMAL_STACK_SIZE | 定义空闲任务的栈空间大小 |
MAX_TASK_NAME_LEN | 定义任务名最大的字符数 |
USE_16_BIT_TICKS | 系统时钟节拍计数使用TickType_t数据类型定义 |
IDLE_SHOULD_YIELD | 用于使能与空闲任务同优先级的任务 |
- 内核配置二
参数名称 | 参数说明 |
---|---|
USE_MUTEXES | 用于使能互斥锁 |
USE_RECURSIVE_MUTEXES | 用于使能递归互斥锁 |
USE_COUNTING_SEMAPHORES | 用于使能计数信号量 |
QUEUE_REGISTRY_SIZE | 用于设置可以注册的信号量和消息队列个数 |
USE_APPLICATION_TASK_TAG | 用于使能任务标记 |
ENABLE_BACKWARD_COMPATIBILITY | 用于使能新版本对老版本的兼容特性 |
USE_PORT_OPTIMISED_TASK_SELECTION | 用于优化优先级列表中药执行的最高优先级任务的算法 |
USE_TICKLESS_IDLE | 用于使能tickless低功耗模式 |
USE_TASK_NOTIFICATIONS | 使能任务间直接的消息传递,包括信号量、事件标志组和消息邮箱 |
- 内存管理
参数名称 | 参数说明 |
---|---|
MEMORY_ALLOCATION | 定义内存分配模式 |
TOTAL_HEAP_SIZE | 定义动态内存分配总长度 |
HEAP_NUMBER | 定义动态内存管理方式 |
- 任务运行信息获取配置
参数名称 | 参数说明 |
---|---|
GENERATE_RUN_TIME_STATS | 用于使能任务运行状态参数统计 |
USE_TRACE_FACILITY | 使能此配置将添加额外的结构体成员和函数 |
USE_STATS_FORMATTING_FUNCTIONS | 用户配置宏定义 configUSE_TRACE_FACILITY 和configUSE_STATS_FORMATTING_FUNCTIONS都为 1 的时候,将使能函数 vTaskList() 和 vTaskGetRunTimeStats(),如果两者中任何一个为 0,那么这两个函数都将被禁能 |
- 软件定时器
参数名称 | 参数说明 |
---|---|
USE_TIMERS | 用于使能软件定时器 |
- 中断优先级
参数名称 | 参数说明 |
---|---|
LIBRARY_LOWEST_INTERRUPT_PRIORITY | 用于配置 FreeRTOS 用到的 SysTick 中断和 PendSV 中断的优先级 |
LIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY | 定义了受 FreeRTOS 管理的最高优先级中断 |
- 函数Include配置
参数名称 | 参数说明 |
---|---|
vTaskPrioritySet | 设置任务优先级 |
uxTaskPriorityGet | 获取任务优先级 |
vTaskDelete | 任务删除 |
vTaskCleanUpResources | 清理任务资源 |
vTaskSuspend | 任务挂起 |
vTaskDelayUntil | 任务绝对延时 |
vTaskDelay | 任务延时 |
xTaskGetSchedulerState | 获取调度器状态 |
xTaskResumeFromISR | 在中断中恢复任务 |
xQueueGetMutexHolder | 获取互斥锁持有者 |
pcTaskGetTaskName | 获取任务名称 |
uxTaskGetStackHighWaterMark | 获取任务堆栈信息 |
xTaskGetCurrentTaskHandle | 获取当前任务句柄 |
eTaskGetState | 获取任务状态 |
xEventGroupSetBitFromISR | 在中断中设置事件标志组 |
xTimerPendFunctionCall | 定时器挂起后回调函数 |
xTaskAbortDelay | 终止任务延时 |
xTaskGetHandle | 获取任务句柄 |
FreeRTOS系列|FreeRTOS简介相关推荐
- FreeRTOS系列第2篇---FreeRTOS入门指南
FreeRTOS可以被移植到很多不同架构的处理器和编译器.每一个RTOS移植都附带一个已经配置好的演示例程,可以方便快速启动开发.更好的是,每个演示例程都附带一个说明网页,提供如何定位RTOS演示工程 ...
- (第16-17讲)STM32F4单片机,FreeRTOS中断管理简介【视频笔记、代码讲解】【正点原子】【原创】
文章目录 视频笔记 实验现象 代码讲解(个人注释) 一个弹幕的问题? PendSV和Systick中断优先级最低? demo函数 定时器函数 视频笔记 老生常谈 老生常谈 老生常谈,FreeRTOS只 ...
- beeline安装_Hive 系列 之 简介与安装
下面是系列文章的目录 (1)hive系列之简介,安装,beeline和hiveserver2 (2)hive系列之基本操作 (3)hive系列之udf (4)hive系列之二级分区和动态分区 (5)h ...
- FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)
源:FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)
- 【Proteus+51单片机学习笔记】-51/52系列单片机简介
0 摘要 本文主要对STC89C52系列单片机进行了简单介绍,对其主要电路进行整理. 1 STC89C52系列单片机简介 STC89C52单片机指令完全兼容传统8051单片机,包括12T和6T两种模式 ...
- UUCP系列程序简介
UUCP系列程序简介 1.UUCP系统概述 UUCP系统是一组程序,完成文件传输,执行系统之间的命令,维护系统使用情况的统计,保护安全.UUCP是UNIX系统最广泛使用的网络实用系统,这其中在两个原因 ...
- 目标检测YOLO系列------YOLO简介
目标检测YOLO系列------YOLO简介 1.为什么会出现YOLO算法 2.YOLO算法会逐渐成为目标检测的主流吗 YOLO以及各种变体已经广泛应用于目标检测算法所涉及到的方方面面,为了梳 ...
- Lattice系列FPGA入门相关1(Lattice系列FPGA简介)
需求说明:Lattice系统FPGA入门 内容 :Lattice系列FPGA简介 来自 :时间的诗 1.为什么Lattice在进入FPGA市场的第一年就能取得这么好的成绩? 我 ...
- 第三讲 i.MX系列芯片简介
第三讲 i.MX系列芯片简介 文章目录 第三讲 i.MX系列芯片简介 一. i.MX 系列处理器 芯片选型 i.MX 6ULL 总览 i.MX 6ULL 特性 i.MX 6ULL 框图 注意 二. A ...
最新文章
- 华为鸿蒙去哪里更新,华为鸿蒙OS正式尝鲜版名单更新,升级?还是不升级?
- Nginx的配置文件
- 设计模式之抽象工厂模式学习笔记
- 使用Go语言访问JSON数据(gojsonq)
- 上市后首份年报亮眼,快手天花板在哪?
- vue 点击倒计时 ajax 封装
- 矩阵指数 matlab,矩阵指数
- MATLAB Simulink Example
- MathWorks 中国
- redis概念、做什么及其应用场景
- matlab求傅里叶级数展开式_明明学过积分和三角函数就能秒理解傅里叶变换.........
- Caddy – 方便够用的 HTTPS server 新手教程
- mysql数据库需求分析工具_一份全面的“数据库设计需求分析”是怎样的?
- css画三角形以及各种图形
- ssh框架的构成分析和代码构架小结 .
- 孤城内,秋风秋雨抛荒了谁的一怀若水情思?
- java框架技术路线 2019.10.3
- 工业革命4.0是光和算的革命,时代呼唤硬科技!
- 【仿真】后仿真中的notifier是奏啥滴!
- Cylinder Candy(zoj 3866 旋转体体积和表面积)
- Redis的Java客户端
- H5视频播放器--西瓜视频播放器