在51系列单片机上实现非抢先式消息驱动机制的RTOS
电子元件,电子元器件深圳市创唯电子有限公司
您现在的位置: 首页 > 电子技术
在51系列单片机上实现非抢先式消息驱动机制的RTOS  2012/3/1
在51系列单片机上实现非抢先式消息驱动机制的RTOS 厦门大学许俊许克平 摘要针对51系列单片机的特点,用面向对象的思维方法,构造一个基于非抢先式消息驱动机制的RTOS。具体阐述RTOS中消息的封装和消息队列、主循环、消息的获取和发送、定时处理以及核心管理模块的构成。 关键词单片机RTOS面向对象消息队列定时处理 8051单片机在中小型应用场合相当常见。在20世纪80年代中期,Intel公司将8051内核使用权以专利互换或出售的形式转让给
在51系列单片机上实现非抢先式消息驱动机制的RTOS 厦门大学许俊许克平 摘要针对51系列单片机的特点,用面向对象的思维方法,构造一个基于非抢先式消息驱动机制的RTOS。具体阐述RTOS中消息的封装和消息队列、主循环、消息的获取和发送、定时处理以及核心管理模块的构成。 关键词单片机RTOS面向对象消息队列定时处理 8051单片机在中小型应用场合相当常见。在20世纪80年代中期,Intel公司将8051内核使用权以专利互换或出售的形式转让给世界上许多著名的IC制造商,使得8051成为众多厂商支持的、发展出上百种品种的大家族;同时由于8051单片机是进入中国市场最早的单片机之一,在国内有众多的仿真器开发商支持51系列单片机,大多数的终端产品公司也大量应用51系列单片机作为产品的开发,使得51系列单片机在国内成为开发中小嵌入式系统的首选单片机之一。由于一些知名的软件开发商开发出比较可靠的面向51系列单片机的C级编译器和RTOS,在RTOS的支持下,可以应用51系列单片机开发出可靠性高、实时性强的较大型程序代码,应用于更多要求较高的场合。 商品化的51系列RTOS中,有代表性的是Franklin公司设计的RTX51。它根据RTOS内核的大小分为迷你版本、标准版本和专业版本。RTX51是一种抢先式的多任务操作系统,可以设置0~3共4级优先级,实时性很强,功能齐全。可以供用户调用的服务(函数)有3类:系统服务、信息服务和功能服务。各个任务之间的参数传递是通过邮箱操作(包含在功能服务中)来实现的。但是这样的一个操作系统对于大多数应用,过于复杂,特别是对于各个任务之间的参数传递必须使用邮箱操作来实现,需要使用外部数据存储器和300字节左右的额外代码量。迷你版本(含标志传送功能)就有700字节左右的代码量,而且分配给每个任务的内部RAM默认为8个字节。TINY版本的RTX51最多可以允许16个任务运行,这样对于内部RAM的分配变得非常困难。 笔者在某刊物上看到另外一种51单片机的RTOS,实际上是设置几个标志位。将中断产生的标志作为消息,在主程序中不断地查询这些标志位。当查询到某个标志位改变时,就调用相应的模块。首先,这种方式不是严格意义上的消息驱动机制,而且对于各个模块之间的参数传递没有定义,不利于功能模块的划分;此外,由于标志位的查询是顺序进行的,例如当某个中断发生,设置了标志位BIT0和BIT4,假设标志位的查询顺序是从BIT0开始的,本来按照正常次序要先执行模块0和模块4,但是在运行模块0时有另一个中断发生,设置了标志位BIT2,造成模块2比模块4先执行,这样就有可能造成不可预料的后果。 基于非抢先式消息驱动机制的RTOS是采用面向对象的思维方法,把各个功能模块看成是不同的对象,对象之间的通信称为发送消息。对象包含自己的数据和代码,数据表征对象的特征,代码用于相应消息,使对象进行某些动作。对象响应消息进行处理时不被中断,消息没有优先级之分,除非是中断到来,即消息驱动是非抢先式的。OS严格按照消息队列的顺序来“唤醒”相应的对象。基于非抢先式消息驱动机制的RTOS的系统运行框图如图1所示。 图1基于非抢先式消息驱动机制的 RTOS的系统运行框图这样做有几个好处: (1) 绝大多数的应用场合下,“实时性”只是体现在对外部事件的及时响应和对数据的即时接收或者发送。这可借助于51单片机的中断来实现。在中断处理程序中,单片机只对外部事件作必要的处理或者只是将接收数据放到预定的缓冲区立即返回,同时向消息队列发送一条消息通知操作系统。 (2) 采用面向对象的思维方法有利于模块的划分。在多人协同编写1个软件的时候显得尤为重要。它使得负责单个模块的软件设计人员只需要关心自己的那一个部分(当然管理模块除外),各个功能模块的交互是透明的。 (3) 具备相当的通用性。如果需要增加新的功能模块,只需要编写新模块的代码,在OS中增加新模块的标志ID号,而其他部分可以保持不变。 下面详细阐述RTOS的构成。 1 消息的封装和消息队列 基于非抢先式消息驱动机制的RTOS,消息由4个部分组成:TASKID、COMMAND、PARA1、PARA2。其中,TASKID标志功能模块号,OS中的消息循环根据TASKID来确定这个消息是发送给哪个功能模块的,占用1个字节;COMMAND指示该功能模块执行什么样的操作,占用1个字节;PARA1和PARA2是向该功能模块传递的参数(如果需要的话),各占用1个字节的空间。 这样一个消息占用4个字节的内部RAM,消息队列可以容纳10条消息(消息队列的大小可以视具体情况而定),借助2个指针:WPTR、RPTR。当WPTR=RPTR时,表示此时消息队列中没有消息,一
与《在51系列单片机上实现非抢先式消息驱动机制的RTOS》相关列表
电话:400-900-3095
QQ:800152669
库存查询
Copyright(C) 2011-2021 Szcwdz.com 创唯电子 版权所有 备案号:粤ICP备11103613号
专注电子元件代理销售  QQ:800152669  电子邮件:sales@szcwdz.com  电话:400-900-3095