第9章 嵌入式操作系统应用基础矩阵键盘改.docx

上传人:b****1 文档编号:2429541 上传时间:2022-10-29 格式:DOCX 页数:30 大小:833.74KB
下载 相关 举报
第9章 嵌入式操作系统应用基础矩阵键盘改.docx_第1页
第1页 / 共30页
第9章 嵌入式操作系统应用基础矩阵键盘改.docx_第2页
第2页 / 共30页
第9章 嵌入式操作系统应用基础矩阵键盘改.docx_第3页
第3页 / 共30页
第9章 嵌入式操作系统应用基础矩阵键盘改.docx_第4页
第4页 / 共30页
第9章 嵌入式操作系统应用基础矩阵键盘改.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

第9章 嵌入式操作系统应用基础矩阵键盘改.docx

《第9章 嵌入式操作系统应用基础矩阵键盘改.docx》由会员分享,可在线阅读,更多相关《第9章 嵌入式操作系统应用基础矩阵键盘改.docx(30页珍藏版)》请在冰豆网上搜索。

第9章 嵌入式操作系统应用基础矩阵键盘改.docx

第9章嵌入式操作系统应用基础矩阵键盘改

第9章嵌入式操作系统应用基础

在嵌入式计算机系统中引入嵌入式操作系统,能够更有效地完成多任务的并发处理,进一步提高系统的实时性、可靠性和稳定性。

RTX-51是应用于51系列单片机的实时多任务操作系统,通过对RTX-51的学习,可以对嵌入式操作系统在嵌入式计算机系统的作用有一个初步的认识,为进一步学习嵌入式技术打下良好的基础。

9.1嵌入式操作系统介绍

9.1.1嵌入式计算机系统体系结构

嵌入式计算机系统的体系结构如图9.1所示,无操作系统机构即:

应用程序-CPU结构;有操作系统结构即:

应用程序-操作系统-CPU结构

软件层-应用程序

硬件层(CPU)

软件层-应用程序

软件层-操作系统

硬件层(CPU)

 

(a)无操作系统结构(b)有操作系统结构

图9.1嵌入式计算机系统的体系结构

1.无操作系统结构

如图9-1(a)所示,软件层只有应用程序这一层,应用程序直接控制CPU。

应用逻辑、数据管理(运行数据的存储空间分配和结果数据的存储)、任务管理均由应用程序实现,这种系统完成多任务的方式有两种:

①多任务循环方式。

主函数在无限循环中通过调用多个任务函数来实现多任务调度。

伪代码逻辑如下:

voidmain(void)

{sysini();//系统初始化

While

(1)

{task1();//执行任务1

task2();//执行任务2

task3();//执行任务3

......

}

}

这种方式的缺点是所有任务均需轮流依次执行,任何一个任务执行时间过长都会影响其它任务的执行效率。

这种多任务处理实时性很差。

②前后台方式

任务分为前台处理和后台处理,后台处理的任务在主函数的循环中进行,紧急事件在中断中进行,称为前台处理。

伪代码逻辑如下:

voidmain(void)

{sysini();//系统初始化

Interrupt_ini();//中断初始化

While

(1)

{task1();//执行任务1

task2();//执行任务2

task3();//执行任务3

......

}

}

voidint0(void)interrupt0

{task4();//执行任务4

}

voidint1(void)interrupt1

{task5();//执行任务5

}

voidint2(void)interrupt2

{task6();//执行任务6

}

......

程序运行时,正常情况下系统执行后台任务,当中断发生时,系统放弃正在执行的后台(做好数据保护后),跳入中断中执行前台任务,执行完毕后回到主函数中继续执行后台任务。

多个前台任务通过中断优先级来调度。

前后台方式是简单嵌入式系统的基本软件设计方式,大多数单片机系统均采用前后台方式,通过中断实现多任务处理。

这是一种基于CPU中断功能的多任务调度。

在本书前7章的实例中,软件设计均采用前后台方式。

