首页 > 应用 > 单片机应用
[导读]
1.前言 近年来,嵌入式发展迅速,采用51单片机死循环的事件触发编程方式已逐渐不能满足企业对产品稳定性和安全性的要求。目前,嵌入式系统软件有VxWork、Linux、WinCE、μC/OS-II等,可出于成本和技

1.前言

本文引用地址: http://www.21ic.com/app/mcu/201806/761500.htm

近年来,嵌入式发展迅速,采用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的时间触发嵌入式系统必然有着广阔的应用前景。


换一批

延伸阅读

[趣科技] 逆天的量子实验!挑战因果逻辑,搅乱时间概念

逆天的量子实验!挑战因果逻辑,搅乱时间概念

但如果是在维也纳大学Philip Walther的实验室里,如果爱因斯坦能够乘着光子飞行的话,或许情况就没那么简单了。Walther的研究组让光子在实验室内高速飞行,在此过程中无法判断它们是以什么样的次序通过两道门的。......

关键字:量子实验 因果逻辑 时间概念

[猎聘集] 创业,90%都在浪费时间然后感动自己

创业,90%都在浪费时间然后感动自己

创业本就不易,哪有时间浪费在折腾自己......

关键字:创业 时间

[新鲜事] 首次有人受伤!谷歌无人驾驶汽车再出事故

首次有人受伤!谷歌无人驾驶汽车再出事故

7月17日消息,据NBC报道,谷歌公司于当地时间周四披露,该公司的无人驾驶汽车再次出现追尾事故,并导致人员受伤。和往常一样,谷歌称事故原因并不是汽车的故障。据悉,这起交通事故发生于7月1日,一辆经过谷歌改装的雷克萨斯SUV在加州山景城遭到追......

关键字:雷克萨斯 谷歌公司 当地时间 谷歌员工 追尾事故

[新鲜事] 加州立法保障消防员必要时可击落无人机

加州立法保障消防员必要时可击落无人机

上周在美国加州的15号洲际公路上发生了一次汽车起火事故,这本不稀奇,但让人气愤的是在消防员驾驶直升机赶往救援的时候,竟然被正在空中玩耍的无人机挡住了去路。为了改善这一状况,众议员迈克·加托(D-格伦代尔)和参议员泰德盖恩斯(R-多拉多)引入......

关键字:北京时间 网易科技 无人机 直升机 消防员

[新鲜事] 天河二号再获世界超算第一

天河二号再获世界超算第一

据新华社电北京时间13日,在德国法兰克福召开的“2015国际超级计算大会”上,由国防科技大学研制的天河二号超级计算机系统,在国际超级计算机TOP500组织发布的第45届世界超级计算机500强排行榜上再次位居第一。这是天河二号自2013年6月......

关键字:北京时间 新华社 法兰克福 超级计算机 国防科大

[新鲜事] 全球首次!全电动飞机飞越英吉利海峡

全球首次!全电动飞机飞越英吉利海峡

据外媒报道,英国时间周五,民机制造商Airbus公司的全电动飞机E-Fan成功飞越英吉利海峡。据悉,此次飞行是E-Fan首次在海洋上空飞行,起点在英国肯特郡Lydd机场,终点为法国的Calais,全程 74 公里耗时38分钟。这是世界上首次......

关键字:英吉利海峡 英国时间 工程师 制造商 起点

[真心话] 分拆PayPal让eBay的未来蒙上阴影

分拆PayPal让eBay的未来蒙上阴影

国外媒体发表文章称,分拆PayPal让eBay的未来蒙上阴影。该电商公司第二季度财报显示,eBay和PayPal似乎在走向截然不同的方向。PayPal能够实现两位数营收增长及展开一系列的收购,而eBay则受困于核心的市集业务销售额下降,且在......

关键字:美国时间 销售额 文章 电商

[破谣言] 爱奇艺否认被收购 或正拆VIE

爱奇艺否认被收购 或正拆VIE

优酷土豆正洽谈收购爱奇艺,最快两个月完成。对此爱奇艺官方向网易科技明确否认,称绝对不可能。事实上,网易科技从多个渠道获悉,爱奇艺已放弃赴海外上市计划,目前正筹划拆VIE结构进入A股市场。一位接近爱奇艺高层的人士告诉网易科技,爱奇艺已经拿出了......

关键字:上海证券 网易科技 优酷土豆 时间表 计划

[真心话] 换个芯片工艺,AMD花了2亿多

换个芯片工艺,AMD花了2亿多

2015过半,各大科技企业已经开始公布本年度第二季度财报。AMD的财报则来的更慢一些,昨日,AMD官方对第二季度业绩前景进行了展望。因为业务表现低迷,他们下调了业绩预期。美国当地时间周一,AMD预计第二季度营收较第一季度将下降约8%(而此前......

关键字:当地时间 美国

[新鲜事] 错综复杂,纽交所遭遇网络故障导致交易暂停

错综复杂,纽交所遭遇网络故障导致交易暂停

据国外媒体报道,当地时间周三,美国纽交所大厅因技术故障暂停交易4个多小时。这是继软件故障迫使所有美国联合航空公司航班停飞、华尔街日报网站首页无法访问等两起网络安全事件后,美国当地时间周三一日之内发生的第三次网络安全事故,分析称这其中或存在某......

关键字:华尔街日报 纳斯达克 航班停飞 当地时间 软件故障
条评论

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客