老古开发网首页
导航:老古开发网首页文章索引索引第2287页文章分类技术文章第22页→[基于RTOS的面向对象的编程方法]
| -文章搜索 - 最新文章 - |

第10345篇:基于RTOS的面向对象的编程方法

发布时间:2006年8月30日 点击次数:1994
来源:   作者:东南大学 徐东方 胡仁杰
 

摘要 在嵌入式系统中使用RTOS是大势所趋。这种多任务实时操作系统一方面可以提高系统的实时处理能力,另一方面可以提高开发效率,也能提高软件的可维护性。本文以RTOS的简化版本Small RTOS51为开发平台,以电子短跑仪为实例,提出面向对象的编程方法。

关键词 嵌入式系统 RTOS 面向对象 任务分配 任务通信 电子短跑测试仪

引言
实时操作系统(RTOS)是一段在嵌入式系统启动后首先执行的背景程序。用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务要求,进行资源管理、消息管理、任务调度和异常处理等工作。在RTOS支持的系统中,每个任务均有一个优先级。RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。
对于前后台系统,任务是顺序运行的,是一种过程性编程,比较容易实现;但对于RTOS,任务是以分时方式运行的,看上去好像是多个任务“同时”运行。基于RTOS编程,需要掌握任务的分配方法以及如何在任务间进行通信与同步。本文提出的面向对象的编程方法就是一种行之有效的方法。
1Small RTOS51简介
Small RTOS51是在周立功网站上发布的一款源代码公开的,针对51单片机小RAM系统设计的占先式实时操作系统,可以说是μC/OSII的简化版。基于Small RTOS51的任务之间的通信与同步可用图1、图2来描述。
其中:
(a) 信号量——(1)作为任务之间的互斥方法,(2)同步方法,(3)作为计数器。
图1信号量管理示意(b) 消息队列——用于任务之间传递多个数据。
2电子短跑测试仪简介
电子短跑测试仪是电子体能测试仪的一部分,它的功能描述如下:
① 基于IC卡进行身份识别和数据采集的测试仪,起点与终点间采用无线电进行数据传输。
② 人机接口部分有8个数码管(主画面显示),2个发光二极管(电池欠压指示与测试状态指示),4个按键(自检、查询、测试),1个蜂鸣器(信号提示),1个IC卡插槽(识别SLE4442测试卡和Atmel 24C64数据汇总卡)。
③ 完整的测试步骤——将测试卡插入IC卡插槽内,数码管显示学号,按测试键启动测试,蜂鸣器模拟起跑信号,同时开始计时,直到收到终点线传感器发来的无线电信号后结束测试。之后,分别在测试卡与机内E2PROM中保存测试成绩。
④ E2PROM内存储的数据可以用数据汇总卡取出,在上位机管理软件中作进一步处理。
3面向对象的编程
步骤一: 发现对象
根据上述对电子短跑仪的描述和需求文档,写出所有
图2消息队列管理示意可作为候选类的名词如下:
【IC卡】、【测试仪】、【数码管】、【发光二极管】、【电源】、【按键】、【蜂鸣器】和【E2PROM】。
【IC卡】有两种,虽然占用相同的I2C总线,但驱动程序不一样,需要作为两个对象。
【测试仪】可以把测试仪作为一个虚拟主控对象,用来管理所有的对象。这样做的好处是具有很高的可复用性和很低的耦合度,但增加了管理的复杂性,不建议这样做。
【按键】虽然有4个,但它们都是触发不同功能的按钮,并没有什么内在的不同,可以合并为一个对象。
其他的都可以分别作为一个对象。
步骤二: 识别责任
举个例子,【蜂鸣器】的责任是打开蜂鸣器,设定鸣叫的频率、鸣叫的时间,关闭蜂鸣器。其他的对象限于篇幅,不再详述。
步骤三: 描述行为
实际上,现在要寻找系统提供的服务,并通过为在系统中的对象分配工作来决定怎样提供这些服务。在决定如何分配工作时,建议使用UML顺序图。
图3测试程序UML顺序图图4任务间通信示意图举个例子,当按下【测试键】启动测试后,过程如下:① 测试状态灯亮; ② 延时3 s,若收到抢跑信号退出测试;表1
驱动方式〖〗对象〖〗备注使用任务〖〗8个数码管,4个按键电源蜂鸣器2个发光二极管〖〗数码管刷新,按键扫描,
需周期服务电池欠压,充电管理,自动关机,需周期服务因调用频率高,可作为一个任务来处理因调用频率高,可作为一个任务来处理使用消息
队列〖〗无线接收〖〗将接收到的数据送到消息队列中使用
信号量〖〗E2PROM 24C256IC卡 24C64,4442〖〗共享资源,需要互斥;
为写操作和读操作分配不同的消息队列
③ 蜂鸣器模拟枪声鸣叫;④ 启动计时器,数码管显示测试时间;⑤ 收到结束信号后退出测试;⑥ 保存测试成绩。顺序图如图3所示。
步骤四: 为对象编写驱动程序
① 使用任务编写驱动程序。有一些设备需要CPU周期为其服务,典型的就是扫描显示和扫描键盘。可以给它们分配相应的任务,与用户任务一起调度。
② 使用消息队列编写驱动程序。有一些设备具有自己的中断,典型的是串口输出。可以利用消息队列将用户任务需要的服务通过消息队列排队、缓冲起来,利用中断功能依次服务。
③ 使用信号量编写驱动程序。有一些设备既不需要CPU的周期服务,又不具有自己的中断,典型的是全局变量、模拟I2C总线等。可以利用信号量的互斥功能实现对共享资源的保护。
步骤五: 任务分配及任务间通信
① 任务的初次分配。把所有对象按驱动方式列成表格,初次分配得到4个基本任务,如表1所列。
② 任务的再次分配。如果系统比较复杂,需要在基本的任务上再扩展出一些任务。在本方案中,扩展了按键预处理任务、串口接收任务、显示管理任务。在按键预处理任务中,增加了对按键去抖,组合键,连击键的支持,键命令解释等;在串口接收任务中,增加了对通信协议的处理;在显示管理任务中,实现了对主画面显示,错误提示,查询界面等管理。
③  任务间的通信。经过以上的多步分析,得到任务分配及通信示意图,如图4所示。
在图4的基础上,就可以根据具体的RTOS比较方便地进行软件的开发了。
结语
基于RTOS编程虽然增加了系统硬件开销,但随着现代半导体工艺的迅速发展,使得硬件的性能在不断地提升而成本在不断地下降。这就意味着作为一个嵌入式系统工程师,需要关注更多的是软件开发。面向对象开发具有减少费用、开发产品所需时间短的优势,并在开发过程中具有灵活性。
参考文献
1陈明计,周立功. 嵌入式实时操作系统Small RTOS51原理及应用. 北京:北京航空航天大学出版社,2004
2Labrosse Jean J.  嵌入式实时操作系统μC/OSII. 北京:北京航空航天大学出版社,2003
3Richard C. Lee William M. Tepfenhart C++面向对象开发. 北京:机械工业出版社,2002


