- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 嵌入式作系统应用基础(矩阵键盘改)
第9章 嵌入式操作系统应用基础
在嵌入式计算机系统中引入嵌入式操作系统,能够更有效地完成多任务的并发处理,进一步提高系统的实时性、可靠性和稳定性。RTX-51是应用于51系列单片机的实时多任务操作系统,通过对RTX-51的学习,可以对嵌入式操作系统在嵌入式计算机系统的作用有一个初步的认识,为进一步学习嵌入式技术打下良好的基础。
9.1 嵌入式操作系统介绍
9.1.1嵌入式计算机系统体系结构
嵌入式计算机系统的体系结构如图9.1所示如图9-1(a)所示,软件层只有应用程序这一层,应用程序直接控制CPU。应用逻辑、数据管理(运行数据的存储空间分配和结果数据的存储)、任务管理均由应用程序实现,这种系统完成多任务的方式有两种:
①多任务循环方式。主函数在无限循环中通过调用多个任务函数来实现多任务调度。伪代码逻辑如下:
void main(void)
{sysini( ); //系统初始化
While(1)
{task1( ); //执行任务1
task2( ); //执行任务2
task3( ); //执行任务3
......
}
}
这种方式的缺点是所有任务均需轮流依次执行,任何一个任务执行时间过长都会影响其它任务的执行效率。这种多任务处理实时性很差。
② 前后台方式
任务分为前台处理和后台处理,后台处理的任务在主函数的循环中进行,紧急事件在中断中进行,称为前台处理。伪代码逻辑如下:
void main(void)
{ sysini( ); //系统初始化
Interrupt_ini( ); //中断初始化
While(1)
{task1( ); //执行任务1
task2( ); //执行任务2
task3( ); //执行任务3
......
}
}
void int0(void) interrupt 0
{ task4( ); //执行任务4
}
oid int1(void) interrupt 1
{ task5( ); //执行任务5
}
oid int2(void) interrupt 2
{ task6( ); //执行任务6
}
程序运行时,正常情况下系统执行后台任务,当中断发生时,系统放弃正在执行的后台(做好数据保护后),跳入中断中执行前台任务,执行完毕后回到主函数中继续执行后台任务。多个前台任务通过中断优先级来调度。
前后台方式是简单嵌入式系统的基本软件设计方式,大多数单片机系统均采用前后台方式,通过中断实现多任务处理。这是一种基于CPU中断功能的多任务调度。在本书前7章的实例中,软件设计均采用前后台方式。
这种方式在任务较少时,特别是前台任务较少时基本可以满足系统实时性的要求。但当前台任务较多时,在应用程序中规划中断优先级和管理数据存储空间的难度都很大,设计高效率应用程序的可能性较低。
如图91(b)所示,在软件层,操作系统和应用程序在功能上进行了区分:应用程序主要负责实现应用逻辑;操作系统完成底层的数据存储空间管理和多任务管理。这种功能的区分把应用程序设计人员从复杂的数据存储空间管理和多任务管理设计中解脱出来,可以把主要精力用于应用逻辑的设计,应用软件的设计效率和可靠性大大提高。这种结构也是目前通用计算机的软件结构体系。
任务管理是嵌入式实时操作系统的核心和灵魂,决定了操作系统的实时性能。它通常包含优先级设置、多任务调度机制和时间确定性等部分。
优先级设置嵌入式操作系统支持多任务,每个任务都具有优先级,任务越重要,赋予的优先级应越高。优先级的设置分为静态优先级和动态优先级两种。静态优先级 指的是每个任务在运行前都被赋予一个优先级,而且这个优先级在系统运行期间是不能改变的;动态优先级则是指每个任务的优先级(特别是应用程序的优先级)在 系统运行时可以动态地改变。
任务调度主要是协调任务对计算机系统资源的争夺使用。对系统资源非常匮乏的嵌入式系统来说,任务调度尤为重要,它直接影响到系统的实时性能。通常,多任务调度机制分为基于优先级抢占式调度和时间片轮转调度。
①基于优先级抢占式调度:系统中每个任务都有一个优先级,内核总是将CPU分配给处于就绪态的优先级最高的任务运行。如果系统发现就绪队列中有比 当前运行任务更高的优先级任务,就把当前运行任务置于就绪队列中,调入高优先级任务运行。系统采用优先级抢占方式进行调度,可以保证重要的突发事件及时得 到处理。
②时间片轮转调度:让优先级相同的处于就绪状态的任务按时间片使用CPU,以防止同优先级的某一任
文档评论(0)