实时系统学习.pptx
《实时系统学习.pptx》由会员分享,可在线阅读,更多相关《实时系统学习.pptx(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内 容 提 要 前言RTX51系统特点RTX51的程序结构RTX51的功能函数RTX51的任务调度RTX51的系统配置 RTX51的应用举例 小结 第1页/共33页11.1前言RTX51是一款小巧的针对基于8051系列嵌入式系统的多任务实时操作系统。它的使用可以简化比较复杂、有严格时间限制的软件的设计过程。RTX51主要有两个不同的可用版本:RTX5lFull版。这里称之为RTX51的标准版,既可以以循环(Round一Robin)方式执行任务,也可以按4级任务优先级的方式切换不同优先级的任务。标准版以并行方式工作,支持中断管理,信号和消息可以通过邮箱系统在不同任务之间传递。第2页/共33页RT
2、X5lTiny版。这里称之为RTX5l的精简版,是其标准版的一个子集。它可以很容易地运行在8051的单芯片系统而不需要任何外部数据存储器。通用性强,系统需求低,但功能上受到限制。它只支持循环方式和信号方式的任务切换,而不支持优先级方式的任务切换。由于KEILC中自带了RTX5l的精简版RTX5lTiny,事实上精简版也能够满足绝大部分场合的应用要求,所以以下只讲解RTX5lTiny的内容,出现RTX51的地方默认为其精简版RTX51Tiny。第3页/共33页11.2 RTX51 11.2 RTX51 系统特点RTX51 RTX51 可以在所有的8051 8051 系列芯片上运行。用户只需要用标
3、准的C C语言编写RTX51 RTX51 程序,然后用C51C51编译器编译即可生成代码。其中,仅有少数内容和标准C C 语言有差异,这些内容是为了实现任务标识和优先级而设置的。RTX51 RTX51 程序设计需要包含实时运行头文件和必要的库文件,并且要用BL51 BL51 连接定位器来实现连接。在KeilKeil中,你只需要在目标选项的TargetTarget标签中的OperatingOperating中选择RTX-51 TinyRTX-51 Tiny,在你的头文件中加上#include#include 即可。第4页/共33页在RTX51TINY环境下生成代码,需要用到下列工具:C51编译器
4、BL51连接/定位器A51宏汇编器 此外,库文件RTX51TNY.LIB 必须存放在环境变量C51LIB所指定的路径下。RTX51 TinyRTX51 Tiny版可以运行在版可以运行在80518051的单芯片嵌入式系统上,且不需要的单芯片嵌入式系统上,且不需要任何外部数据存储器,但也不排斥应用程序访问外部的数据存储器。任何外部数据存储器,但也不排斥应用程序访问外部的数据存储器。RTX51 TinyRTX51 Tiny版本可以使用版本可以使用C51C51所支持的所有存储模式。所使用的存储模式只影响应用对象的存所支持的所有存储模式。所使用的存储模式只影响应用对象的存储位置。储位置。RTX51 Ti
5、nyRTX51 Tiny的系统变量和应用程序的堆栈区总是存储在的系统变量和应用程序的堆栈区总是存储在80518051的片内的片内RAMRAM中(即中(即DATADATA和和IDATAIDATA)。典型的)。典型的RTX51 TinyRTX51 Tiny应用程序一般运行于应用程序一般运行于SMALLSMALL存储模式下。存储模式下。第5页/共33页 RTX51 TinyRTX51 Tiny版本使用了80518051的定时器0 0和定时器0 0的中断信号。SFRSFR中的全局中断允许位或定时器0 0中断屏蔽位都可能使RTX51 TinyRTX51 Tiny停止运行。因此,除非有特殊的应用目的,应该
6、使定时器0 0的中断始终开启,以保证RTX51 TinyRTX51 Tiny的正常运行。实时操作系统的性能参数对嵌入式系统的应用开发也有着直接影响,RTX51RTX51的性能参数如表11-111-1所示。第6页/共33页11.3RTX51的程序结构RTX51Tiny通过循环(Round-Robin)方式来实现多任务,以达到多个无限循环或任务的准并行执行。这里的多任务并不是真正同时执行的,而是使用不同的时间片来执行,即只是宏观上的同时执行。它将可用的CPU周期分成多个时间片,由RTX51把这些时间片分配给每一个任务使用。每个任务只能在预定的时间片里运行。然后,RTX51再切换到另一个己经准备就绪
7、的任务,让它再执行一定的时间片。时间片一般是比较短促的,一个时间片大约只有毫秒级时间。正是由于这个原因,在用户看来,多个任务似乎是在同时执行的。第7页/共33页RTX51利用了一个由8051定时器中断信号驱动的定时程序来实现控制。定时器产生的周期性中断信号用来驱动RTX51的定时节拍。RTX51与用户程序中的main函数是无关的。用户程序中即使没有main程序,操作系统也会自动从设定的任务0开始执行。如果用户程序中已经有了main函数,就必须用人工方式来启动RTX51。这对于RTX51Tiny版,可以调用os_create_task函数来完成.下面是一个只使用下面是一个只使用Round-Rob
8、in Round-Robin 任务方式的简单任务方式的简单RTX51 RTX51 程序实例。程序实例。程序中的两个任务都是简单的计数循环。程序中的两个任务都是简单的计数循环。RTX51 RTX51 从从job0job0函数(设定为任务函数(设定为任务0 0)开始)开始执行。程序中还有另一个名为执行。程序中还有另一个名为job1job1的任务(设定为任务的任务(设定为任务l l)。系统一旦启动,在)。系统一旦启动,在job0 job0 执行一段时间后,执行一段时间后,RTx51 RTx51 就自动切换到就自动切换到job1job1的执行;而的执行;而job1job1执行一段时间后,执行一段时间后
9、,RTX51RTX51又切换回又切换回job0job0,如此无限循环地重复执行下去如此无限循环地重复执行下去 。第8页/共33页#includeintcounter0;intcounter1;voidjob0(void)_task_0os_create_task(1);/*任务l己准备就绪*/while(1)/*无限循环*/counter0+;/*更新计数值counter0*/voidjob1(void)_task_1while(1)/*无限循环*/counter1+;/*更新计数值counter1*/第9页/共33页11.4RTX51的功能函数RTX51精简版支持的功能函数如表11-2所示,
10、具体含义分别介绍如下。第10页/共33页11.4.1信号控制函数isr_send_signal函数原型charisr_send_signal(unsignedchartask_id);功能说明发送一个信号到task_id说明的任务。如果此任务已在等待一个信号,那么调用函数将使此任务就绪,准备执行。否则,信号讲存储在此任务的信号标志中。此函数只能从中断函数中调用。返回值如果执行成功,此函数返回0值;如果所指定的任务不存在,则返回-1。第11页/共33页os_clear_signal函数原型charos_clear_signal(unsignedchartask_id);功能说明清除由task_i
11、d说明的任务的信号返回值如果信号清除成功,此函数返回0值;如果所指定的任务不存在,则返回-1 os_send_signal函数原型charos_send_signal(unsignedchartask_id);功能说明发送一个信号到task_id说明的任务。如果此任务已在等待一个信号,那么调用函数将使此任务就绪,准备执行。否则,信号讲存储在此任务的信号标志中。此函数只能在任务函数中调用返回值如果执行成功,此函数返回0值;如果所指定的任务不存在,则返回-1第12页/共33页11.4.2任务控制函数os_create_task函数原型charos_create_task(unsignedchart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实时 系统 学习
限制150内