您的位置 首页 主动

根据时刻触发多任务调度器的嵌入式体系规划与使用

基于时间触发多任务调度器的嵌入式系统设计与应用-近年来,嵌入式发展迅速,采用51单片机死循环的事件触发编程方式已逐渐不能满足企业对产品稳定性和安全性的要求。目前,嵌入式系统软件有VxWork、Linux、WinCE、μC/OS-II等,可出于成本和技术上的考虑,微控制器往往不会选取其进行设计。在实际应用中,往往会面临同时应付多外设、多任务的情况,则对它们的相互调度必不可少。时间触发嵌入式系统就是这样的简单实用的操作系统。

1.导言

近年来,嵌入式开展迅速,选用51单片机死循环的事情触发编程方法已逐步不能满意企业对产品安稳性和安全性的要求。现在,嵌入式体系软件有VxWork、Linux、WinCE、μC/OS-II等,可出于本钱和技术上的考虑,微控制器往往不会选取其进行规划。在实践运用中,往往会面对一起敷衍多外设、多使命的状况,则对它们的彼此调度必不行少。时刻触发嵌入式体系便是这样的简略有用的操作体系。

本文规划了依据AVR微控制器的时刻触发多使命调度器并运用于实践。该调度器运用传递音讯(message)的方法使得微控制器在多个使命及设备间切换。

2.AVR微控制器的结构特色

AVR是现在运用以该系列的ATmega128为例阐明,它选用哈佛结构,RISC指令集、低功耗、片上资源丰富的特色,极大简化了外围电路,使体系愈加安稳牢靠。其特色为嵌入式体系规划供给了杰出的硬件确保。

3.嵌入式两种触发方法的比照

在嵌入式体系中,一般选用两种本质上不同的调度方法:事情触发和时刻触发。事情触发方法往往运用多级中止来完结,其发生时刻具有随机性;而时刻触发方法由一个大局时钟驱动,体系的行为在功用与时刻上都是确认的,即具有可猜测性。

3.1 事情触发方法存在的问题

嵌入式体系开发人员有一种中止事情绝不会丢掉的过错观念,这往往给开发的产品带来灾难性的结果。中止事情丢掉在实践运用中是一个不争的现实,发生的原因有多方面,但无外乎内因和外因两种。外因指嵌入式体系外发生的原因,这儿主要指中止源信号丢掉或过于频频;而内因又可分为硬件原因和软件原因,硬件原因主要由所用嵌入式器材的中止嵌套才能所形成的,软件原因主要由开发者编程时对使命中止优先级设置过错以及使命处理不妥所形成的。

例如,中止0是一个高优先级中止,而中止1是一个低优先级中止,则由高优先级中止激活的中止服务程序不能被低优先级的中止打断。所以,对第二个中止的呼应将被推迟,甚至在一些状况下它有被彻底疏忽的或许。

假如多个中止源或许在“随机的”时刻距离发生中止,则中止呼应或许被遗失。实践上,在一起有几个有用的中止源的状况下,简直不或许创立程序代码来正确地处理一切或许的中止组合。并且一起处理多个事情不光添加了体系杂乱性,并且降低了体系在一切状况下的行为猜测才能。至于运用功率,Metzner评论并得出定论:一个包含27个使命、选用RM调度算法的事情触发体系,CPU的实践利用率仅为18%.

3.2 时刻触发方法的优势

在该体系中,规划人员能够经过细心组织可控的次序,确保一次只处理一个事情。它的可猜测性使其成为安全相关的体系的首选。

Kopetz首要提出:运用依据时刻触发的协作式调度器会使得体系有非常好的可猜测性。除可进步牢靠性之外,运用该方法有助于减轻CPU的负荷及存储器的运用量。

4.时刻触发嵌入式体系的规划

在该调度器中,守时器的设置被别离出来,并使之不依赖于编译器的数据类型以及处理器的位数,经过修正该部分能够轻松移植到多种硬件渠道。体系全体方框图如图1所示:

依据时刻触发多使命调度器的嵌入式体系规划与运用

4.1 音讯行列

音讯行列是调度器的中心,它是用户自界说的数据类型,包含了每个使命所需求的信息。尽量将其存储在DATA区,以供快速存取。

