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

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

3天内不再提示

滴答处理程序不是调度程序

星星科技指导员 来源:嵌入式计算设计 作者:Matt Gordon 2022-06-29 09:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

实时内核通常使用定时器或类似的周期性中断源来为多任务应用程序实现延迟和其他有用的服务。尽管利用此类服务所需的代码通常只涉及对内核 API 函数的调用,但似乎周期性中断(或俗称的滴答声)已成为混淆甚至争论的主要来源。内核用户。

新内核用户之间的一个常见误解是滴答处理程序是内核的任务调度程序。换句话说,滴答中断被认为是可以使任务运行的唯一机制。现实情况是,在抢占式、基于优先级的内核中,服务滴答的代码是可能导致 CPU 控制权从一个任务传递到另一个任务的众多代码之一。在此类内核中,任何中断通常都可能导致新任务运行,如图 1 所示,涉及 UART 中断。此外,任务本身可能有多种方式来放弃 CPU 并进入挂起或等待状态。

pYYBAGK7qXuAP5XoAABWXfdoK0E756.png

当任务需要能够控制它在等待状态中花费的时间量时,滴答中断就变得必要了。例如,µC/OS-II 和 µC/OS-III 操作系统提供了一种方法来控制超时参数,这些参数指定非滴答事件的最大等待时间(例如接收 UART 字符),并通过延时函数,如 OSTimeDly()。

图 2 基于 µC/OS-II,突出显示滴答中断在实现 OSTimeDly() 中的作用。在图的左侧,一个相对高优先级的任务调用 OSTimeDly() 来产生一个 5 个滴答的延迟,导致内核在与该任务关联的数据结构中初始化一个延迟字段,并将该任务移出允许另一个任务运行的就绪状态。延迟字段被初始化为值 5,并且在调用 OSTimeDly() 之后的每个滴答中断中,该字段递减。在调用后的第五次中断时,该字段达到 0,并且内核的滴答处理程序(在 µC/OS-II 中是 ISR 的一部分,但在 µC/OS-III 中有自己的任务)使高优先级任务准备好再次运行。然后,该任务将获得 CPU 控制权,因为它的优先级超过了在第五个滴答发生时正在运行的任务的优先级。

pYYBAGK7qYGAA-l0AABYAydpSFY132.png

从技术上讲,可以编写一个没有超时和延迟函数(如 OSTimeDly())的多任务应用程序。然而,大多数多任务系统至少包含一项可以从基于滴答的服务中受益的任务。在接下来的文章中,我将考虑两个重要的滴答参数——频率和优先级——对此类系统的影响。

