μC/OS-II的任务切换机理及中断调度优化

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

文章讲了UCOS最核心的内容,可以说基本上是全部,这对于我们理解UCOS的工作原理很有意义,希望搞这方面的人可以消化消化,虽然内容有点老了,但是是很基础的东西,对于做更高层次的开发非常有好处!

 

引 言:在嵌入式操作系统领域,由Jean J. Labrosse开发的μC/OS,由于开放源代码和强大而稳定的功能,曾经一度在嵌入式系统领域引起强烈反响。而其本人也早已成为了嵌入式系统会议(美国)的顾问委员会的成员。

    不管是对于初学者,还是有经验的工程师,μC/OS开放源代码的方式使其不但知其然,还知其所以然。通过对于系统内部结构的深入了解,能更加方便地进行开 发和调试;并且在这种条件下,完全可以按照设计要求进行合理的裁减、扩充、配置和移植。通常,购买RTOS往往需要一大笔资金,使得一般的学习者望而却 步;而μC/OS对于学校研究完全免费,只有在应用于盈利项目时才需要支付少量的版权费,特别适合一般使用者的学习、研究和开发。自1992第1版问世以 来,已有成千上万的开发者把它成功地应用于各种系统,安全性和稳定性已经得到认证,现已经通过美国FAA认证。 

1 μC/OS-II的几大组成部分

    μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。

  核心部分(OSCore.c) 是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能够维持系统基本工作的部分都在这里。

  任务处理部分(OSTask.c) 任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。

  时钟部分(OSTime.c) μC/OS-II中的最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。

  任务同步和通信部分为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。

  与CPU的接口部分是指μC/OS-II针对所使用的CPU的移植部分。由于μC/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还 是需要根据具体CPU的具体内容和要求作相应的移植。这部分内容由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、 任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。

2 对于MSP430的中断处理

2.1 函数调用和中断调用的操作

  MSP430最常使用的C编译器应该就是IAR Embedd-ed WorkBench。对于这一编译器来说,通过分析和研究,发现它有以下规律。

