张崇的外文翻译.docx
- 文档编号:28180013
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:29
- 大小:128.11KB
张崇的外文翻译.docx
《张崇的外文翻译.docx》由会员分享,可在线阅读,更多相关《张崇的外文翻译.docx(29页珍藏版)》请在冰豆网上搜索。
张崇的外文翻译
毕业设计(论文)外文资料翻译
嵌入式实时操作系统RTX-51的研究
学生姓名:
班级:
电自047
学号:
指导教师:
所在单位:
答辩日期:
2008年6月23日
附件1:
外文资料翻译译文
RTX-51实时操作系统
RTX51是一个适用于8051家族的实时多任务操作系统。
RTX51使复杂的系统和软件设计以及有时间限制的工程开发变得简单。
RTX51是一个强大的工具,它可以在单个CPU上管理几个作业(任务)。
RTX51有两种不同的版本:
RTX51Full允许4个优先权任务的循环和切换,并且还能并行的利用中断功能。
RTX51支持信号传递,以及与系统邮箱和信号量进行消息传递。
RTX51的os_wait函数可以等待以下事件:
中断、时间到、来自任务或中断的信号、来自任务或中断的消息、信号量。
RTX51Tiny是RTX51Full的一个子集。
RTX51Tiny可以很容易的运行在没有扩展外部存储器的单片机系统上。
但是,使用RTX51Tiny的程序可以访问外部存储器。
RTX51Tiny允许循环任务切换,并且支持信号传递,还能并行的利用中断功能。
RTX51Tiny的os_wait函数可以等待以下事件:
时间到、时间间隔、来自任务或者中断的信号。
以后的部分用RTX-51来指代RTX-51Full和RTX-51Tiny。
在两者之间不同的地方会加以说明。
导言
许多微处理器应用都需要同时执行多个作业或者任务。
对于这种应用,一个实时的操作系统(RTOS)允许系统资源(CPU、内存等)被灵活的分配给几个任务。
RTX-51是一个强大的实时操作系统,并且易于应用。
RTX-51可以工作在8051系列的微处理器上。
你使用标准C语言编写RTX-51应用程序,并且用C51来编译它们。
为了具体指明任务的标志和优先级,会与标准C存在一点差别。
RTX-51应用程序要求你将RTX51.H或者RTX51TNY.H头文件包含进来。
当你在μVision2集成环境里打开目标选项对话框,选择目标操作系统以后,链接器便会添加合适的RTX-51库文件。
单任务程序
一个标准C程序从主函数开始执行。
在嵌入式应用里,主函数经常被编写为一个无穷循环,也可以被认为是一个连续执行的单个任务。
例如:
循环任务切换
RTX51Tiny允许“准并行”的同时执行几个任务。
每一个任务在预先定义好的时间片内得以执行。
时间到使正在执行的任务挂起,并使另一个任务开始执行。
下面的例子使用了循环任务切换的技术。
使用RTX51的C程序例子
RTX51从任务0(分配给作业0)开始执行程序。
os_create_task函数标记任务1(分配给作业1)为准备执行。
这两个任务是简单的计数循环。
在一个时间片结束后,RTX51中断作业0,并且开始执行作业1。
作业1在一个时间片结束后,系统重新开始执行作业0。
os_wait函数
os_wait函数提供了一种更为有效的方式来给几个任务分配可使用的处理器时间。
os_wait函数中断当前正在运行的任务,并且等待特定的事件。
在一个任务等待事件的时间里,其他任务可以被执行。
等待时间到
RTX51使用8051的一个定时器来产生一个循环的中断(时钟周期)。
响应os_wait的最简单事件是时间到,当前正在执行的任务被指定的时钟周期所中断。
下面的延时例子使用的是时间到。
使用os_wait函数编程
这个程序与上一个程序相似,不同的是作业0是在计数器0完成计数后os_wait函数所中断的。
RTX51等待3个时钟周期直到作业0准备好再次运行为止。
在这期间,作业1得以执行。
作业1也调用了os_wait函数,等待5个时钟周期。
结果是:
定时器0每三个时钟周期增加一次,计数器1则每5个时钟周期增加一次。
等待信号
os_wait函数的另一个事件是信号。
信号被用来协调任务。
直到另一个任务发出信号,在os_wait函数控制下的任务才结束等待状态。
如果信号预先就被发送出来,那么任务将立即继续执行。
使用等待信号的程序
在这个例子当中,任务1等待着由任务0发出的信号,并且以此来处理计数器0产生的溢出。
抢先任务切换
RTX51Full提供了抢先的任务切换,RTX51Tiny不具备这个功能。
为了对多任务的概念有一个完整的了解,在这里对抢先任务切换加以解释。
在上一个例子中,任务1收到一个信号后不会立即开始,只有当任务0发生了时间到事件后,任务1才会启动。
如果任务1被赋予了比任务0高的优先级,通过抢先任务切换,如果任务1收到了信号,就会立即开始。
优先级在任务定义中被指定(默认的优先级是0)。
RTX51的技术参数
描述
RTX-51Full
RTX-51Tiny
任务数量
最多256个;可同时激活19个
16个
RAM需求
40到46字节DATA空间
20到200字节IDATA空间(用户堆栈)
最小650字节XDATA空间
7字节DATA空间
3倍于任务数量的IDATA空间
代码要求
6KB到8KB
900字节
硬件要求
定时器0或定时器1
定时器0
系统时钟
1000到40000个周期
1000到65535个周期
中断请求时间
小于50个周期
小于20个周期
任务切换时间
70到100个周期(快速任务)
180到700个周期(标准任务)取决于
堆栈的负载
100到700个周期
取决于堆栈的负载
邮箱系统
8个分别带有整数入口的信箱
不提供
内存池
最多16个内存池
不提供
信号量
8*1位
不提供
RTX51程序概览
下列表格里列出了RTX51的一些函数,并带有简要的说明和执行时间(针对RTX51Full)。
函数
描述
CPU周期
isr_recv_message
收到消息(来自中断调用)
71(具有消息)
isr_send_message
发送消息(来自中断调用)
53
isr_send_signal
给任务发去信号(来自中断调用)
46
os_attach_interrupt
分配中断资源给任务
119
os_clear_signal
删除一个以前发送的信号
57
os_create_task
将一个任务放入执行队列中
302
os_create_pool
定义一个内存池
644(大小20*10字节)
os_delete_task
从执行队列中移走一个任务
172
os_detach_interrupt
移走一个分配的中断
96
os_disable_isr
禁止8051硬件中断
81
os_enable_isr
允许8051硬件中断
80
os_free_block
归还一块存储空间给内存池
160
os_get_block
从内存池获得一块存储空间
148
os_send_message
发送一条消息(从任务中调用)
443(具有任务切换)
os_send_signal
向任务发送一个信号(从任务中调用)
408(具有任务切换)
316(具有快速任务切换)
71(没有任务切换)
os_send_token
发送一个信号量(从任务中调用)
343(具有快速任务切换)
94(没有任务切换
os_set_slice
设置RTX51系统时钟时间片
67
os_wait
等待事件
68(用于等待信号)
160(用于等待消息)
标记的函数仅仅在RTX51Full中具备
RTX51Full里附加的调试和支持函数见下表:
函数
描述
oi_reset_int_mask
禁止RTX-51的外部中断资源
oi_set_int_mask
允许RTX-51的外部中断资源
os_check_mailbox
返回指定信箱的状态信息
os_check_mailboxes
返回所有的系统信箱的状态信息
os_check_pool
返回内存池中的块信息
os_check_semaphore
返回指定信号量的状态信息
os_check_semaphores
返回所有的系统信号量信息
os_check_task
返回指定任务的状态信息
os_check_tasks
返回所有的系统任务的状态信息
CAN函数
CAN函数仅在RTX-51Full中提供。
CAN控制器支持非利浦82C200和80C592以及英特尔82526。
更多的CAN控制器正在准备中。
CAN函数
描述
can_bind_obj
为一个任务绑定一个对象;当对象被接收的时候,任务启动
can_def_obj
定义通信对象
can_get_status
获取CAN控制器状态
can_hw_init
初始化CAN控制器硬件
can_read
直接读取一个对象的数据
can_receive
接收所有无界的对象
can_request
向一个指定的对象发送一个远程帧
can_send
通过CAN总线发送一个对象
can_start
开始CAN通信
can_stop
结束CAN通信
can_task_create
创建CAN通信任务
can_unbind_obj
断开任务和对象之间的绑定
can_wait
等待一个约束的对象被接收
can_write
向一个对象写入新数据,不用发送
TRAFFIC:
使用RTX-51Tiny的例程
TRAFFIC例程是一个行人信号灯控制器,通过它来说明多任务实时操作系统RTX-51Tiny的应用。
在一个用户定义的时间段里,交通灯受到控制。
在时间段以外,黄色灯闪烁。
如果一个步行者按下了请求按钮,交通灯立即进入行走状态。
否则,交通灯持续不断的工作。
交通灯控制器命令
下表列出了TRAFFIC所支持的一系列命令。
这些命令由ASCII文本字符构成。
所有的命令必须以回车符来终止。
命令
连续的文本
描述
Display
D
显示时钟,开始和结束时间
Time
Thh:
mm:
ss
设置当前时间为24小时格式
Start
Shh:
mm:
ss
设置开始时间为24小时格式。
交通控制通常在开始和结束的
时间段里操作,在此时间段以外,黄色灯闪烁。
End
Ehh:
mm:
ss
设置结束时间为24小时格式
软件
TRAFFIC应用程序由3个文件组成,这些文件可以\KEIL\C51\EXAMPLES\TRAFFIC
文件夹里找到。
TRAFFIC.C包含了交通灯控制程序,被分成了如下几个任务:
⏹任务0初始化:
初始化串口,并且启动所有其他的任务。
由于初始化只需要进行一次,任务0将自己删除自己。
⏹任务1命令:
任务1完成交通灯控制器的命令处理。
这个任务负责控制和处理接收到的串行命令。
⏹任务2时钟:
控制时钟。
⏹任务3闪烁:
当时间落在活跃的时间段以外后,黄色灯闪烁。
⏹任务4灯:
当时间落在活跃的时间段(在开始和结束时间之间)里以后,控制交通灯的相位。
⏹任务5读按键:
读取行人按下的按钮,并且向任务4发送信号。
⏹任务6退出:
如果在串行指令流里遇到了ESC字符,任务1获得一个信号,并且终止显示命令。
SERIAL.C执行一个中断来驱动串行口。
这个文件包含了函数putchar和getkey。
高级的输入输出函数printf和getline调用这些基本的输入输出子函数。
没有中断驱动串行输入输出,交通灯应用程序也会启动,但不会完成任务。
GETLINE.C是一个命令行编辑器,用来编辑从串口接收到的字符。
这个源文件也被测量应用程序所使用。
TRAFFIC工程
在μVision2环境里,打开位于\KEIL\C51\EXAMPLES\TRAFFIC文件夹里TRAFFIC.UV2文件。
在工程窗口的文件页里将会看到源文件。
在目标选项里选择RTX-51TinyReal-TimeOS。
选择工程——编译或者工具栏上的编译按钮,编译TRAFFIC程序。
运行TRAFFIC程序你可以使用μVision2里的仿真来测试TRAFFIC应用程序。
下图的变量观察窗口允许你观察驱动交通灯的端口状态。
push_key信号函数模拟行人按下按钮,切换交通灯进入行走状态。
这个函数被称为按下以通过工具按钮。
使用调试——函数编辑器,打开TRAFFIC.INC文件。
在目标选项——调试——初始化文件里选择这个文件,并且定义信号函数push_key,端口初始化和按钮工具栏。
注意:
因为在TRAFFIC.C模块里有一个叫时钟的函数,所以VTREG符号Clock后面跟一个后引号(’)。
现在运行TRAFFIC应用程序。
允许查看—周期窗口更新,在程序执行期间,通过观察窗口查看交通灯。
1号串口窗口显示了printf的输出,并且允许你输入下表里描述的交通灯控制器的命令。
设置时间在开始/结束时间段以外,让黄色灯闪烁。
RTX内核调试
一个RTX应用程序能够使用同标准8051应用程序相同的方法和命令进行测试。
当你在目标选项—目标里选择了一种操作系统,μVision2能够允许附加的调试特性:
一个对话框列出了操作系统状态,并且当一个任务是活跃的时候,你可以应用_TaskRunning_调试函数来终止程序的运行。
下面的部分通过TRAFFIC例程来解释RTX的调试。
停止程序的运行,复位CPU,取消所有断点。
一个RTX-51应用可以象标准应用一样使用相同的方式来测试。
你可以打开源文件,设置断点,单步执行。
TRAFFIC应用从任务0初始化开始启动。
通过μVision2可以完全清楚的了解内核。
你可以使用菜单命令外设—RTXTiny任务列表来显示任务状态。
对话框RTXTiny任务列表向你显示了如下信息:
头
描述
TID
在任务函数定义里使用task_id
TaskName
任务函数名字
State
函数的任务状态;在下一个表里详细解释。
Waitfor
任务等待的事件;下列事件是可能的(也可以是复合事件)
Event
时间到:
任务计时器被设置为持续的时间,该时间在os_wait函数调用中被指定。
当计时器减为0以后,任务便进入准备状态.
时间间隔:
任务计时器值被设置为时间间隔,该时间间隔在os_wait函数调用中被指定。
当计时器减为0以后,任务便进入准备状态.
信号:
os_wait函数被K_SIG调用,并且任务等待SIG=1。
Sig
分配给任务的信号位的状态
Timer
分配给任务的计时器的值。
计时器值在每一个RTX系统时钟周期后减1。
如果计时器的值变为0,并且任务等待时间到或时间间隔事件,那么任务进入准备状态。
Stack
当任务运行时,被使用的堆栈指针(SP)的值
RTX-51Tiny包含了一个有效地堆栈管理器,该管理器在“RTX51Tiny”用户指南第五章:
RTX51Tiny,堆栈管理器中被解释。
该手册提供了详细的堆栈值的信息。
状态
描述
Deleted
尚未启动的任务处于删除状态。
Ready
等待执行的任务处于准备状态。
当正在进行的任务结束后,RTX启动下一个处在准备状态下的任务。
Running
当前正在运行的任务处于运行状态,在同一时刻,仅仅有一个任务处于运行状态。
Timeout
被循环任务切换时间到事件所中断的任务处于时间到状态,这个状态与等待状态等价;但是,循环任务切换是根据内部的操作过程被标记的。
Waiting
等待事件的任务处于等待状态。
如果一个任务正在等待的事件发生了,该任务就进入准备状态。
只有当在_TakRunning_调试函数声明里指定的任务正在运行时,调试—断点对话框允许你定义停止程序运行的断点。
参考“预定义函数”,可以找到关于_TakRunning_调试函数的详细描述。
仅仅当此刻正在运行的任务是灯的时候,在signalon函数里的断点才会停止程序的执行。
附件2:
外文原文(复印件)
RTX-51Real-Time
OperatingSystem
RTX51isamultitaskingreal-timeoperatingsystemforthe8051family.RTX51simplifiessystemandsoftwaredesignofcomplexandtime-criticalprojects.RTX51isapowerfultooltomanageseveraljobs(tasks)onasingleCPU.TherearetwodistinctversionsofRTX51:
RTX51Fullwhichperformsbothround-robinandpreemptivetaskswitchingwith4taskprioritiesandcanbeoperatedwithinterruptfunctionsinparallel.RTX51supportssignalpassing;messagepassingwithamailboxsystemandsemaphores.Theos_waitfunctionofRTX51canwaitforthefollowingevents:
interrupt;timeout;signalfromtaskorinterrupt;messagefromtaskorinterrupt;semaphore.RTX51TinywhichisasubsetofRTX51Full.RTX51Tinyeasilyrunsonsingle-chipsystemswithoutoff-chipmemory.However,programusingRTX51Tinycanaccessoff-chipmemory.RTX51Tinyallowsround-robintaskswitching,supportssignalpassingandcanbeoperatedwithinterruptfunctionsinparallel.Theos_waitfunctionofRTX51Tinycanwaitforthefollowingevents:
timeout;interval;signalfromtaskorinterrupt.TherestofthissectionusesRTX-51torefertoRTX-51FullandRTX-51Tiny.Differencesbetweenthetwoarestatedwhereapplicable.
Introduction
Manymicrocontrollerapplicationsrequiresimultaneousexecutionofmultiplejobsortasks.Forsuchapplications,areal-timeoperatingsystem(RTOS)allowsflexibleschedulingofsystemresources(CPU,memory,etc.)toseveraltasks.RTX-51implementsapowerfulRTOSthatiseasytouse.RTX-51workswithall8051derivatives.
YouwriteandcompileRTX-51programsusingstandardCconstructsandcompilingthemwithC51.OnlyafewdeviationsfromstandardCarerequiredinordertospecifythetaskIDandpriority.RTX-51programsalsorequirethatyouincludetheRTX51.HorRTX51TNY.Hheaderfile.WhenyouselectintheμVision2dialogOptionsforTarget-Targettheoperatingsystem,thelinkeraddstheappropriateRTX-51libraryfile.
SingleTaskProgram
AstandardCprogramstartsexecutionwiththemainfunction.Inanembeddedapplication,mainisusuallycodedasanendlessloopandcanbethoughtofasasingletaskthatisexecutedcontinuously.Forexample:
Round-RobinTaskSwitching
RTX51Tinyallowsaquasi-parallel,simultaneousexecutionofseveraltasks.Eachtaskisexecutedforapredefinedtimeoutperiod.Atimeoutsuspendstheexecutionofataskandcausesanothertasktobestarted.Thefollowingexampleusesthisround-robintaskswitchingtechnique.
SimpleCProgramusingRTX51
RTX51startstheprogramwithtask0(assignedtojob0).Thefunctionos_create_taskmarkstask1(assignedtojob1)asreadyforexecution.Thesetwofunctionsaresimplecountloops.Afterthetimeoutperiodhasbeencompleted,RTX51interruptsjob0andbeginsexecutionofjob1.Thisfunctioneven
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 外文 翻译