0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于RTOS内核的滴答处理程序优先级设置

星星科技指导员 来源:嵌入式计算设计 作者:Matt Gordon 2022-06-29 09:12 次阅读

在您确定系统中滴答处理的优先级之前,重要的是要注意与滴答相关的延迟,正如我上一篇文章所指出的,可能并不总是在您的系统中实现周期性行为的最佳方式。您可能希望避免在某些任务中依赖滴答作响的一个原因是延迟往往会因调用而波动。如果您的系统任务之一重复调用 OSTimeDly() 以延迟 5 个滴答声,并且您的系统的滴答声周期为 1 毫秒,则该任务不会始终保持等待状态正好 5 毫秒。在某些情况下,它可能会经历接近 4 毫秒的延迟,而在其他情况下,它可能会延迟 6 毫秒或更长时间。

在许多系统中,这种波动或抖动的原因之一是多个任务使用延迟函数。如图 1 所示,如果三个任务的延迟周期都在同一个内核节拍上到期,那么只有那些任务中最高优先级的任务会在节拍处理程序之后立即运行。随着时间的推移,较低优先级的任务将在其延迟中经历更多的抖动,因为总是存在它们无法在将它们移动到就绪状态的滴答声之后立即运行的可能性。

poYBAGK7py-AFj_OAABIhj-exLk398.png

当然,滴答处理程序优先级的可变性是延迟波动的另一个潜在来源。在 µC/OS-III 的例子中,它预留了一个系统任务来处理滴答中断,如果这个任务被赋予了一个相对较低的优先级并且在一个高优先级任务运行时发生了一个滴答,那么内核将不会被能够处理滴答并执行任何相关的调度,直到 CPU 被高优先级任务放弃,如图 2 所示。在完全在 ISR 中处理滴答的 µC/OS-II 中,如果这ISR 的优先级相对较低,并且在执行更重要的 ISR 期间发生了滴答声。

pYYBAGK7pzWATWhrAABc9MPfz7U548.png

在设置滴答优先级时,您需要牢记应用程序对波动延迟的容忍度。如果您的代码可以适应几毫秒的波动——也许是因为您将使用滴答延迟仅用于轮询用户 I/O——那么您可以选择优先级相对较低的滴答。另一方面,如果您的任务需要相当一致的延迟,那么您应该采用高优先级,并且您还应该采取措施限制使用延迟函数的任务数量。

RTOS 内核用户在配置滴答优先级和频率方面可能具有的灵活性肯定会给刚接触内核的开发人员带来一些困难。然而,通过设置刻度所涉及的权衡信息,这种灵活性成为定制多任务系统以满足各种应用程序需求的宝贵手段。我已尝试在本系列博客中提供滴答使用和配置所需的一些关键信息。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1391

    浏览量

    40589
  • RTOS
    +关注

    关注

    23

    文章

    826

    浏览量

    120113
收藏 人收藏

    相关推荐

    配电柜—断电危机?配电柜故障排查优先级指南

    在排查配电柜故障过程中,合理安排排查优先级至关重要。下面聊一下如何科学合理安排配电柜故障排查优先级顺序。
    的头像 发表于 03-06 18:55 59次阅读
    配电柜—断电危机?配电柜故障排查<b class='flag-5'>优先级</b>指南

    freertos中断优先级在哪设置

    FreeRTOS是一个流行的实时操作系统,它广泛应用于嵌入式系统开发。在FreeRTOS中,中断优先级是一个重要的概念,因为它决定了中断处理的顺序和响应时间。 1. 理解中断优先级 在讨论如何
    的头像 发表于 09-02 14:17 896次阅读

    APS智能优化排产软件的优先级应用

    资源、订单需求和约束条件,自动计算出最优的生产计划。在这个过程中,订单排产的优先规则起着至关重要的作用。1.交期优先级交期优先级是订单排产中最基本的优先规则。根据
    的头像 发表于 06-26 17:43 504次阅读
    APS智能优化排产软件的<b class='flag-5'>优先级</b>应用

    ESP32S2如何设置中断优先级

    ESP32S2有六中断, 如何设置中断优先级? 比如在GPIO例程里 ,这种中断优先级是如何设置的呢? 中断寄存器列表里 ,只有简称,哪里
    发表于 06-21 07:59

    请问有什么方法降低WIFI中断的优先级

    因为项目对时序输出要求比较严格,WIFI中断优先级比硬件定时器中断优先级要高,在定时器中断里面对GPIO管脚控制被延长执行,请问有什么方法降低WIFI中断的优先级
    发表于 06-19 07:37

    为什么不能在不同的优先级中安装相同的处理程序

    在不同的优先级中安装相同的处理程序? 我需要一个解决方案,在不同的优先级中安装相同的处理程序(I
    发表于 05-31 08:16

    如何在不同优先级安装相同的处理程序

    在不同的优先级中安装相同的处理程序? 我需要一个解决方案,在不同的优先级中安装相同的处理程序(I
    发表于 05-28 08:13

    systick的中断优先级是否应该设置为最高优先级的嵌套中断?

    最近在学习ucosii有这样一个疑问,关于stm32的systick作为ucosii的基准时钟,systick的中断优先级是否应该设置为最高优先级的嵌套中断。理由是什么?各位大侠求指教!!!
    发表于 05-16 06:44

    stm32的中断优先级分组了之后还能改分组吗?

    如标题所示,stm32的中断优先级分组了之后还能改分组吗? 比如我要使用外部中断EXIT2,3,我在配置的时候配置了优先级分组2组,然后配置了EXIT2,3,如果我下面又想开外部中断的EXIT4,5的话,我是不是必须还的要使用优先级
    发表于 05-13 08:40

    创建了两个task如果一个优先级高 一个优先级低,高优先级的那个一直在做,什么时候会调度到低优先级的呢?

    创建了两个task如果一个优先级高一个优先级低, 我看到任务的函数都是用死循环做的,那个高优先级的那个一直在做,什么时候会调度到低优先级的呢?
    发表于 05-13 07:13

    求助,关于stm32F4中断优先级0无法抢占的问题求解

    使用F407遇到一个抢占优先级的问题: 现设置优先级分组 HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);也就是15个优先级分组。
    发表于 04-23 07:26

    关于stm32cube中freertos的优先级设置问题求解

    在用stm32cube中freertos,在配置界面里设置为12任务优先级,但是在cube中配置每个任务优先级时还是只能选择7种优先级,分
    发表于 04-22 07:25

    ARM7使用IAR或者KEIL,设置中断优先级后,默认就是中断嵌套吗还是需要专门处理

    使用IAR或者KEIL,设置中断优先级后,默认就是中断嵌套吗,还是需要专门处理
    发表于 04-19 08:09

    不会RTOS,是因为你没搞懂NVIC

    管理的中断可进行中断嵌套,直译为高优先级可打断低优先级中断,然后高优先级执行完了再转回去执行低优先级中断。对于RTOS(实时操作系统)类型的
    的头像 发表于 03-31 08:09 1304次阅读
    不会<b class='flag-5'>RTOS</b>,是因为你没搞懂NVIC

    STM32F103的寄存器NVIC_IPRx抢占优先级和子优先级是怎么设置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,抢占优先级和子优先级是怎么设置的? 如果,中断分组2,抢占优先级3,子优先级3
    发表于 03-27 07:48