标题 | μC/OS-III实时内核中断管理的分析研究 |
范文 | 马婧 冯锋
摘要:由于实时系统内核中的一个重要指标是中断关闭总时间,因此选择实时内核操作系统五大功能中的中断管理分析研究。为解决之前所学的中断管理纯理论知识晦涩难懂的问题,通过深入分析临界段源代码的开中断、中断关闭的时间、时钟节拍以及调度器上锁,完成了μC/OS-III实时内核中断管理机制的分析研究,方便学者对中断管理机制更加轻松透彻理解。 关键词:实时内核;中断管理;μC/OS-III;临界段 中图分类号:TP316.2? ? ? ? 文献标识码:A 文章编号:1009-3044(2021)16-0010-02 开放科学(资源服务)标识码(OSID): Research on Interrupt Management Mechanism of? ? μC/OS-III Real-time Kernel MA Jing, FENG Feng* (School of Information Engineering, Ningxia University, Yinchuan 750021, China) Abstract: Because one of the most important indexes in the real-time system kernel is the total time of interrupt shutdown, we choose the interrupt management analysis among the five functions of real-time kernel operating system. In order to solve the problem that the pure theoretical knowledge of interrupt management is obscure, the interrupt management mechanism of μC/OS-III real-time kernel is analyzed and researched by deeply analyzing the open interrupt, interrupt closing time, clock beat and scheduler lock of critical segment source code, which is convenient for readers to understand the interrupt management mechanism more easily and thoroughly. Key words: Real time kernel; Interrupt management; μC/OS-III; Critical section 嵌入式實时操作系统的实时性可以很好地支持嵌入式系统的多进程,使得嵌入式应用程序的设计和开发更加容易、方便[2],并且它具有多种中断的级别,因此,它逐渐广泛地涉及和应用于各种嵌入式的领域,对于嵌入式实时操作系统的中断管理研究也因此变得更加重要。该嵌入式系统的实时性由系统的任务响应的时间和速度决定的,大部分的任务中断响应的时间由系统的中断速度决定。嵌入式实时系统中断管理技术直接影响到系统的实时响应性能。因此,有必要对系统μC/OS-III的中断响应管理进行深入的中断管理研究。学者阅读书本中关于中断管理的纯理论知识不好理解,因此通过分析源代码从根本对中断管理深入了解。 1 概述 uC/OS-III实时内核是一个完全可扩展的,可固化的和抢占式的实时任务管理内核,它可以管理的实时任务个数很多而且不受时间的限制[1]。它也是第三代实时内核,提供了我们现代实时内核所期望的所有任务管理功能,这包括实时任务资源的管理、同步、内部实时任务管理和交流等功能[3]。 uC/OS-III是根据ANSI-C标准写的。内核源文件代码的基本规范性和标准到底是什么:micriumu这是内核团队的一种基本文化。这些软件源代码严格地说被要求必须遵循他们的代码标准并且在他们的软件产品内部必须有完整的一本包括带有这个代码例子的源代码使用说明书以及它用于用来展示他们的源代码产品开发者他们是怎样用来进行这些工作的。 中断关闭的整个时间是实时多任务内核的一个重要指标。实时多任务内核将在启动关键段代码之前停止中断,并在执行关键段代码之后恢复中断。打开中断关闭的时间越长,系统等待中断的时间就越长。 中断响应的时间几乎涵盖了所有的中断响应机制需要引入的所有时间消耗,通常是从处理器检测到相应中断时的代码开始。 2 中断管理 2.1 开中断/关中断 关中断和开中断是单独享用资源最简便最快的方法。其示意性代码如下程序所示: uC/OS-III对内部的变量与数据结构进行访问时,绝大部分使用的是这种方法,以此来确保对变量与数据结构的“原子”操作。然而关中断和开中断事实上是CPU相关函数,而非系统相关函数。 将0值赋给OS_CFG_ISR_POST_DEFERRED_EN后,进入临界段之前,uC/OS-III中断会被关闭,在离开临界段之后,中断会被打开。{这里所说的CPU寄存器是指辅助CPU进行处理的多个寄存器} OS_CRITICAL_EXIT()和OS_CRITICAL_EXIT_NO_SCHED()都会调用uC/CPU的宏CPU_CRITICAL_EXIT()。CPU_CRITICAL_EXIT()调用CPU_SR_Restore()。CPU_SR_Restore( )将保存的寄存器值还原到CPU寄存器,操作系统OS_CRITICAL_ENTER()调用前就是这个状态。 2.2 测量中断关闭时间 uC/OS-III拥有测量关中断时间的功能。将CPU_CFG.H中的 CPU_CFG_TIME_MEAS_INT_DIS_EN设置为1时使用该功能。 测量在任务的每个结束之前和中断结束之后开始。测量系统的功能分别保存两个关闭中断方面的测量值,任务运行总的关中断测量时间,每个任务最后关闭中断的持续时间。因此,有了用户测量,就可以根据上一次任务的关中断时间对其进行优化。 每个任务的关中断时间在上文保存的时候被保存于 OS_TCB{我将上下文切换分成两个部分:上文保存、下文载入} 时间戳控制器通常位于TS内的CPU中。时间戳的关闭中断速率取决于来自整个CPU的速率。 中断关闭时间受处理器指令执行速度和存储器访问速度的影响。如果硬件设计在存储器访问时增加了额外的等待周期,则会导致中关闭时间显著增加。 2.3 时钟节拍 OSTimeTick()函数在时钟节拍中断中必须被调用,该函数的示意性代码如下所示: (1)来自OSTimeTickHook函数的时钟节拍中断服务程序调用。这个干预功能使得uC/OS-III移植者能够在时钟节拍触摸后执行附加操作。这些用户代码可以放置在一个介入函数中,介入函数在时钟节拍函数中最先被调用,这对于一些應用是有利的。例如在一些介入函数中读取传感器,可以保证采样时刻的均匀,避免其他代码执行时间的变化导致采样时刻的抖动;又比如可以在介入函数中更新脉宽调制寄存器,保证输出脉冲的精度。 (2)如果使用延迟发布模式,uC/OS-III读取实时信息,将函数的请求和相关参数加入中断队列中,并且延迟时间标记工作。然后向中断队列发送信号,处理与中断队列相对应的时钟输出。 (3)如果使用直接发布模式,则uC/OS-III将直接向时钟节拍任务发信号,使其能够进行延时处理和超时判断。 (4)利用uC/OS-III运行时间片轮转调度算法来判断当前分配的调度是否已经用完。 (5)uC/OS-III是可剥夺的实时内核,一个按键或类似的非定时中断也可将应用程序从低耗模式中唤醒。当然,没有时钟节拍意味着应用程序不能进行延迟或无法判断超时,这是低功耗应用程序需要面对的问题[4]。 2.4 调度器上锁 当OS_CFG_ISR_POST_DEFERRED_EN设置为1时,uC/OS-III在锁定调度器后进入临界区,并且在打开调度器前离开临界段。 当OS_CRITICAL_ENTER()函数中OSSchedLockNestingCtr值上升时,给一个调度器进行上锁。这是一个锁定变量,用于确定一个任务调度器是否被打开。如果它不为0,则调度器关闭或被锁。 OS_CRITICAL_EXIT()函数中将OSSchedLockNestingCtr值减少时,调度器的锁被打开。{如果调度器锁嵌套值一直减为0时,就会调用调度器} OSSchedLockNestingCtr所有的值随着OS_CRITICAL_EXIT_NO_SCHED()的一直递减也被更改,有所不同的是,当该值减少到0时,不能继续减少,因此不再调用该调度器。 调度器上锁模式下,这几个宏定义如下程序: 3 结语 本文介绍了μC/OS-III实时内核以及源代码的写作标准,通过分析与中断管理相关的源代码更深入的了解中断管理。解决了学者阅读书本上关于中断管理纯理论知识晦涩难懂的问题,学者通过阅读上面分析过的源代码较轻松易懂的了解中断管理机制。 参考文献: [1] Labrosse Jean J.嵌入式实时操作系统μC/OS-Ⅲ[M]. 北京:北京航空航天大学出版社,2012. [2] 秦玉华.嵌入式操作系统实时性的分析与研究[D].青岛理工大学,2010. [3] 王申良.嵌入式实时操作系统μC/OS-Ⅱ的研究[D].安徽理工大学,2011. [4] 宫辉,龚光华,黄土琛,邵贝贝.μC/OS-Ⅲ中的高效时钟节拍管理机制[J].单片机与嵌入式系统应用,2012,12(12):79-81. [5] 祥袁志,甘正良.基于μC/OS-Ⅲ的实时内核中断管理机制[J].计算机工程,2015,41(11):100-105. 【通联编辑:王力】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。