RTX51多任务操作系统中文使用指南
RTX51小型实时操作系统介绍[1]
RTX51小型实时操作系统介绍(连载1)有二个不同的RTX51版本可以使用∶RTX51 Full使用多于四个任务优先权同时完成存在时间片轮转调度和抢先式的任务切换。
RTX51工作在与中断功能类似的状态下。
信号和消息可以通过邮箱系统在任务之间互相传递。
你可以从一个可分配存储区中分配和释放内存。
你可以强迫一个任务等待中断、超时或者是从另一个任务或中断发出的信号或消息。
RTX51 Tiny 是 RTX51的一个子集,它可以很容易地在没有任何外部存储器的单片8051系统上运行。
除了下列例外,RTX51 Tiny支持许多 RTX51中的特性。
RTX51 Tiny仅支持时间片轮转任务切换和使用信号进行任务切换。
不支持抢先式的任务切换。
不包括消息历程。
没有可分配存储区分配程序。
许多微处理器应用程序要求同时执行两个工作或任务。
对于这样的应用程序,一个实时操作系统(RTOS)允许灵活的分配系统资源(中央处理器、存储器、等等.)给各个任务。
RTX51是一个很容易使用的功能强大的实时操作系统。
R TX51可以运行于所有的 8051 派生机型。
你可以使用标准 C语言编写和编译一个程序并使用 C51 构造、编译他们,仅在指定任务标识符和优先权上有一点差别。
. RTX51程序也要求你在程序中用include命令引入实时管理的头文件并使用 BL51 linker/locator进行连接和选择适当的 RTX51库文件。
RTX51小型实时操作系统介绍(连载2)单任务程序一个标准的 C语言程序从主函数开始执行。
在一个嵌入式应用中,主函数通常是一段无限循环的代码,可以认为是一个连续执行的单独任务。
时间片轮转程序一种更高级的 C语言程序可以在不使用实时操作系统的情况下实现时间片轮转拟多任务系统。
在这种系统中、任务或功能被一段无限循环程序重复调用。
例如∶用 RTX51进行时间片轮转调度rtx51也能完成多重任务时间片轮转,而且允许准并行执行多个无限循环或任务。
第10章实时操作系统RTX51课件
. 可以用标准C的结构编写RTX-51程序, 并用C51编译它 们。 它只在指定任务ID和优先权方面与标准C有一点不 同。 RTX-51程序也要求包含实时可执行的头文件, 并 用BL51链接器/定位器和相应的RTX-51库文件链接。 13
• 在RTX51 TINY环境下生成代码,需要用到下列工具: ➢ C51编译器 ➢ BL51连接/定位器 ➢ A51宏汇编器 此外,库文件RTX51TNY.LIB必须存放在环境变量C51LIB
所指定的路径下。
18
v RTX51 Tiny的存储模式 RTX51 Tiny版可以运行在8051的单芯片嵌入式系 统上,且不需要任何外部数据存储器,但也不排斥 应用程序访问外部的数据存储器。 RTX51 Tiny 版 本可以使用C51所支持的所有存储模式。所使用的 存储模式只影响应用对象的存储位置。 RTX51 Tiny的系统变量和应用程序的堆栈区总是存储在 8 0 5 1 的 片 内 RAM中 ( 即 DATA和 IDATA) 。 典 型 的RTX51 Tiny应用程序一般运行于SMALL存储模 式下。
4. BITBUS通信: RTX-51 FULL系统中集成了BITBUS主控制器和从控制器。
BITBUS任务主要用于支持与Intel 8044之间的信息传递。
15
6. 运行环境 v RTX-51实时多任务操作系统使用标准的C51来编写
程序,可以运行于所有的51系列单片机中。
v RTX-51自身提供了灵活的时间分配,以及任务的 响应和切换。用户只需要用标准的C51语言编写 RTX51 程序,然后用 C51 编译器编译即可生成代码。 其中,仅有少数内容和标准C语言有差异,这些内 容是为了实现任务标识和优先级而设置的。
RTX51 Tiny User Manual
目录总览 (2)实时程序 (5)操作原理 (7)配置RTX51 Tiny (11)使用RTX51 Tiny (14)实例 (17)函数参考 (18)总览RTX51 Tiny是一个实时系统,它允许你创建可同时执行多个功能或任务的应用程序。
在嵌入式应用中这往往是必须的。
虽然可以创建无RTOS实时程序(通过执行一个或多个任务循环),但诸如调度,维护和时序问题,像RTX51 Tiny这样的RTOS可以解决。
一个实时的操作系统可以灵活的调度系统资源,像CPU、内存和任务之间的通信。
RTX51 Tiny是一个功能强大且简单易用的RTOS,适用于所有8051衍生产品。
在Keil C51编译器中RTX51 Tiny是用标准C(ANSI C)编写的。
C语言允许你轻松的定义任务功能而不必进行复杂的栈和变量设置。
RTX51程序需要包含一个特殊的头文件且链接RTX51库到程序中。
1.新特性RTX51 Tiny第二版包含了许多新特性使实时软件开发更容易,如下代码分段RTX51 Tiny现在支持代码分段(需配置文件L51_BANK.A51文件)。
明确任务切换新功能(OS_SWITCH_TASK)可以是一个任务处于就绪状态并立即切换至另一个任务。
任务就绪标志新的RTX51 Tiny库允许给任务设置就绪状态标志,使任务处于就绪状态,在一个时间间隔、超时或接受到信号后恢复运行。
CPU空闲模式RTX51 Tiny允许CPU处于空闲模式定时器中断的用户代码支持开发者可以添加自己的代码到RTX51 Tiny定时器中断中,也可以为自己的例程设置和RTX51 Tiny相同的例程(需配置CONF_TNY.A51)。
支持间隔时间设置OS_REST+INTERVAL允许开发者在混合的时间间隔和信号中调用OS_WAIT来调整超时时间。
此外,RTX51 Tiny已被重新组合以具备灵活性、加速性以及对代码和数据空间要求更小。
RTX51 Tiny第二版在显著减小代码量并具有可扩展性。
第10章 RTX51实时操作系统
10.1.2 操作系统 操作系统( System,简称OS OS) 操作系统(Operating System,简称OS)是计算机中 最基本的程序。操作系统负责计算机系统中全部软、 最基本的程序。操作系统负责计算机系统中全部软、硬资 源的分配以及回收、控制与协调等并发的活动; 源的分配以及回收、控制与协调等并发的活动;操作系统 提供用户接口,使用户获得良好的工作环境;操作系统为 提供用户接口,使用户获得良好的工作环境; 用户扩展新的系统功能提供软件平台。 用户扩展新的系统功能提供软件平台。 操作系统的主要包括四大功能: 操作系统的主要包括四大功能: 处理机管理:解决CPU的分时复用。 处理机管理:解决CPU的分时复用。 CPU的分时复用 存储管理:配合CPU调度内存。 存储管理:配合CPU调度内存。 CPU调度内存 设备管理:分配外设的使用,包括独享、共享和虚拟。 设备管理:分配外设的使用,包括独享、共享和虚拟。 软件资源管理:解决程序和信息的存取和管理等问题。 软件资源管理:解决程序和信息的存取和管理等问题。
10.1.9 函数的可重入性 可重入(Reentrant)型函数: 可重入(Reentrant)型函数:是指可以被多个任务并发使 (Reentrant)型函数 用,而数据不会遭到破坏的函数。 而数据不会遭到破坏的函数。 可重入型函数特征: 可重入型函数特征: 只使用局部变量,变量保存在CPU寄存器或堆栈中, 只使用局部变量,变量保存在CPU寄存器或堆栈中, CPU寄存器或堆栈中 可以在任意时刻被中断,再重新恢复运行时,数据不 可以在任意时刻被中断,再重新恢复运行时, 会被破坏; 会被破坏; 若使用全局变量,则需满足互斥条件。 若使用全局变量,则需满足互斥条件。
10.1.7 内核与任务切换 内核 内核是操作系统最基本的部分。多任务系统中, 内核是操作系统最基本的部分。多任务系统中,内核 负责管理各个任务,或者说为每个任务分配CPU时间, CPU时间 负责管理各个任务,或者说为每个任务分配CPU时间,并 且内核决定一个程序在什么时候对某部分硬件操作多长时 内核负责任务之间的通信, 间。内核负责任务之间的通信,它提供的基本服务是任务 切换。 切换。 任务切换 当多任务内核决定运行另外的任务时, 当多任务内核决定运行另外的任务时,保存正在运行 任务的当前状态,即保存CPU寄存器中的全部内容。 CPU寄存器中的全部内容 任务的当前状态,即保存CPU寄存器中的全部内容。这些 内容保存在任务的当前状态保存区, 内容保存在任务的当前状态保存区,也就是任务自己的栈 区之中。入栈工作完成以后, 区之中。入栈工作完成以后,就把下一个将要运行的任务 的当前状态从任务的栈中重新装入CPU的寄存器, CPU的寄存器 的当前状态从任务的栈中重新装入CPU的寄存器,并开始 下一个任务的运行。这个过程就称为任务切换。 下一个任务的运行。这个过程就称为任务切换。
TASKING 251 USB 快速入门说明书
WelcomeWelcome to the TASKING software evaluation tools for the 251 and 8x930 USB. The evaluation softwareconsists of EDE, our MS-Windows based Embedded Development Environment, editor, the Power C compiler,assembler, linker/locator, and the CrossView Pro simulator and ROM monitor debugger. You can get up and running with the tools very quickly by following the Quick Start instructions below. The software can be used for any member of the 251 family, including the 8x930 USB peripheral controller. You will be able to compile,assemble and link programs, produce ROMable code and run it on CrossView Pro. In order to use CrossView Pro ROM, you will need a target board running the RISM ROM monitor. All Intel boards come with RISM inside an EPROM. TASKING has ported RISM to the Temic and Keil board. Preconfigured examples are delivered for:SimulatorDemo C programc:\d251\examples\demo\sim.pjt Intel 8x930 USB Evaluation BoardDemo C program c:\d251\examples\demo\usb.pjt Intel 151/251 Evaluation BoardDemo C program c:\d251\examples\demo\rism.pjt Intel 251 ProjectBuilder Board (old)Demo C program c:\d251\examples\demo\rismpb.pjt Temic 251A1/G1 Evaluation BoardDemo C program c:\d251\examples\demo\ri_temic.pjt Keil MCB251 Evaluation BoardDemo C program c:\d251\examples\demo\ri_temic.pjt SimulatorSieve C benchmark c:\d251\examples\sieve\sieve.pjt Simulator Assembly program c:\d251\examples\asm\asm.pjtTable-1 Example ProjectsRestrictionsThe editor is a demo version and the compiler and assemblersupport a limited number of symbols and operands. The linkerallows up to 3K of code size. CrossView also has some restrictionsincluding the About box popping up every 5 minutes. Please refer tothe Demo Limits help file for more details. Although theserestrictions do apply, we believe that the demo package is adequatefor you to be able to make a purchasing decision.InstallationStart MS-Windows. Insert the 251/USB demo CD-ROM. ForWindows 3.1x, in the Program Manager select the File|Run...menu item. For Windows 95, press the Start button and select theRun... menu item. In the dialog box type D :\SETUP (where D: isthe drive letter of your CD-ROM player) and follow the instructionson the screen. At the end of the installation procedure a ProgramGroup window will show up on the screen of your computer. It willlook like the one shown in figure-1. You will use the EDE icon themost, since it presents you with a complete environment from whereyou can invoke the manuals and the other tools.NOTE: When using Windows 95 you can create a shortcut onyour desktop by dragging the EDE icon to the desktop using theright mouse button!Figure 1 Program GroupStarting EDEEDE is a standard Windows application which you can launch either by double-clicking the EDE icon in the Program Group, or via the Start Menu when using Windows 95. Please note that the EDE on-line manual also contains an extensive Getting Started with EDE chapter.EDE OverviewEDE is an integrated embedded software development environment that combines a powerful editor withproject management and an automated make facility. After you invoke the EDE, the window shown in figure-2will show up on your screen.From this environment you can create and maintain projects, edit files, specify tool options, compile, assemble and link your application, access on-line manuals and invoke the CrossView Pro debugger environment.Project ManagementEDE is more than a language sensitive editor. It is a completeproject environment which gives you direct access to the toolsand features you need to be your most productive. EDE lets youdefine the files of your project and, by navigating through thetabs, select the tool options that apply. With the EDE projectmanager you create and maintain a project so your application isalways up-to-date. All aspects of a project are saved in theproject file: the source files that make up the application, the tooloptions (compiler, assembler, linker and CrossView Prodebugger), the tool directories and the options describing thebuilding process. The project manager handles file dependenciesas well as the exact sequence of operations required to buildyour application.There are a number of example demo project files included in thepackage, as listed in table-1 on page 1. By rebuilding aCrossView Pro demo you can verify the proper installation of thesoftware and confirm that you can compile, assemble, link anddebug an application. This tutorial will build the demo Capplication for the 8x930 USB evaluation board, but the steps arequite similar for the other execution environments. To switchfrom the simulator execution environment, which is the defaultproject of the demo, to the 8x930 USB board, select USB.PJTfrom the Projectmenu.Figure 2 Embedded Development EnvironmentFigure 3 Project MenuSetting Processor OptionsYou can now edit the files belonging to the project. The filesDEMO.C and ADD251.SRC are automatically opened. To seewhich files belong to the project, select the Project|LoadFiles... menu item. The next step is to specify the options forthe Processor and the different parts of the toolchain.The Processor Options allow you tochoose the execution mode of the CPU:binary mode or source mode. Please notethat the factory setting of most boardsassumes binary mode. So you eitherhave to rebuild the application for binarymode (select Binary Mode and click OK)or set the board to run in source mode(DIP switch MOD0 must be set to ‘on’for Source Mode, ‘off’ for Binary Mode).In the Memory tab of the ProcessorOptions you specify how the CPU isconfigured with regards to internalROM/RAM as well as the externalmemory interface (RD# and PSEN#functions). For the 8x930 USB board, theUSB controller is a ROM-less part andhas 1K of internal RAM. The externalmemory interface is configured for using18 address lines (A0-A17), so the CPUaddresses 256KB as one linear spacefrom 0-3FFFFH. In the Linker Optionsyou can now specify the external ROMand RAM areas within the 256KB range.NOTE: When changing anyprocessor option the assembly systemstartup code (LIB\START.SRC) must bepart of your project!Figure 4 EDE OptionsFigure 5 CPU Execution ModeFigure 6 CPU Memory SettingsSetting Development Tool OptionsYou can now specify the compiler and assembler options for your project. For example, the memory model to be used and which optimizations must apply. The compiler and assembler option selection responds to the active window. If the active window in EDE is e.g. a C source file, the compiler selection in the EDE menu allows you to set options for that specific file or for all the C files in the project. The order in which you do so is not important. Individual file options always prevail over project wide options. Every time you close the option selection from the EDE menu a new build file (makefile) is generated.There is also a Memory tab inside theLinker Options dialog. This tab is veryimportant, since here you specify whereyour external ROM and RAM areas are,which memory areas must be reservedand more. Figure 7 shows the settings forthe 8x930 USB evaluation board.The 8x930 USB board has 128KB ofRAM for downloading application codeand data. The upper 128 KB of memory isnot used, except for the 32K EPROMwhere RISM resides. RISM expects theapplication and it’s interrupt vectors tobe located at 4000H. In this example wehave specified RAM in the lower 16KBand the rest of the memory (112K) to beused for downloading user code andconstant data. When using RISM youmust reserve memory from 20H to 3FH,since the ROM monitor uses this area.For the same reason, the system startupcode must start to clear internal RAM at 40H (instead of 8H). For the 8x930 USB board the linker/locator must also map all the segments of type CODE (8051 compatible 64KB code area) to page 0 (0-0FFFFH) instead of page 0FFH (0FF0000H-0FFFFFFH), since RISM expects the user code to start in page 0. The last item to take care of is the reset vector. RISM assumes the application’s reset vector is at 4000H instead of 0FF0000H, so you must specify this to the linker/locator.Building the ApplicationThe next step is to compile and link the files in your project and build theprogram so you can debug the application. First save any edited files andthen click on the ‘Rebuild’ button in the toolbar. EDE compiles and links yourproject and creates an absolute object module called USB.ABS , ready fordebugging.The building process is logged in the Output Window. If error messages occur, there is a button to browse through a list of error messages.When you use the 'ERR' button the editor prompts you automatically to the right position in the source file where the error has been detected.You can inspect the resulting map file by opening USB.MAP in theeditor (File|Open…)Figure 7 Memory Settings for the 8x930 USB boardFigure 8 RebuildFigure 9 Error MessagesDebugging the Application with CrossView ProIn order to simulate code execution or download code to the evaluation board, you need to invoke the CrossView Pro debugging environment. Before launching CrossView Pro you need to select the execution environment: either the simulator or the ROM monitor. For the ROM monitor version you have to connect the evaluation board to your PC and specify additional communications parameters. Select the EDE|CrossView Pro Options... menu item in order to invoke the CrossView Pro Options dialog.Connect the 8x930 USB evaluation board to the correct COM port of your PC and power on the board. Specify a baudrate of 19200 when using the external serial port (UART), 9600 when using the internal serial port. After having pressed the OK button, you can launch the CrossView debugger by clicking on the ‘Debug’ (fly-swatter) button in the toolbar.Loading the ApplicationCrossView Pro has now already loaded the application and downloaded the image to the board. Select the File|Load Application menu item in order to invoke the Load Application dialog. In this dialog youcan specify an ‘Automatic Start’, ‘Target reset’ and ‘Goto main’ for subsequent debugging sessions.Figure 10 CrossView Pro OptionsFigure 11 Load ApplicationStepping ThroughNow click on Run in the menu bar and select Program Reset . This resets the software and the board and may take a few seconds. The reset empties the Source Window when it is in source display mode. At the reset address there is only startup code that does not relate to C-source. One program step (Step button in the toolbar) causes the program to execute the C-startup code, enter the main()function and fills the Source Window.Using the toolbar or the menu bar you can edit breakpoints, watch data, display the stack, simulate I/O and much more. Please note that all the User Manuals are available as help files with hypertext links for easynavigation and the EDE manual has an extensive Getting Started with EDE chapter guiding you through the process of creating a new project.Questions or Problems?Depending on where you are located call one of the following numbers and tell customer support that you are using the 251/8x930 USB demo version 2.0.USA:1-800-458-8276,fax7813209212,e-mail:**********************Europe:+31334558584,fax+31334551005,e-mail:**********************Japan:+81334576831,fax+81334576834,e-mail:******************.jp See us also at: Figure 12 CrossView Pro Desktop。
RTX51 Tiny学习
Round-robin 任务切换RTX51 Tiny可以配置成使用round-robin多任务。
Round-robinp容许quasi-parallel执行多任务。
任务并不是连续执行的,而是分时间片执行的(可用的CPU时间被分成时间片,RTX51 Tiny把时间片分配给各个任务)。
时间片的时间很短(以毫秒为单位),所以任务看起来像连续执行一样任务在分配给他的时间片内执行(除非放弃)。
然后切换到下一个就绪的任务。
这个时间片在RTX51 Tiny Configuration.配置文件中定义.下面的例子是一个使用round-robin多任务的RTX51 Tiny的程序。
这个程序中的两个任务都是循环计数器。
RTX51 Tiny执行称为job0的任务0。
这个函数创建了另一个任务job1。
Job0执行完它的时间片后,RTX51 Tiny开始执行job1。
Job1执行完它的时间片后,RTX51 Tiny又返回到job0开始执行。
然后再切换到job1,如此循环。
#includeint counter0;int counter1;void job0 (void) _task_ 0 {os_create (1);/* mark task 1 as ready */while (1) {/* loop forever */counter0++; /* update the counter */}}void job1 (void) _task_ 1 {while (1) { /* loop forever */counter1++; /* update the counter */}}注意:除了一个任务的时片到时,也可以使用函数os_wait 或函数os_switch_task通知RTX51 Tiny可以切换到另一个任务。
函数os_wait挂起当前任务直到特定的事件发生。
在这期间任何其他的任务都可以执行。
Cooperative 任务切换如果你禁止了round-robin多任务,你必须设计并执行你的任务从而让他你们以cooperativ方式工作。
RTX-51使用手册
堆栈管理...41 用 dScope- 51调试.....................................................................................................................印在打印机上的信息
本字体也用于出现在命令行上的论述或描述文字
KEYS 这种字体的文字表示在键盘上实际存在的键 例如 ALT+<x> 表明一Alt组合键 Alt和 <x>键必须同时按下
“Press Enter to Continue.”
CTRL+<x> 表明一Ctrl组合控制键 Ctrl和 <x>控制键必须同时按下
Springer-Verlag Inc., New York
本用户指南包含 部分
第 1 部分 概述 描述 rtx51实时操作系统的功能并给出RTX51 Tiny和 RTX51 Full 版本的基本特征和差异 同时包括 RTX51 Full 和 RTX51 Tiny. 的 技术数据
第 部 分 系 统 需 求 和 定 义 讨论 RTX51 Tiny的开发工具和目标系统的需求 解释在 RTX51 Tiny 手册中使用的术语和任务定义的描述
符号约定
本手册使用下列约定
范例说明
B old: BL51采用 Bold字体 大写的文本用于可执行程序 数据文件 源文件 环境变量的名称和你在DOS命令提示窗口键
入的命令 这种文本通常表示你必须逐字地输入的命令
第12章 C51下的RTX-51实时多任务
• • • 清除信号标志函数os_clear_signal主要用于清除指定任务的信号 标志,主要用于选择所定义的输出状态。其函数原型如下: char os_clear_signal (unsigned char taskid); 其中,参数taskid指向所需要清除信号标志的任务号。清除信号 标志函数os_clear_signal的返回值如果为0,则表示信号标志清 除成功;如果为-1,则表示指向的任务不存在。使用清除信号标 志函数os_clear_signal的程序示例如下。 #include <RTX51TNY.h> void task_osclearsignal (void) _task_ 2 { „„ os_clear_signal (5); //清除任务5中的信号标志 „„ }
• • • • • • • •
12.2.3 启动任务函数
• • • 启动任务函数os_create_task主要用于启动指定任务号的任务。其函数原型如下: char os_create_task (unsigned char taskid); 其中,参数taskid指向所需要启动任务的任务号,taskid必须与任务定义时描述的数 字一致,其可取值的范围为0~15。启动任务函数os_create_task的返回值如果为0, 则表示启动任务成功;如果为-1,则表示所指向的任务不存在或者任务无法启动。使 用启动任务函数os_create_task的程序示例如下: #include <RTX51TNY.h> #include <stdio.h> void ntask(void) _task_ 3 { „„ } void task_oscreatetask (void) { „„ If(os_create_task (3)==-1) { Printf(“不能启动任务3”); } „„ } //任务3
RTX51-Tiny使用说明
限制值
16 16 900 字节(最大) 7 字节 3 字节/任务 0 字节 定时器 0 1,000-65,535 20 机器周期(最大) 100-700 机器周期
1.4 工具需求
RTX51 Tiny 需要以下的软件工具: ◆ C51 编译器 ◆ A51 宏汇编器 ◆ BL51 或者 LX51 连接器
本质上,你要确保时间轮转任务调度不会发生在使用算术单元的地方。 注意:
如果你想要使用算术单元,那么你应该禁止时间轮转任务调度,改用合作式任务调度。
1.5.6 寄存器组 RTX51 Tiny 假定所有的任务都使用寄存器组 0,正因为这样所有的任务函数都必须采用
默认的 C51 设定来编译(REGISTERBAN(0))。 中断程序应该可以使用剩下的寄存器组,不过 RTX51 Tiny 在寄存器组中占用了 6 个固
1.2 解决的问题
下面的列表是 RTX51 Tiny 版本 1.06 中发现的问题,这些问题在版本 2 中已经被修正。
(1) RTX51 Tiny 版本 1.06 中,如果 os_wait 期间有中断产生,那么函数 isr_send_signal 将会破坏就绪(READY)状态,这将导致任务被挂起,在中断中等待信号。
rtx51 tiny原理
rtx51 tiny原理RTX51 Tiny是一款基于RTX51内核的微型嵌入式操作系统。
本文将介绍RTX51 Tiny的原理及其应用。
一、RTX51 Tiny的原理RTX51 Tiny是由Keil公司开发的一款嵌入式实时操作系统。
它的设计目标是在51系列单片机上提供简单、灵活、高效的多任务管理和资源调度功能。
RTX51 Tiny使用了一种基于优先级的抢占式调度算法,能够实现多个任务之间的快速切换,从而提高系统的响应速度和并发处理能力。
RTX51 Tiny的核心是一个可重入的内核,它提供了任务管理、时间管理、资源管理和通信机制等基本功能。
任务管理器负责任务的创建、删除和切换,时间管理器实现了系统时钟的管理和定时器的功能,资源管理器用于管理共享资源的访问,通信机制则提供了任务间的消息传递和事件通知功能。
RTX51 Tiny的任务是用户定义的函数,可以是独立的任务或者中断服务函数。
每个任务都有一个优先级,优先级高的任务会优先执行。
当系统启动时,RTX51 Tiny会自动创建一个空闲任务,它的优先级最低,用于处理系统空闲时的任务。
RTX51 Tiny采用了一种事件驱动的方式进行任务调度。
当一个任务完成了它的工作或者等待某个事件发生时,它会主动让出CPU,将控制权交给调度器。
调度器会从就绪队列中选择优先级最高的任务执行,直到它完成了工作或者时间片用完。
RTX51 Tiny还提供了一些常用的服务函数,如延时函数、信号量函数、邮箱函数等,方便用户进行任务的同步与通信。
用户可以通过这些服务函数来实现任务间的协作和数据交换。
二、RTX51 Tiny的应用RTX51 Tiny广泛应用于各种嵌入式系统中,特别是对实时性要求较高的应用场景。
以下是一些常见的应用领域:1. 工业自动化:RTX51 Tiny可以用于控制系统中的任务调度和数据处理,实现复杂的自动控制算法和实时监控功能。
2. 智能家居:RTX51 Tiny可以用于家庭自动化系统中的任务管理和设备控制,实现智能家居的各种功能,如安防、照明和能源管理等。
单片机操作系统RTX51Tiny的使用步骤
单片机操作系统RTX51Tiny的使用步骤一般地,下面三步是使用RTX51 Tiny要实现的l 编写RTX51程序l 编译并连接程序l 测试和调试程序一、编写程序写RTX51 Tiny程序时,必须用关键字对任务进行定义,并使用在RTX51TNY.H中声明的RTX51 Tiny核心例程。
1、包含文件RTX51 Tiny仅需要包含一个文件:RTX51TNY.H。
所有的库函数和常数都在该头文件中定义。
你可以在你的源文件中包含它:#include2、编程原则以下是建立RTX51 Tiny程序时必须遵守的原则:①、确保包含了RTX51TNY.H头文件。
②、不要建立main函数,RTX51 Tiny有自己的mian函数。
③、程序必须至少包含一个任务函数。
④、中断必须有效(EA=1),在临界区如果要禁止中断时一定要小心。
参见概述中的中断一节。
⑤、程序必须至少调用一个RTX51 Tiny库函数(象os_wait)。
否则,连接起将不包含RTX51 Tiny库。
⑥、Task 0是程序中首先要执行的函数,必须在任务0中调用os_create_task 函数以运行其余任务。
⑦、任务函数必须是从不退出或返回的。
任务必须用一个while(1)或类似的结构重复。
用os_delete_task函数停止运行的任务。
⑧、必须在uvison中指定RTX51 Tiny,或者在连接器命令行中指定。
更多技术文档参见keil软件知识库。
3、定义任务实时或多任务应用是由一个或多个执行具体操作的任务组成的,RTX51 Tiny支持最多16个任务。
任务就是一个简单的C函数,返回类型为void,参数列表为void,并且用_task_声明函数属性。
例如:void func (void)_task_task_id这里,func是任务函数的名字,task_id是从0到15的一个任务ID号。
下面的例子定义函数job0编号为0的任务。
该任务使一个计数器递增并不断重复。
第十三章RTX51实时多任务操作系统
ob0 () _task_ 0 { int i; os_create_task (1); /*启动任务 1 os_create_task (2); /*启动任务 2 while (1) { /* 无穷循环 counter0++; /* counter0 加1 for(i=0;i<1000;i++); P1_0=!P1_0; } }
RTX51任务状态
ຫໍສະໝຸດ 1)运行(RUNNING):当前正在运行的任务处于 RUNNING状态,同一时间只有1个任务可以运行。 2)就绪(READY):等待运行的任务处于READY状态, 在当前运行的任务退出运行状态后,就绪队列中 优先级最高的任务进入到运行状态。 3)阻塞(BLOCKED):等待一个事件的任务处于 BLOCKED状态,如果事件发生且优先级比正在运 行的任务高,此任务进入运行状态;如果优先级 比正在运行的任务低,此任务进入READY状态。 4)删除(DELETED):没有开始的任务处于删除状态。
13.2.1 RTX51的特点
RTX51有2个模式:RTX51完全模式和最小模 式。RTX51 Tiny是RTX51的一个子集,支持 RTX51中绝大多数的特性,且不需要外部RAM (XDATA)。RTX51 Tiny 支持RTX51 Full 的许多特 性,但不具有以下功能: 由循环多任务处理和信号实现任务切换 不支持优先任务切换 不包含信息子程序 无存储器库分配子程序
2 使用RTX51的信号
可以使用 os_wait功能暂停一个任务并等待从另一个 任务发出的信号或旗标。这可以用于协调两个或更多的任 务,等待一个信号会系统会执行如下工作:如果一任务在 等待一个信号并且信号标志是0,在这个信号被发送之前, 这个任务将一直处于挂起状态;如果信号标志已经是1, 当任务查询信号时,信号标志会被清除并且继续执行任务。 例13-3-3 信号使用示例。 #include <rtx51tny.h> long counter0; /*任务0的计数器 */ long counter1; /*任务1的计数器 */ long counter2; /*任务2的计数器 */ long counter3; /*任务3的计数器 */
RTX51Tiny中文手册
RTX51Tiny中⽂⼿册第六章函数参考以下部分描述RTX51 Tiny的系统函数。
函数依字母顺序排列,分为以下部分:概要(Summary)简述程序作⽤,列出包含的⽂件,包括它的声明和原型,语法举例,和参数描述。
描述(Description)程序的详细描述,如何使⽤。
返回值程序返回值说明。
参阅(see also)相关程序。
例⼦如何正确使⽤该函数的程序例⼦中断。
附注:●以os_开头的函数可以由任务调⽤,但不能由中断服务程序调⽤。
●以isr_开头的函数可以由中断服务程序调⽤,但不能由任务调⽤。
1、isr_send_signal概要: #includechar isr_send_signal(unsigned char task_id); /*信号发往的任务*/描述: isr_send_signal函数给任务task_id发送⼀个信号。
如果指定的任务正在等待⼀个信号,则该函数使该任务就绪,但不启动它,信号存储在任务的信号标志中。
附注:●该函数是RTX51 Tiny实时操作系统的⼀部分,仅包含于PK51中。
●该函数仅被中断函数调⽤。
返回值成功调⽤后返回0,如果指定任务不存在,则返回-1。
参阅 os_clear_signal,os_send_signal,os_wait例⼦#includevoid tst_isr_send_signal(void) interrupt 2{isr_send_signal(8); /*给任务8发信号*/}2、isr_set_ready概要 #include< rtx51tny.h>char isr_set_ready{ unsigned char task_id};/*使就绪的任务*/描述将由task_id指定的任务置为就绪态。
附注●该函数是RTX51 Tiny的⼀部分,包含在PK51中。
●该函数仅⽤于中断函数。
返回值⽆例⼦ #include< rtx51tny.h>void tst_isr_set_ready(void)interrupt 2{ isr_set_ready(1);/*置位任务1的就绪标志*/}3、os_clear_signal概要 #include< rtx51tny.h>char os_clesr_signal(unsigned cahr task_id);/*清除信号的任务*/描述清除由task_id指定的任务信号标志。
第17章 RTX51 Tiny操作系统
RTX51 Tiny介绍
RTX51 Tiny是一个实时的内核,由一个ARM公司KEIL发布。RTX51 Tiny是一个小的实时内核,它用于代 码长度是重要考虑因素的那些应用。RTX51包含在PK51专 业开发工具中,这个工具和PSoC Creator一起安装。此外 ,RTX51 Tiny是免费的。 RTX51 Tiny支持C51编译器所有的存储器模型(小的 ,压缩的和大的存储模型)。 RTX51 Tiny可以配置成轮询和合作的多任务,但它不 支持抢占任务切换和任务优先级。 RTX51 Tiny使用单个定时器,用于操作系统的定时器 “ 滴答”。不使用其它硬件资源。
RTX51 Tiny介绍 --内核函数
返回:指定事件发生时,使能任务用于执行。恢复执行。 可能的返回值:
SIG_EVENT:接收到一个信号; TMO_EVENT:完成超时,或者间隔过期; NOT_OK:event_sel参数无效;
RTX51 Tiny介绍 --内核函数
1.下面给出一个例子说明使用RTX51 Tiny内核函数调 用实现轮询调度:
RTX51 Tiny介绍 --内核函数
char
os_wait(unsigned char event_sel, unsigned char ticks, unsigned int dummy)
功能:os_wait函数停止当前的任务,等待一个或多个事 件,比如:来自时间间隔,来自一个超时,或者 来自其它任务或者中断。event_sel参数指定了时间 或者等待事件,能是下面常数的任何的组合:
RTX51 Tiny介绍 --任务切换
RTX51 Tiny执行轮询多任务调度,这样允许模拟并行 执行多个无限循环或者任务。任务不是并发执行的,而是 按时间片执行的。可用的CPU时间被分成时间片,RTX51 Tiny为每个任务分配一个时间片。每个任务允许执行预先 确定的时间长度。然后,RTX51 Tiny切换到其它准备运行 的任务,然后这个任务执行一段时间。时间片的长度使用 变量TIMESHARING定义。
RTX51实时操作系统PPT
15.2 RTX51的特点
➢ RTX51是一款小巧的针对基于8051核心的嵌入式系统的多 任务RTOS。使用它可以简化比较复杂、有严格时间限制 的程序的设计过程。RTX51主要有两个不同的可用版本: 标准版(RTX51-Full)和精简版(RTX51-Tiny)。
➢ 在RTX51-Full中:既可以以轮循(Round-Robin)方式执 行任务,也可以按4级任务优先级的方式切换不同优先级 的任务。以并行方式工作,支持中断管理,信号和消息 可以通过邮箱系统在不同任务之间传递。
21
用于任务管理的常见系统函数
5、os_wait 返回值:当有一个指定的事件发生时,任务被置为就绪态。
当任务继续执行时,os_wait返回重新启动任务的特 定事件。有以下可能的返回值:
事件
描述
RDY_EVENT 任务就绪标志被os_set_ready或isr_set_ready函数置位
➢ 时间片一般是比较短促的,一个时间片大约只有毫 秒级时间。正是由于这个原因,在用户看来,多个 任务似乎是在同时执行的。
11
15.3 RTX51的程序设计 —运行机制
➢ RTX51利用了一个由定时器0的中断信号驱动的定 时程序来实现上述时间片的控制。定时器产生的 周期性中断信号用来驱动RTX51的定时节拍。
4
多任务系统的执行特点
➢ 多任务系统的设计思路: 各功能模块(如显示、键盘扫描等等)处于 等同地位。 各功能模块执行顺序可在程序运行过程中动 态地改变。 各子任务在自已的时间片内运行,通过合理 设计时间片大小和各任务的优先级,可以自 然地满足系统内各种复杂的时序要求。
➢ 类似这样的任务管理和调度,就是多任务OS的 核心。
➢ 实时操作系统(Real-Time Operating System, RTOS),是指当外界事件或数据产生时,能够 接受并以足够快的速度予以处理,其处理的结 果又能在规定的时间之内来控制生产过程或对 处理系统作出快速响应,并控制所有实时任务 协调一致运行的操作系统。
RTX51实时操作系统方案
第11章 RTX51实时操作系统
②RTX5lTiny版。这里称之为RTX5l的精简版,是其标准版 的一个子集。它可以很容易地运行在8051 的单芯片系统而 不需要任何外部数据存储器。通用性强,系统需求低,但 功能上受到限制。它只支持循环方式和信号方式的任务切 换,而不支持优先级方式的任务切换。 由于KEIL C中自带了RTX5l的精简版RTX5lTiny,事 实上精简版也能够满足绝大部分场合的应用要求,所以以 下只讲解RTX5lTiny的内容,出现RTX51的地方默认为其 精简版RTX51Tiny。
第11章 RTX51实时操作系统
11.5 RTX51的任务调度
RTX51利用任务状态来管理各个任务。用户为RTX51定义 的每个任务都会以各种状态的某一种来运行。RTX51内核为 每个任务保留了适当的状态如表11-5所示。
表11-5 RTX51的任务状态
第11章 RTX51实时操作系统
RTX51以round-robin多任务方式执行程序,它支持多个 无限循环或任务的准并行执行。任务不是被同时执行,而是 以分时的方式轮片执行。可用的CPU时钟周期被分成多个时 间片,然后由RTX51 将这些时间片分配给各个任务。每个任 务只允许在预定的时间片中执行,时间片用完时,RTX51就 切换至另一个就绪的任务,继续执行一段时间。时间片的具 体长度可以用配置函数TIMESHARING 来定义。
第11章 RTX51实时操作系统
RTX51 Tiny版本使用了8051的定时器0和定时器0的中断 信号。SFR中的全局中断允许位或定时器0中断屏蔽位都可 能使RTX51 Tiny停止运行。因此,除非有特殊的应用目的, 应该使定时器0的中断始终开启,以保证RTX51 Tiny的正常 运行。
实时操作系统的性能参数对嵌入式系统的应用开发也有 着直接影响,RTX51的性能参数如表11-1所示。
基于实时操作系统RTX51的多任务处理设备设计
计 算机 光 盘 软件 与应 用
2 1 第 9期 0 0年
C m u e DS f w r n p lc t o s o p t r C o t a e a dA p i a i n 工 程 技 术
基于实时操 作 系统 R X 1 多任务处 理设备设计 T 5的
刘 蕊
( 华北计算技术研 究所 ,北 京
te q i n.hsmpe n t ncn e sd n a os y ne aigsme ma d s ns h up t ii l e me T met i e r u s c kn a o a b u i v i wa o m o laj t t s l u me .
rtx51中文手册
成时间片,RTX51 Tiny 给每个任务分配一个时间片)。由于时 间片很短(几毫秒), 看起来好象任务在同时执行。 任务在它的时间片内持续执行(除非任务的时间片用完)。然后, RTX51 Tin g 切换到下一个就绪的任务运运行。时间片的持续时间可以通过 RTX51 Ting 配置 定义。 下面是一个 RTX51 Tiny 程序的例子,用循环法多任务处理,程 序中的两个任务 是计数器循环。RTX51 Tiny 在启动时执行函数名为 job0 的任务 0,该函数建立了另 一个任务 job1,在 job0 执行完它的时间片后, RTX51 Tiny 切 换到 job1。在 job1 执 行完它的时间片后,RTX51 Ting 又切换到 job0,该过程无限重 复。 #include int counter0; int counter1;
void check_serial_io_task(void) _task_ 1 ﹛/*该任务检测串行 I/0*/﹜
void process_serial_cmds_task(void) _task_ 2 ﹛/*该任务处理串行命令*/﹜
void check_kbd_io_task(void) _task_ 3 ﹛/*该任务检测键盘 I/O*/﹜
void process_kbd_cmds_task(void) _task_ 4 ﹛/*处理键盘命令*/﹜
void startup-_task(void) _task_ 0
﹛
os_create_task(1);
/*建立串行 I/O 任务*/
os_create_task(2);
/*建立串行命令任务*/
第三章 原理
RTX51 Tiny 用于管理目标系统的资源,本章讨论 RTX51 Tiny 如何使用这些资源。 一、定时器滴答中断 RTX51 Tiny 用标准 8051 的定时器 0(模式 1)生产一个周期性 的中断。该中断就是 RTX51 Tiny 的定时滴答(Timer Tick)。 库 函数中的超时和时间间隔就是基于该定时滴答来测量的。 默认情况下,RTX51 每 10000 个机器周期产生一个滴答中断,因 此,对于运行于 12MHZ 的标准 8051 来说,滴答的周期是 0.01 秒,也即频率是 100HZ(12MHz/12/10000)。该值可以在 CONF_TNY.A51 配置文件中修改。 附注: l 可以在 RTX51 的定时滴答中断里追加自己的代码。参见 CONF_TNY.A51 配置文件。 l 关于 RTX51 Tiny 如何使用中断可以参考概述中中断一节的叙 述。 二、任务 RTX51 Tiny 本质上是一个任务切换器,建立一个 RTX51 Tiny 程 序,就 是建立一个或多个任务函数的应用程序。下面的信息可以帮助你 快速的理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数调用 . 26 isr_send_signal.. 27 os_clear_signal.. 28 os_create_task....29 os_delete_task....30 os_running_task_id............................................................................................................................31 os_send_signal...32 os_wait...............34 os_wait1.............36 os_wait2.............37
应用程序例子 ............................................................................... 45
RTX_EX1: 你的第一个RTX51程序.................................................................................................45 RTX_EX2: 一个简单的 RTX51应用程序 ...................................................................................47 TRAFFIC: 一个红绿灯控制器 ....................................................................................................49 红绿灯控制器命令 .........................................................................49 软件 ...................................................................................................................49 编译和连接TRAFFIC............................................................................62 测试并调试 TRAFFIC ...........................................................................62
Addison-Wesley Publishing Company, 1990
Ripps, David, A Guide to Real-Time Programming, Englewood Cliffs, N.J,
Prentice Hall, 1988/
Allworth, S.T., Introduction to Real-Time Software Design,
1
概述
RTX51是一个用于8051系列处理器多任务实时操作系统 RTX51可以简化那些复杂而且时间要求严格的工程的软件设计工作 有二个不同的RTX51版本可以利用 RTX51 Full 使用四个任务优先权完成同时存在时间片轮转调度和抢先的任务切换 RTX51工作在 与中断功能相似的状态下 信号和信息可以通过邮箱系统在任务之间互相传递 你可以从一存 储池中分配和释放内存 你可以强迫一个任务等待中断 超时或者是从另一个任务或中断发出的 信号或信息 RTX51 Tiny 是一个 RTX51的子集 它可以很容易地在没有任何外部存储器的单片8051系统上运 转 除了下列例外 RTX51 Tiny支持许多在 RTX51中的特征 RTX51 Tiny仅支持时间片轮转任务切换和使用信号进行任务切换 不支持抢先式的任务切换 不包括消息历程 没有存储器池分配程序 在本章其它部分所提到的 RTX51包括这两种变形 Differences between the two are so stated in the text as their need becomes applicable.
系统调试...................................................................................... 41
堆栈管理...41 用 dScope- 51调试......................................................................................................................41
Springer-Verlag Inc., New York
本用户指南包含 部分
第 1 部分 概述 描述 rtx51实时操作系统的功能并给出RTX51 Tiny和 RTX51 Full 版本的基本特征和差异 同时包括 RTX51 Full 和 RTX51 Tiny. 的 技术数据
第 部 分 系 统 需 求 和 定 义 讨论 RTX51 Tiny的开发工具和目标系统的需求 解释在 RTX51 Tiny 手册中使用的术语和任务定义的描述
要求和定义 .............................................................. 15
开发工具需求............................................................................................................ 15 目标系统需求................................................................................................................... 15 中断处理 ................................................................................................... 15 可重入功能 ................................................................................................. 16 c51库函数 ............................................................................................. 16 多数据指针和数学单元的用法 ........................................... 16 寄存器段........................................................................................................... 17 任务定义 ....... 17 任务管理 ... 17 任务切换 ........................................................................................................ 18 事件 ...................................................................................................................... 18
建立 RTX51 TINY 应用程序 ........................................................ 21
此信息可
RTX51 Tiny Co 21
编译 RTX51 Tiny程序 .......................................................................................................... 23 连接 RTX51 Tiny程序 .............................................................................................................. 23 优化 RTX51 Tiny程序......................................................................................................... 23
概述 .......................................................................................................... 7
入门 ............................................................................................................... 7 单任务程序.................................................................................................. 8 时间片轮转程序............................................................................................... 8 用 RTX51进行循环调度..................................................................... 8 RTX51事件 ........................................................................................................... 9 用 RTX51进行编译和连接 ....................................................................... 11