启闭机厂家
免费服务热线

Free service

hotline

010-00000000
启闭机厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

μCOSⅡ就绪表算法在ARM架构上的改动 软件编程OS 免费猫

发布时间:2020-02-17 14:17:43 阅读: 来源:启闭机厂家

μC/OS-Ⅱ就绪表算法在ARM架构上的改动 - 软件编程/OS - 电子工程网

μc/Os-Ⅱ的就绪表设置、清除、查找算法,是高效的、跨平台的程序。它使用了两个查找数组OSMapTbl[8]和 OSUnMapTbl[256],以提高查找就绪表的速度,尽快获取就绪任务的最高优先级。

Cortex-M3是ARM公司较新的一种架构版本,主要应用在单片机领域。基于它生产的32位芯片日益增多;cortex-M3只支持Thumb-2指令集,在效能和代码密度间能取得更佳的表现。

1 在ARM上改动算法的因由利弊

由于就绪表操作是在关中断状态下运行的,其执行影响到系统的中断响应时间,因此就绪表操作算法的效率是衡量实时操作系统优劣的基准之一。

在Cortex-M3所用的指令集中,一些指令功能不可小觑,如前导零计数clz、字内位反转rbit、位清除bic。其中的clz和bic为 μc/Os就绪表的高优先级获取算法指出了另一条道路。

(1)改动后的优势

①节省存储空间。不再使用查找数组OSMapTbl[8]和OSUnMapTbl[256]。设立这两个数组的目的,是为了提高查找就绪表的效率。

②提升查找效率。clz是单周期指令,使用带移位的加法指令,大幅缩短运算时间。

③增加了μc/Os-Ⅱ支持的任务数量,从64提升到了1 024(2.84版支持的任务数量已经到了256,不过效率有所下降)。

(2)存在的不足

①Realview MDK(这里使用的是3.20版及其指令模拟器)尚不支持在C语言程序中使用Thumb-2指令内联汇编。使用内嵌汇编函数时,函数的调用(跳转返回)降低了执行效率。

②C语言对clz指令的支持尚有不足,故新算法跨平台性差。但鉴于ARM芯片应用广泛,指令又被ARM9之后的芯片广泛兼容,所以应用空间还算广阔。

2 μc/Os-Ⅱ就绪表算法介绍与具体改动

μc/Os-Ⅱ就绪表是一个数组,数组元素一位的值(1或0)对应了一个任务就绪与否,该位在数组中的位置表示任务的优先级。当需要调度已就绪的最高优先级任务运行时,就在就绪表中查找该任务。

2.1μc/Os-Ⅱ就绪表算法简介

一种解决方法是,对数组各项依次判断是否为0:若 O,进入该项查找最小权的置1位位置;若=0,优先级加一个基数,查下一项,直至查到该优先级。

电饭煲美食

松原旗袍

菠萝蜜的种植方法