μc/Os-Ⅱ就绪表算法在ARM架构上的改动

发布者:静默思考最新更新时间:2010-04-10 来源: 维库电子关键字:μc/Os-Ⅱ  Cortex-M3  就绪表算法 手机看文章 扫描二维码
随时随地手机看文章

  引  言

  μ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,优先级加一个基数,查下一项,直至查到该优先级。

  μc/Os-Ⅱ技高一筹,设置了一个对就绪表各项判断是否为0的变量,称之为就绪表组。就绪表组一位为0或1,对应就绪表一项的值是否为0。通过查找就绪表组最小权位的置1位位置,就确定了对应首个>0的就绪表项的下标,从而避免了循环,大幅度提高了效率。

  2.2改动方式与源码

  clz算法接受了μc/Os-Ⅱ的思路,再通过使用clz指令来进行优化。不同的是,clz是从右往左查,二进制的高权位对应高优先级,而μc/Os-Ⅱ优先级以值小为高。

  考虑到有时用不到很多任务,这时用数组作就绪表不免浪费。因此当任务总数小于32时,就用32位无符号整数变量作就绪表。注意,此时就绪表组变量OSRdyGrp被当作就绪表使用。

  常量OS_LES_TSK表示是否使用较小任务数,0表示使用最多32个任务,1表示使用最多1 024个任务。

  常量RdySt是将32位整数的最高权位置1,以便移位使用。

  2.3  C语言实现

  以下算法利用内嵌clz指令的函数编写,实现了指定优先级任务在就绪表的设置、清除,在就绪表中查找就绪任务的最高优先级。

  程序中的bx r14,有些资料上要求必须写,不过查看反汇编代码,编译程序已经给加上了。看来是编译程序已升级,会不会出错要看使用的编译器,建议还是按规范写上。由于内嵌函数调用返回耗时,查找算法未能充分发挥,需改进编译后的汇编代码以实现更高的效率,或使用汇编代码重写这部分程序。

  2.4  THUMB-2汇编指令实现

  用汇编语言写程序时的技巧:在最高优先级任务的设置、清除函数中,C语言运算符“︱=”对等汇编指令“orr”,“&=~”对等汇编指令“bic。这两条指令都可以进行预移位操作,大幅提高执行效率。可以查看反汇编源码,看C编译器是否利用了这一便利。

  在查找函数中,可以省去C语言程序中的内嵌汇编调用,减少冗余指令。示意伪代码如下:

  ldr rO,  =OsRdyGrp;加载就绪表组变量OSRdyGrp地址

  可以看出,除了数据加载指令外,查找的核心算法仅3条指令(使用<32个任务时,仅1条指令)。不过在实际设计算法的时候,还需要考虑指令流水线停顿,方能达到最佳的效果。

  2.5  μC/OS-Ⅱ2.84版相关源码介绍

  以下是翻译整理后的μC/OS-Ⅱ优先级查找算法源码(2.84版),较长的注释是添加的算法说明。

  clz最高优先级查找算法,与μC/OS-Ⅱ的新算法有所不同:返回的结果分别是8位、16位整数。这是因为8位已经不能表示>255的值;过程中clz算法更多地使用16或32位整数,以充分利用芯片性能。

  3  适用范围

  等待任务列表使用了与就绪表操作相似的过程,注意要同时更改其数据类型和算法。算法虽然是在Cortex—M3上执行的,但适用于ARM9及其以后芯片。支持ARM指令集的芯片,可以在C语言中使用内嵌汇编,不必再编写汇编查找函数。

  本文所叙述的算法适用于下述两种情况。

  ①使用μC/OS-Ⅱ系统:

  ◆要求更多的任务优先级;

  ◆要求产品性能优越或是时间关键的应用,想进一步提高效率;

  ◆学习、研究或希望优化μC/OS-Ⅱ以扩展其应用范围。

  ②未使用μC/OS-Ⅱ系统:

  ◆移植改造其他操作系统的就绪表算法;

  ◆编写新操作系统或执行调度程序;

  ◆编程爱好者借鉴、改进编程方法。

  结  语

  Cortex-M3推出时,笔者就认定它是单片机过渡到ARM的有力工具,其小存储量使得它更适合用小型实时系统。在学习μC/OS-Ⅱ的过程中,发现其就绪表操作算法经过改动或许更好,于是就做了本文所述的试验。

