当前位置: 首页 > news >正文

FreeRTOS

FreeRTOS任务调度的三种方式:

抢占式调度

针对优先级不同的任务

时间片调度
  • 针对优先级相同的任务;

  • FreeRTOS中的一个时间片就等于SysTick(滴答定时器)中断周期(1ms);

协程式调度

后续将不再支持。

[!NOTE]

  1. 同等优先级任务,轮流执行;时间片流转;
  2. 一个时间片大小,取决于滴答定时器中断周期;
  3. 没有用完的时间片将不会再使用,会直接进入下个任务;下次执行该任务时还是按照一个时间片的时钟节拍运行;
四种任务状态
  1. 运行态:只能从就绪态进入该状态;
  2. 就绪态
  3. 阻塞态
  4. 挂起态:类似暂停,调用函数vTaskSuspend()进入挂起状态,需要调用解挂函数vTaskResume()才可以进入就绪状态;

[!NOTE]

  1. 仅就绪态可转变为运行态;
  2. 其他状态的任务想运行,就必须先转变为就绪态;
  3. FreeRTOS的四中状态中,除了运行态,其他三种任务状态的任务都有其对应的任务状态列表(链表);
任务状态列表
  1. 就绪列表:pxReadyTaskLists[x],其中x代表任务优先级数值;只有任务先挂载到就绪列表,任务才能进入到运行态;
  2. 阻塞列表:pxDelayedTaskList
  3. 挂起列表:xSuspendTaskList

FreeRTOS 移植

源码获取
  • 官网
  • 第三方开发板厂商
源码
  • include:FreeRTOS的头文件
  • portable:FreeRTOS的移植文件
  • croutine.c:协程相关文件按
  • event_groups.c:事件相关文件
  • list.c:列表相关文件
  • queue.c:队列相关文件
  • stream_buffer.c:流式缓冲区相关文件
  • task.c:任务相关文件
  • timers.c:软件定时器相关文件
portable文件夹

FreeRTOS操作系统归根到底是一个软件层面的东西,那FreeRTOS是如何跟硬件联系在一起的呢?portable文件里面的东西就是连接桥梁。

由于使用MDK开发(stm32),因此这里重点介绍其中的部分移植文件:

  • Keil:指向RVDS文件夹
  • RVDS:不同内核芯片的移植文件
  • MemMang:内存管理文件
移植
  • 移植准备:FreeRTOS源码

  • 基础工程:

  • 移植步骤:

  1. 添加FreeRTOS源码:将FreeRTOS源码添加至基础工程、头文件路径等;
  2. FreeRTOSConfig.h:添加FreeRTOSConfig.h配置文件;
  3. 修改SYSTEM文件:修改SYSTEM文件中的sys.cdelay.cusart.c
  4. 修改中断相关文件:修改Systick中断、SVC中断、PendSV中断;
  5. 添加应用程序:验证移植是否成功;
http://www.xdnf.cn/news/140995.html

相关文章:

  • 斗鱼娱乐电玩平台源码搭建实录
  • 短视频矩阵系统可视化剪辑功能开发,支持OEM
  • QT 连接数据库操作(15)
  • Pandas 数据导出:如何将 DataFrame 追加到 Excel 的不同工作表
  • 银发科技:AI健康小屋如何破解老龄化困局
  • MYSQL之数据类型
  • 【MySQL】3分钟解决MySQL深度分页问题
  • git 命令集
  • 【Web应用服务器_Tomcat】一、Tomcat基础与核心功能详解
  • 如何配置Spark
  • Spring-Framework源码环境搭建
  • 7.10 GitHub Sentinel CLI开发实战:Python构建企业级监控工具的5大核心技巧
  • JMeter添加HTTP请求默认值元件的作用详解
  • 百度打响第一枪!通用超级智能体时代,真的来了
  • 常用第三方库:flutter_boost混合开发
  • Android Kotlin 依赖注入全解:Koin appModule 配置与多 ViewModel 数据共享实战指南
  • 解决视频处理中的 HEVC 解码错误:Could not find ref with POC xxx【已解决】
  • 创建型设计模式之:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式
  • 【QQMusic项目复习笔记——音乐管理模块详解】第四章
  • 1.10软考系统架构设计师:优秀架构设计师 - 练习题附答案及超详细解析
  • 时序数据库IoTDB在航空航天领域的解决方案
  • BiliNote:开源的AI视频笔记生成工具,让知识提取与分享更高效——跨平台自动生成结构化笔记,实现从视频到Markdown的智能转化
  • PT report_timing详解
  • 关于使用git init --bare 裸仓库的使用
  • 3.3 Spring Boot文件上传
  • 基于DrissionPage的表情包爬虫实现与解析(含源码)
  • python中的logging库详细解析
  • VsCode如何使用默认程序打开word Excel pdf等文件
  • 光谱相机如何提升目标检测与识别精度
  • [4A/OP]