基于MSP430F149单片机的实时多任务操作系统

实时多任务操作系统(rtos)能有效提高嵌入式平台的资源利用效率,是嵌入式应用的必然趋势。本文阐述了笔者写的基于msp430f149的一个rtos—m430/os,它由汇编写成,短小精干,占用系统资源少,运行稳定可靠,目前已在产品上得到应用。

  关键词:rtos、任务调度、msp430

  1 rtos的基本概念

  实时多任务操作系统(rtos-real time operating system)是根据操作系统的工作特性而言的。实时是指物理进程的真实时间。实时操作系统是指具有实时性,能支持实时控制系 统工作的操作系统。首要任务是调度一切可利用的资源完成实时控制任务,重要特点是要满足对时间的限制和要求。

  实时操作系统中的任务(task)有四种状态:运行(executing),就绪(ready),挂起(suspended),休眠(dormant)。

  运行:获得cpu控制权。

  就绪:进入任务等待队列。通过调度转为运行状态。

  挂起:任务发生阻塞,移出任务等待队列,等待系统实时事件的发生而唤醒。从而转为就 绪或运行。

  休眠:任务完成或错误等原因被清除的任务。也可以认为是系统中不存在了的任务。

  某一时刻,系统中只能有一个任务在运行状态。各任务按级别通过时间片分别获得对cpu的访问权。

  rtos内核按照任务的调度机制可以分为两种:一种是占先式内核,一种是非占先式内核。

  占先式内核:当一个低优先级的任务正在运行时,一个高优先级的任务就绪,那么rtos就会把低优先级的任务挂起,来运行高优先级的任务。等高优先级的任务执行了一个循环挂起之后,再回到低优先级任务的断点继续运行。也就是说,任务的优先级越高,响应起来越及时。

  非占先式内核:当一个低优先级的任务在运行时,一个高优先级的任务就绪,rtos不会把cpu切换给高优先级的任务,必须等低优先级的任务执行了一个循环挂起之后,再由rtos根据所有就绪任务的优先级判断将cpu切到哪个任务。

  绝大多数商业rtos, 以及著名的开放源码的uc/os-ii操作系统,都采用的是占先式内核,它的优点是实时性要比非占先式内核高。

  在rtos中,一般情况下,每个任务都一无限循环,每循环一次,任务挂起一段时间,以供调度程序把这段时间交给优先级更高的其它就绪任务,让其它任务运行(如图1)。当所有任务都挂起时,rtos把任务切到空闲任务来执行。

图1 任务执行流程图

  空闲任务是一个系统任务,它一般是一个空的循环,优先级最低,也从来不会挂起。

  2 在msp430上使用rtos的意义

  一般的观点认为,msp430上使用rtos是没有意义的。这是可以理解的,因为msp430的硬件资源有限(以msp430f149为例,只有2kram),任何商业操作系统都不可能移植到msp430上。目前在msp430上得到应用的rtos,只有 uc/os-ii,但使用uc/os-ii 必须有昂贵的c编译器,这严重限制了其在msp430上的使用。

  正是基于以上情况,笔者在应用msp430过程中,编写了一个基于msp430f149的rtos,暂定名为m430/os。它占用ram量少、代码短小,稍加改动就可适用于大多数其它msp430单片机。

  在msp430单片机系统上使用m430/os,对系统有以下意义:

  1) 实现软件设计的模块化。可将不同的功能模块编制成相应的任务,由操作系统按级别调用,不必为先执行哪个功能、后执行哪个功能而费神。

  2) 更能合理、有

  • 基于MSP430F149单片机的实时多任务操作系统已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计