审核编辑:郭婷

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

    关注

    68

    文章

    11216

    浏览量

    222952
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

    121747
  • uart
    +关注

    关注

    22

    文章

    1304

    浏览量

    106116
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C++程序异常的处理机制

    1、什么是异常处理? 有经验的朋友应该知道,在正常的C和C++编程过程中难免会碰到程序不按照原本设计运行的情况。 最常见的有除法分母为零,数组越界,内存分配失效、打开相应文件失败等等。 一个程序
    发表于 12-02 07:12

    NVMe高速传输之摆脱XDMA设计28: TLP 事务处理程序的执行流程

    最小桥设备模型的每个端口的输入端对接一个 TLP事务处理程序, 该程序负责将接收到的 TLP 事务进行解析和路由转发。
    的头像 发表于 09-23 09:13 875次阅读
    NVMe高速传输之摆脱XDMA设计28: TLP 事务<b class='flag-5'>处理</b><b class='flag-5'>程序</b>的执行流程

    博图SCL程序中的隐式转换

    最近看到一个程序,博图定时器的in脚中写了一个等式,且是一个等号,不是两个等号,有点小疑惑,就做了个测试,结果是博图确实有点灵活。
    的头像 发表于 09-08 11:46 499次阅读
    博图SCL<b class='flag-5'>程序</b>中的隐式转换

    【老法师】多核异构处理器中M核程序的启动、编写和仿真

    有很多研究单片机的小伙伴在面对多核异构处理器时,可能会对多核的启动流程感到困惑——因为不熟悉GCC编程和GDB调试,所以也无法确定多核异构处理器的程序是否能像单片机那样方便地编写和仿真。本篇
    的头像 发表于 08-13 09:05 3649次阅读
    【老法师】多核异构<b class='flag-5'>处理</b>器中M核<b class='flag-5'>程序</b>的启动、编写和仿真

    FANUC程序传输软件的使用

    FANUC程序传输软件的使用
    发表于 06-04 16:23 0次下载

    PLC水处理程序远程上下载如何实现?有什么优势?

    在现代化的水处理厂中,PLC(可编程逻辑控制器)广泛应用于自动化控制系统,精准调控水处理的各个环节,保障水质达标与生产稳定。然而,传统的PLC运维管理方式,尤其是程序上下载工作,常面临诸多棘手难题
    的头像 发表于 04-17 16:19 355次阅读
    PLC水<b class='flag-5'>处理</b><b class='flag-5'>程序</b>远程上下载如何实现?有什么优势?

    FPGA Verilog HDL语法之编译预处理

    Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是
    的头像 发表于 03-27 13:30 1088次阅读
    FPGA Verilog HDL语法之编译预<b class='flag-5'>处理</b>

    基于HPM_SDK_ENV开发应用程序的升级处理

    基于HPM_SDK_ENV开发应用程序的方式HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境,其包含HPM_SDK,工具链,依赖工具(cmake,ninja,openocd等
    的头像 发表于 02-08 13:38 1439次阅读
    基于HPM_SDK_ENV开发应用<b class='flag-5'>程序</b>的升级<b class='flag-5'>处理</b>

    EE-200:ADSP-TS20x TigerSHARC处理器引导加载程序内核操作

    电子发烧友网站提供《EE-200:ADSP-TS20x TigerSHARC处理器引导加载程序内核操作.pdf》资料免费下载
    发表于 01-15 16:16 0次下载
    EE-200:ADSP-TS20x TigerSHARC<b class='flag-5'>处理</b>器引导加载<b class='flag-5'>程序</b>内核操作

    EE-174:ADSP-TS101S TigerSHARC处理器引导加载程序内核操作

    电子发烧友网站提供《EE-174:ADSP-TS101S TigerSHARC处理器引导加载程序内核操作.pdf》资料免费下载
    发表于 01-15 15:35 0次下载
    EE-174:ADSP-TS101S TigerSHARC<b class='flag-5'>处理</b>器引导加载<b class='flag-5'>程序</b>内核操作

    EE-315:更改Blackfin处理器以太网驱动程序中的PHY

    电子发烧友网站提供《EE-315:更改Blackfin处理器以太网驱动程序中的PHY.pdf》资料免费下载
    发表于 01-07 14:15 0次下载
    EE-315:更改Blackfin<b class='flag-5'>处理</b>器以太网驱动<b class='flag-5'>程序</b>中的PHY

    EE-239:在ADSP-BF533 Blackfin处理器上运行闪存程序

    电子发烧友网站提供《EE-239:在ADSP-BF533 Blackfin处理器上运行闪存程序.pdf》资料免费下载
    发表于 01-07 13:58 0次下载
    EE-239:在ADSP-BF533 Blackfin<b class='flag-5'>处理</b>器上运行闪存<b class='flag-5'>程序</b>

    EE-134:为SHARC系列编写C兼容汇编代码中断处理程序

    电子发烧友网站提供《EE-134:为SHARC系列编写C兼容汇编代码中断处理程序.pdf》资料免费下载
    发表于 01-07 13:58 0次下载
    EE-134:为SHARC系列编写C兼容汇编代码中断<b class='flag-5'>处理</b><b class='flag-5'>程序</b>

    EE-351:使用ADSP-BF592 Blackfin处理器工具实用程序ROM

    电子发烧友网站提供《EE-351:使用ADSP-BF592 Blackfin处理器工具实用程序ROM.pdf》资料免费下载
    发表于 01-05 09:09 0次下载
    EE-351:使用ADSP-BF592 Blackfin<b class='flag-5'>处理</b>器工具实用<b class='flag-5'>程序</b>ROM

    深入解析Linux程序与进程

    关于某个数据集合的一次运行活动。作为系统进行资源分配和调度的基本单位,是操作系统结构的基础。 程序与进程的关系 进程的状态 基础进程状态 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写
    的头像 发表于 12-18 11:01 839次阅读
    深入解析Linux<b class='flag-5'>程序</b>与进程