欢迎进入老古论坛进行讨论
[技术文章] 相关文章:
嵌入式浏览器Konqueror/embedded的技术分析
简介:
摘要 分析嵌入式浏览器Konqueror/embedded实现的关键技术;讨论Kparts组件技术、I/O-Slave机制以及DOM技术在Konqueror/embedded中的运用;结合Konqueror/embedded在以Motorola i.MX1为核心的嵌入式系统中移植和开发的问题,讨论Konqueror/embedded的移植和汉化技术。 关键词 Kparts I/O-Slave DOM 移植 汉化 1Konqueror/embedded概述 目前,嵌入式浏览器已经......

人工神经网络在ARM平台上的应用
混合扩频通信系统的硬件平台设计
什么是电磁炉
24位Σ-Δ模数转换器CS1240在电子秤中的应用(图)
 
下一个:[新闻热点]联想携手Novell Linux登陆ThinkPad笔记本
简介:
Linux开放资源操作系统终于将登上笔记本平台,甚至将一步登天的被整合入笔记本市场的宝马:联想ThinkPad。据悉,在本周二召开的LinuxWorld大会上,中国联想和Novell共同表示,将在联想ThinkPad T60p笔记本电脑中,整合Novell旗下的Suse Linux企业版 Desktop 10。 据悉,这批整合开放资源操作系统的笔记本产品,将主要针对工程师和高端用户,不过普通用户也同时可以购买。另一方面,联想公司还将加强对Lin......

上一个:[新闻热点]美国政府彻查所有索尼型号笔记本电脑电池

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:47毫秒