关于依据时刻触发的混合式调度器,运用如下的数据结构,关于每个使命存储器的开支仅为8个字节。即使是运用32位处理器,每个使命的开支也仅为14个字节。

依据时刻触发多使命调度器的嵌入式体系规划与运用

4.2 调度器守时器初始化函数

该函数用来发生驱动调度器的定不时标。

本文所选用AVR系列的ATmega128微控制器具有四个守时器(两个8位,两个16位),任一个都能用来驱动调度器,权衡考虑选用守时器0.

void SCH_Init_T0(void){逐一删去各个使命;中止守时器0;设置时刻巨细函数;使能守时器0方法;发动守时器0;}

注:在此期间不行敞开总中止,即:

SREG=0×80或SEI();调度器有必要先设定一个默许的时刻片,这并不是件简略的事。时刻片过长会导致体系对交互行为的呼应体现欠佳;时刻片太短又会明显地增大调度器处理耗时,而留给使命运转的时刻却很短。

依据笔者经历,一个较为可取的时刻片是略大于一次典型的交互所需求的时刻,使大多数进程在一个时刻片内完结。经重复测验,时刻片挑选在1~5ms之间履行功率较高,这样既可满意呼应速度的要求又能把使命履行的时刻降到最低。该时刻与使命个数和使命运转时刻均有关,详细巨细视状况而定。

4.3 中止服务程序

主张该函数由CTC方法激活,当某使命需求运转时,使之处于安排妥当态等候被履行。该函数内容由详细使命而定。

4.4 调度器使命添加函数

该函数用来将使命添加到音讯行列,以确保条件满意时被调用,函数如下所示:

依据时刻触发多使命调度器的嵌入式体系规划与运用

{界说静态变量i;循环判别使命行列是否有空间;若无,报错回来;不然,添加使命;}

4.5 调度函数

改写函数尽管能够直接激活使命,但若直接运转,长使命将损坏时标中止,这意味着一切的体系守时都将遭到严重影响,形成许多使命不能被调度。因而,为了在长使命存在的状况下使调度器的牢靠性最大化,别离改写和调度这两个操作是必要的。

时刻触发嵌入式体系选用的是FCFS算法,为了进步体系的呼应速度,有必要要求Durationtask

void SCH_Dispatch_Tasks(void){界说静态变量i;假如运转标志位大于0,则履行该使命;该标志位清零;假如是单次使命,则将其删去;}

4.6 调度器使命删去函数

void SCH_Delete_Task(const uint8task_id){界说 静态回来值;若指针函数为空,回来闲暇代码;不然,对其推迟、周期、状况等变量清零;回来代码;}

5.运用试验

电磁炉体系为例,进一步介绍依据AVR微控制器的时刻触发嵌入式体系的详细运用。

电磁炉体系是一个杂乱的嵌入式体系,如图2所示,AVR要处理很多的外围设备,为便于开发,将整个程序依照硬件及功用进行模块区分,各个功用模块之间经过传递音讯的方法来完结多使命的处理。

依据时刻触发多使命调度器的嵌入式体系规划与运用

针对该运用,可规划功用模块:MSGMap[],该数组由各个功用模块组成,详细子函数如表1所列,运用函数数组的方法能够增强程序的扩展才能。假如有新的外设,只需在这儿添加对应的模块进口,并完结相应的模块就能够添加体系的功用。

依据时刻触发多使命调度器的嵌入式体系规划与运用

其间每个使命的运转周期距离时刻是程序中设定的参数(周期应为4ms的倍数),详细履行时刻由AVR Studio测得,均应小于设守时刻片4ms,不然运用将犯错,需从头设守时刻片巨细或再次切割功用模块。其间看门狗处理使命是仅有的抢占式使命。

6.定论

试验标明,以AVR微控制器为中心的控制体系,外围扩展功用强大、开发较简略,结合以时刻触发理念为内核的操作体系,设计时一次只为一个使命分配空间,每个使命的存储开支只要8个字节,选用由C言语与汇编混合式编程,简略、安全,可猜测性强,特别适用于对本钱和安稳性均有要求的中小企业。跟着嵌入式体系的开展,依据AVR的时刻触发嵌入式体系必定有着宽广的运用远景。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/87887.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部