这种方式在任务较少时,特别是前台任务较少时基本可以满足系统实时性的要求。

但当前台任务较多时,在应用程序中规划中断优先级和管理数据存储空间的难度都很大,设计高效率应用程序的可能性较低。

2.有操作系统结构(应用程序-操作系统-CPU结构)

如图9.1(b)所示,在软件层,操作系统和应用程序在功能上进行了区分:

应用程序主要负责实现应用逻辑;操作系统完成底层的数据存储空间管理和多任务管理。

这种功能的区分把应用程序设计人员从复杂的数据存储空间管理和多任务管理设计中解脱出来,可以把主要精力用于应用逻辑的设计,应用软件的设计效率和可靠性大大提高。

这种结构也是目前通用计算机的软件结构体系。

9.1.2嵌入式操作系统主要功能

嵌入式操作系统具备操作系统的基本功能特征,但由于受到嵌入式计算机系统硬件平台的限制(主要是CPU和存储器),其功能有不同程度的简化。

主要功能如下:

1.任务管理

任务管理是嵌入式实时操作系统的核心和灵魂,决定了操作系统的实时性能。

它通常包含优先级设置、多任务调度机制和时间确定性等部分。

  优先级设置:

嵌入式操作系统支持多任务,每个任务都具有优先级,任务越重要,赋予的优先级应越高。

优先级的设置分为静态优先级和动态优先级两种。

静态优先级指的是每个任务在运行前都被赋予一个优先级,而且这个优先级在系统运行期间是不能改变的;动态优先级则是指每个任务的优先级(特别是应用程序的优先级)在系统运行时可以动态地改变。

2.多任务调度机制

任务调度主要是协调任务对计算机系统资源的争夺使用。

对系统资源非常匮乏的嵌入式系统来说,任务调度尤为重要,它直接影响到系统的实时性能。

通常,多任务调度机制分为基于优先级抢占式调度和时间片轮转调度。

①基于优先级抢占式调度:

系统中每个任务都有一个优先级,内核总是将CPU分配给处于就绪态的优先级最高的任务运行。

如果系统发现就绪队列中有比当前运行任务更高的优先级任务,就把当前运行任务置于就绪队列中,调入高优先级任务运行。

系统采用优先级抢占方式进行调度,可以保证重要的突发事件及时得到处理。

  ②时间片轮转调度:

让优先级相同的处于就绪状态的任务按时间片使用CPU,以防止同优先级的某一任务长时间独占CPU。

  在一般情况下,嵌入式实时操作系统采用基于优先级抢占式调度与时间片轮转调度相结合的调度机制。

3.存储器管理功能

存储器管理的主要任务是内存分配、内存保护、地址映射和内存扩充。

①内存分配:

按一定的策略为每道程序分配内存空间。

②内存保护:

操作系统中多道程序并发执行,系统应保证各程序在自己的内存区域内运行而不相互干扰,更不能干扰和侵占操作系统空间。

4.文件管理功能

计算机系统中的程序和数据通常以文件的形式存放在外部存储器上,操作系统中负责文件管理的部分称为文件系统,文件系统的主要任务是有效地支持文件的存储、检索和修改等操作,解决文件共享、保密和保护等问题。

5.设备管理功能

主要任务是对计算机系统内的所有设备实施有效的管理。

①设备分配:

根据用户程序提出的I/O请求和相应的设备分配策略,为用户程序分配设备,当设备使用完后还应收回设备。

②设备驱动:

当CPU发出I/O指令后,应启动设备进行I/O操作,当I/O完成操作后应向CPU发送中断信号,由响应的中断处理程序进行传输结束处理。

③设备独立性:

用户程序中使用的设备与实际使用的物理设备无关。

操作系统完成用户程序中的逻辑设备到具体设备的映射,使用户用起来更方便。

9.1.3典型嵌入式操作系统