关键字:μc/Os-Ⅱ  Cortex-M3  就绪表算法 引用地址:μc/Os-Ⅱ就绪表算法在ARM架构上的改动

上一篇:嵌入式Linux下高速USB主控制器的设计与实现
下一篇:手机操作系统介绍之Symbian系

推荐阅读最新更新时间:2024-05-02 21:02

ARM Cortex-M3的SRAM单元故障软件的自检测研究
   引言   目前,对于存储单元SRAM的研究都是基于硬件电路来完成,而且这些方法都是运用在生产过程中,但是生产过程并不能完全杜绝SRAM的硬件故障。在其使用过程中,如果SRAM硬件出错,将导致程序出错而且很难被发现。因此在运用的阶段,为防止存储单元损坏而导致系统出错,通过软件的方式对SRAM进行检测是必要的。   1 SRAM运行状态分析   SRAM是存储非CONSTANT变量(如RW),它具有掉电即失的特点。由Cortex—M3的启动步骤可知,系统上电后,首先执行复位的5个步骤:   ①NVIC复位,控制内核;   ②NVIC从复位中释放内核;   ③内核配置堆栈;   ④内核设置PC和LR;   ⑤运行
[单片机]
ARM <font color='red'>Cortex-M3</font>的SRAM单元故障软件的自检测研究
采用ARM Cortex-M3单片机和DSP的逆变电源设计
     引 言   在电气智能化发展无处不在的今天, 无数用电场合离不开逆变电源系统( Inverted Pow er Supply System,IPS) 为现场设备提供稳定的高质量电源, 特别在如通信机房、服务器工作站、交通枢纽调度中心、医院、电力、工矿企业等对电源保障有苛刻要求的场合。许多IPS产品因遵循传统设计而不符合或落后于现代电源理念,突出表现为控制模块的单一复杂化, 控制器芯片落后且控制任务繁重, 模拟闭环控制而得不到理想的监控和反馈调节效果,并由此带来单个控制设备软硬件设计上的隐患, 这对IPS 电源输出造成不利影响, 甚至对用电设备因为供电故障而导致灾难性后果。数字化控制技术日趋成熟,而且在某些领先理念的电源
