3、基于RTX51 Tiny的应用软件设计指导
RTX51是一个德国Keil Software公司开发的用于8051系列单片机的多任务实时操作系统[4]。RTX51有2个不同的版本。
(1)完全版RTX51 Full
完全版RTX51 Full允许4个优先级的任务时间片轮转调度和抢先式的任务切换,可以并行地利用中断功能。信号和信息可以通过邮箱系统在任务之间互相传递,可以从一个存储池中分配和释放内存,可以强迫一个任务等待中断、超时以及从另一个任务或中断发出的信号或信息。
(2)小型版RTX51 Tiny
小型版RTX51 Tiny是RTX51的一个子集,它可以很容易地在没有任何外部存储器的单片8051系统上运行。RTX51 Tiny仅支持时间片轮转任务切换和使用信号进行任务切换,不支持抢先式的任务切换,可以并行地利用中断功能,可以强迫一个任务等待中断、超时以及从另一个任务或中断发出的信号,不能进行信息处理,也不支持存储器分配或释放。RTX51 Tiny是一种不可剥夺型实时操作系统内核。
基于RTX51 Tiny实时操作系统的单片机应用软件设计,首先应该根据RTX51 Tiny操作系统的准并发特性,对应用软件要实现的功能进行大小适当的划分——按照上述3个原则划分为若干个任务模块,并对各个任务间的通信和时延进行仔细的确认。
编写基于RTX51 Tiny的应用软件的指导方针如下:
① 包含头文件rtx51tny.h在应用程序中。
② 不要写C语言主函数main()。RTX51 Tiny操作系统内核中已经有它自己的主函数main()。
③ 应用程序应该至少包括1个任务函数(task function)。
④ RTX51 Tiny应用程序必须中断使能(EA=1),因为RTX51 Tiny操作系统使用了定时器T0中断。
⑤ 应用程序至少调用1个RTX51 Tiny系统函数(如os_wait);否则,链接器将不会把RTX51 Tiny的系统库包含到应用程序中。
⑥ 任务task0是应用程序中第一个执行的函数。在任务task 0中,必须调用os_create_task函数来运行其他任务。
⑦ 任务task函数不必退出或返回。任务task必须使用一个while(1)结构或其他类似的结构。任务task函数不带参数,也没有返回值。使用系统函数os_delete_task挂起(halt)一个运行的任务。
⑧ 中断服务程序的编写方式,与不使用RTX51 Tiny操作系统下的编写方式相同。
⑨ 编译和链接应用程序有2种途径,一种是使用集成开发环境μVision 2 IDE,另一种是使用命令行工具CommandLine Tools。一般采用德国Keil Software公司提供的集成开发环境 μVision 2 IDE。
利用Keil Software公司提供的集成开发环境 μVision 2 IDE,创建RTX51 Tiny应用程序的开始的步骤如下:
① 运行Keil Software公司的集成开发环境 μVision 2 IDE。
② 运行菜单命令Project→Options for Target‘Target 1’,打开Target对话框,并在对话框中选择Target选项卡。
③ 从Operating system下拉列表框中选择RTX51 Tiny,如图1所示。
图1 选择RTX51 Tiny实时操作系统
4、结论
本文给出了划分任务的3个原则,分别是“对同一个外设的访问放在一个任务中”、“通过任务分割提高系统的实时性”和“软件工程中的‘解耦原则’用于任务的划分”。实践证明,这些任务划分的原则是行之有效的。另外,从实用的角度给出了编写基于RTX51 Tiny实时操作系统应用软件的指导方针。实际上,RTX51 Tiny实时操作系统对目标系统的硬件需求是很低的,随着半导体技术的发展,能够运行嵌入式实时操作系统的单片机芯片是很容易采购得到的。
人们越来越清楚地认识到,在嵌入式系统设计中引入实时操作系统的必要性[5]。在许多嵌入式系统中,不但要求系统能够及时响应随机发生的外部事件,并对其作出快速处理,通常还需要同时执行多个任务,并对每个任务作出实时响应。实践证明,对于这样的应用,采用嵌入式实时操作系统作为应用软件的设计平台和运行平台是一个良好的选择。
参考文献
[1]晨风.嵌入式实时多任务软件开发基础[M].北京:清华大学出版社,2004 63-64. [2]吴迪,郝军,沙毅,等.嵌入式系统原理、设计与应用[M].北京:机械工业出版社,2005310-315. [3]张海藩.软件工程导论[M]. 第4版.北京:清华大学出版社,2003 87-89. [4]KEIL Software Inc. RTX51 Real-time Kernel[OL]. http www. keil. com rtx51,2004. [5]刘明路,王亮生,李世煜.基于RTX51的单片机软件设计[J].单片机与嵌入式系统应用,2002,(12):35-37.
|