1.VxWorks

  VxWorks是美国WindRiver公司的产品,是目前嵌入式系统领域中应用很广泛,市场占有率比较高的嵌入式操作系统。

VxWorks实时操作系统由400多个相对独立、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统;操作系统提供基于优先级的任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接口)规范的内存管理,以及多处理器控制程序,并且具有简明易懂的用户接口。

2.μC/OS-II

  μC/OS-II是在μC-OS的基础上发展起来的,是美国嵌入式系统专家JeanJ.Labrosse用C语言编写的一个结构小巧、抢占式的多任务实时内核。

μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。

3.μClinux

  μClinux是一种优秀的嵌入式Linux版本,其全称为micro-controlLinux,从字面意思看是指微控制Linux。

同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。

4.eCos

  eCos(embeddedConfigurableoperatingsystem),即嵌入式可配置操作系统。

是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。

eCos最大特点是配置灵活,采用模块化设计,核心部分包括内核、C语言库和底层运行包等。

每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求。

5.RTX51

RTX51是KEIL公司开发的用于8051系列单片机的多任务实时操作系统。

它有两个版本,RTX51FULL和RTX51TINY,其中RTX51TINY是免费版本,占用很少的存储器空间,无需扩充外部存储器。

由于硬件条件的限制,在51单片机软件系统上使用RTX51的实际应用案例较少,但通过对RTX51的学习,可以为学习更加复杂的嵌入式操作系统打下良好基础。

9.2RTX51TINY操作系统基本功能

9.2.1RTX51TINY特性

RTX51TINY是RTX51FULL的子集,是一个很小的操作系统内核,完全集成在KEILC51编译器中,以系统函数调用的方式运行,可以很容易地使用KEILC51语言编写和编译一个多任务程序,并嵌入到实际应用系统中。

它仅占用900字节左右的程序存储空间,占用7字节DATA空间和3倍于任务数字节的IDATA空间,可以在没有外部数据存储器的51单片机系统中运行,但应用程序仍然可以访问外部存储器。

支持按时间片循环任务调度,支持任务间信号传递,最大16个任务,可以并行地利用中断。

具有以下等待操作:

超时、另一个任务或中断的信号。

RTX51TINY的不足是:

不支持任务抢占和优先级切换;任务间通信功能较弱,不支持消息队列和信号量;不支持存储区的分配和释放。

9.2.2RTX51TINY的任务管理

1.任务状态

任务状态转换如图9.2所示,RTX51TINY的用户任务具有以下几个状态:

①RUNNING:

任务处于运行中,同一时间只有一个任务可以处于“RUNNING”状态。

②READY:

任务正在等待运行,在当前运行的任务时间片完成之后,RTX51TINY运行下一个处于“READY”状态的任务。

③WAITING:

任务等待一个事件。

如果所等待的事件发生,任务进入“READY”状态。

④DELETED:

任务不处于执行状态。

⑤TIMEOUT:

任务由于时间片用完而处于“TIMEOUT”状态,并等待再次运行。

该状态与“READY”状态相似。

图9.2RTX51TINY任务状态切换

2.同步机制

为了能保证任务在执行次序上的协调,必须采用同步机制。

内核用以下事件进行任务间的通信和同步。

①SIGNAL:

用于任务之间的通信,可以用系统函数置位或清除。

如果一个任务调用os_wait函数等待SIGNAL而SIGNAL未置位,则该任务被挂起直到SIGNAL置位,才返回到READY状态,并可被再次执行。

②TIMEOUT:

由os_wait函数开始的时间延时,其持续时间可由定时节拍数确定。

③INTERVAL:

由os_wait函数开始的时间间隔,其间隔时间可由定时节拍数确定。

与TIMEOUT不同的是,任务的节拍计数器不复位。

3.定时节拍

RTX51TINY使用8051内部定时器T0来产生中断作为定时节拍,这个中断就是RTX51Tiny的时钟片。

各任务只在各自分配的定时节拍数(时间片)内执行,当时间片用完后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1