(1)函数调用

  如果是函数级调用,编译器会在函数调用时先把当前函数PC压栈,然后调用函数,PC值改变。如果被调用的函数带有参数,那么,编译器按照以下的规则进行。

  最左边的两个参数如果不是struct(结构体)或者union(联合体),将被赋值到寄存器,否则将被压栈。函数剩下的参数都将被压栈。根据最左边 的那两个参数的类型,分别赋值给R12(对于32位类型赋值给R12:

内核调度器原理与分析 介绍 内核中针对task_struct进程描述符专门安排有序执行的模块叫调度调度器作用: 1 cpu中央处理器专门管理时间 2 通过进程优先级为依据专门分配时间 当在运行的过程中,某个进程的时间片到了或者缺少某个条件就会发生上下文切换,cpu重新切换一个进程。 调度类 1 调度类结构体sched_class: 内核中提供了一个专门用来调度的进程的类接口sched_class 在内核中,系统中有多个调度类,按调度优先级连接成链表。 kernel/sched/sched.h文件中 struct sched_ 阅读详情

相关推荐

μC/OS-II 源码阅读笔记 —— 内核深度剖析

该笔记并非源代码的详细讲解,亦非μC/OS-II的使用说明,而是汇总了阅读源码过程中产生的疑问及解答,进而从中归纳总结出μC/OS-II系统的内在机理,对于想从本质和源头探索操作系统的程序猿或许有点参考帮助,或许能够启发更优质的使用μC/OS-II的方法,甚者若能就实际情况来优化μC/OS-II的内核以提高软件的质量则更当令此文欣慰了。

wangshixu0633的专栏 969

uC-OS-II任务切换机理中断调度优化

uC-OS-II任务切换机理中断调度优化

μC/OS-II---内核:任务调度(oc_core.c)

【代码】μC/OS-II---内核:任务调度

weixin_45880844的博客 259

ewewewew ew e

ewwewewew ewewewewwewe

UCOSII实时操作系统任务调度深入解析

本文还有配套的精品资源,点击获取 简介:μC/OS-II(UCOSII)是一个广泛应用于嵌入式系统的实时操作系统,其核心功能之一为任务调度。本文详细介绍了UCOSII任务调度机制,包括任务与优先级的关系、任务状态转换、任务调度原理、任务创建与切换机制、优先级反转问题及解决方案、信号量与互斥量的应用、时间片轮转配置以及中断服务程序对任务调度的影响。此外,还包括了任务管理功能...

weixin_35756637的博客 1580

uCO/OS-II中断

文章目录中断 中断 中断是指任务在运行过程中应外部或者内部异步事件的请求中止当前任务转而执行异步事件的过程。应中断请求而运行的程序叫做中断服务子程序(ISR) ...

williamgavin的博客 1209

μC/OS中的中断处理

μC/OS中,中断服务子程序要用汇编语言来写。然而,如果用户使用的C语言编译器支持在线汇编语言的话,用户可以直接将中断服务子程序代码放在C语言的程序文件中。中断服务子程序的示意码如程序清单L3.15所示。 程序清单 L3.15 μC/OS-II中的中断服务子程序. 用户中断服务子程序:

FunkyFrog821951259的博客 1304

uC/OS-II任务切换机理中断调度优化

<br />摘要:μC/OS-II是一种适用于嵌入式系统的抢占式实时多任务操作系统,开放源代码,便于学习和使用。介绍μC/OS-II任务级和中断级的任务切换原理,以及这一操作系统基于嵌入式系统的对于中断的处理;相对于内存资源较少的单片机,着重讨论一种优化的实用堆栈格式和切换形式,以提高资源的利用率;结合MSP430单片机,做具体的分析。   关键词:实时多任务操作系统 μC/OS MSP430 中断 堆栈引 言  在嵌入式操作系统领域,由Jean J. Labrosse开发的μC/OS,由于开放源代码和强

zhw888888的专栏 828

实时操作系统调度机制

从合作式调度的确定之美到抢占式调度的敏捷之道,再到时间片调度的平衡之术,嵌入式调度技术的发展史正是一部人类追求掌控与效率的微观史诗。μC/OS的成功启示我们,优秀的技术产品既要追求工程实现的完美,更要坚守对开发者社区的真诚。在AIoT时代浪潮中,唯有深入理解调度本质,方能在确定性与灵活性之间找到最佳平衡点。

波风水门的博客 898

嵌入式C++安全开发避坑指南,覆盖ARM Cortex-R/A系列、VxWorks与AUTOSAR OS的12类时序敏感漏洞

聚焦工业C++安全开发,系统梳理12类时序敏感漏洞的识别与防护方法。覆盖ARM Cortex-R/A芯片、VxWorks实时系统及AUTOSAR OS环境,提供可落地的静态分析、内存保护与中断响应优化方案。提升嵌入式系统抗干扰能力与功能安全等级,值得收藏。

VarPerch的博客 207

RivieraWaves 笔记.pdf

RivieraWaves 笔记.pdf 大概《RW-BT-KERNEL-SW-FS》的中文翻译版本

3小时定位卫星终端“幽灵电流”源:基于J-Link RTT + C语言静态分析工具链(Cppcheck+PowerScope插件)的7步速查法

3小时定位低轨卫星终端“幽灵电流”根源,基于J-Link RTT与C语言静态分析工具链(Cppcheck+PowerScope插件)实现精准功耗优化。适用于资源受限的嵌入式低轨卫星终端开发,7步速查法显著提升能效比与定位可靠性,值得收藏。

ProceShoal的博客 248

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01

算法设计

weixin_49199313的博客 1434

【信息科学与工程学】【数据中心】 第十九篇 MFU的优化提升方法03

等级模块类型子模块子子模块功能描述MFU影响因子优化优先级L0​算术逻辑单元(ALU)标量ALU整数ALU标量整数运算α_int = 0.1-0.3中浮点ALU标量浮点运算α_fp_scalar = 0.2-0.4中向量处理单元(VPU)SIMD单元128-bit SIMD短向量运算β_SIMD128 = 0.3-0.6高256-bit SIMD中向量运算β_SIMD256 = 0.4-0.7高512-bit SIMD长向量运算β_SIMD512 = 0.5-0.8极高矩阵处理单元(MPU)Tensor C

weixin_49199313的博客 962

【信息科学与工程学】【通信工程】【安全领域】第二百零三篇 防火墙设备中的学科知识03

① 同步延迟方程:Tsync​=Ttx​+Tprop​+Tproc​,传输时间Ttx​=BS​,S=1KB,B=10Gbps→0.8μs,传播时间Tprop​=cD​,D=100km→333μs,处理时间Tproc​=5μs→总延迟≈339μs。② 失效率浴盆曲线:λ(t)=⎩⎨⎧​λ0​t−αλ0​λ0​tβ​t<T1​T1​<t<T2​t>T2​​,α=0.5,β=2,T1=1000h,T2=10^5h。③ 队列延迟方程(M/M/1):W=μ(1−ρ)ρ​,ρ=λ/μ,λ到达率,μ服务率。

weixin_49199313的博客 136

【信息科学与工程学】计算机科学与自动化——第十八篇 存储系统设计 10 存储器/存储软件/存储芯片/存储盘/存储系统/存储网络01

③ MTJ电阻 → 界面:TMR=(R_AP-R_P)/R_P = 2P₁P₂/(1-P₁P₂) (Julliere模型);③ 访问延迟模型 → 统计:平均访问延迟 = p_hot * t_dram + (1-p_hot) * t_nvm + t_migration_overhead;:① 储能电容计算 → 数学物理:所需能量 E = P * t_backup,电容 C = 2E / (V_start² - V_end²);:① B-tree平衡 → 代数:树高 h = log_m(N),m为扇出;

weixin_49199313的博客 182

【信息科学与工程学】【物理/化学科学和工程技术】知识体系073——电学基础04

​。

weixin_49199313的博客 2477

【信息科学与工程学】【数据中心】第三十二篇 云数据中心的计算/存储/网络的核心挑战01

状态方程: SOCk+1​=SOCk​−Qn​ik​Δt​;: 三相电流变换到αβ坐标系: iα​=32​​(ia​−21​ib​−21​ic​), iβ​=32​​(23​​ib​−23​​ic​). 计算瞬时有功功率p和无功功率q,经低通滤波器分离直流分量,反变换得基波电流,差值即为谐波指令。: 节点i的信念 bi​(xi​)=ϕi​(xi​)∏j∈N(i)​mji​(xi​), 消息 mij​(xj​)=∑xi​​ϕi​(xi​)ψij​(xi​,xj​)∏k∈N(i)\j​mki​(xi​).

weixin_49199313的博客 139
上一篇: μC/OS-Ⅱ内核调度分析
下一篇: UC/OS II任务管理
seven-soft
博客等级 码龄14年 604粉丝 979原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值