欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > FreeRTOS

FreeRTOS

2025/5/1 16:03:31 来源:https://blog.csdn.net/qq_42959171/article/details/147507168  浏览:    关键词: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. 添加应用程序:验证移植是否成功;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词