[嵌入式]
基于Cortex-M3的TFT触摸屏在环境监控系统中的应用
0 引言 触摸屏是一种新型的电子输入设备,是目前最简单、方便、自然的一种人机交互方式,它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。将ARM Cortex-M3内核和TFT触摸屏结合在一起,以环境监控系统为应用,对ARM公司的Cortex-M3内核进行了分析,并研究了Cortex-M3内核驱动TFT液晶屏幕的可行性。 1 系统工作原理 无线环境监控系统总体的设计框图如图1所示。以基于第二代Cortex-M3内核的LPC1758为核心,以TFT触摸屏为显示和控制单元,以2.4 GHz无线模块为通信单元,合理移植μCOS-II系统,对环境参数进行监测和控制。 2 硬件电路设计与实现 2.1 电源方案
[单片机]
基于<font color='red'>Cortex-M3</font>的TFT触摸屏在环境监控系统中的应用
浅谈μCOSII在Cortex-M3核的ARM处理器上的移植
随着科学技术的发展,嵌入式技术已被广泛应用到汽车电子、无线通信、数码产品等各个领域。嵌入式操作系统及嵌入式处理器技术发展迅猛,嵌入式操作系统典型代表有μCOS—II、μClinux、Winclow CE、VxWorks等;嵌入式处理器包括ARM、MIPS、PowerPC等。 1 软硬件开发环境及处理器介绍 1.1 软件硬开发环境 本移植过程使用的软件环境是RealView MDK开发套件,此产品是ARM公司最新推出的针对各种嵌入式处理器的软件开发工具,该开发套件功能强大,包括了μVisiON3集成开发环境和RealView编译器。使用的硬件平台是深圳英蓓特公司推出的全功能评估板STMl03V100,其上所采用的处理器是S
[工业控制]
浅谈μCOSII在<font color='red'>Cortex-M3</font>核的ARM处理器上的移植
以ARM处理器为基础的吸尘机器人硬件设计方案详解
随着人们生活水平的日益提高,我国人口的老龄化也越来明显,吸尘机器人作为服务机器人的一种,能够代替人进行清扫房间、车间、墙壁等一些简单劳动。 使服务机器人有了广阔的场,已成为一些企业和科研院所研究的焦点。目前市场上的吸尘机器人虽然也具有智能性,但大多由于结构不尽合理、通用性差、集成度高而导致成本高,不利于普及。在研究总结市场上相对成熟产品的基础上,基于ARM Cortex-M3处理器设计一款具备自我导航功能的室内吸尘机器人。外形紧凑、结构简单、运行平稳、噪音小,并且成本低,操作方便,还具有可扩展接口,用户能够根据实际需要对其功能做进一步开发。 1吸尘机器人总体构成 利用ARM Cortex-M3处理器设计一款应用于室内的移动
[单片机]
以ARM处理器为基础的吸尘机器人硬件设计方案详解
基于C8051和μC/OS-Ⅱ的数控机床嵌入式执行控制器实现
在数控机床系统中,功能模块可分为两大部分:一部分是实时性要求不高的功能,例如人机界面交互管理等;另一部分是实时性要求高的功能,主要有伺服控制、插补计算等。根据这一特点,该系统采用两级控制结构,利用 IPC丰富的软件资源,提供图形化的人机交互环境;利用嵌入式执行控制器的高实时性和稳定性,实现快速、可靠的控制,充分发挥了二者的优点。两级之间用串行口进行实时通信。本文主要介绍嵌入式执行控制器的实现。 1 数控机床系统硬件结构 数控机床系统硬件结构如图1所示,IPC作为上位机,安装有专用软件,实现人机交互;C8051020芯片及其外围电路构成的嵌入式执行控制器作为下位机,负责实时、可靠的控制。执行控制器通过串行口接收上位机的命令信息(包括:
[单片机]
基于<font color='red'>C</font>8051和μ<font color='red'>C</font>/<font color='red'>OS-</font>Ⅱ的数控机床嵌入式执行控制器实现
e络盟推出两个基于Cortex-M处理器的STM32系列开发套件
首个融合电子商务与在线社区的电子元件分销商e络盟(element14)日前宣布,在欧洲、中东、非洲、中国和美洲推出最新的基于 ARM Cortex-M3 和 Cortex–M4处理器的 STM32F2xx 和 STM32F4xx开发套件,进一步扩展与ARM的合作。 购买此开发套件,客户将会随开发套件获赠 Keil MDK-Lite 开发工具和ULINK-ME 调试适配器,这得益于e络盟于今年年初在美洲宣布的与ARM达成的特许经营协议。此外,开发人员还将获得e络盟经ARM训练有素的工程师及e络盟ARM开发工具团队的大力支持,获取丰富的技术资料、视频支持资料以及e络盟Knode上的设计案例。新的开发套件也将成为e络盟基准路测团队的核
[单片机]
选择ARM处理器,ARM7还是Cortex-M3
要使用低成本的 32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。 1.ARM实现方法 ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一件非常重要的事,而吞吐量的增加却极具价值。 ARM公司对Cortex-M3的定位是:向专业嵌入式市场提供低成本、低功耗的芯片。在
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved