位置:51电子网 » 技术资料 » 其它综合

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

发布时间:2008/5/28 0:00:00 访问次数:678

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把任务切到空闲任务来执行。

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

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) 更能合理、有效地利用cpu有限的资源。按任务的重要程度安排任务的级别,能够保证最重要的任务执行得最及时。

3) 大大降低系统故障率。低优先级的任务发生阻塞时,高优先级的的任务的执行不受影响。

3 m430/os在msp430f149上的实现
3.1 功能特点
m430/os有以下特点:

1) 采用占先式内核,即高优先级的任务可以从低优先级任务"抢"回cpu控制权;

2) 每个任务都单独开辟一个任务栈;

3) 每个任务占十几到几百个字节的任务堆栈,任务栈的大小可以根据任务中现场数据、局部变量和嵌套调用的情况估算;

4) 每个任务各占一个优先级,不支持两个任务有相同的优先级;

5) 不支持信号量、邮箱功能;

6) 任务状态只有三种:运行(executing),就绪(ready),挂起(suspended);

7) 系统占用ram量=((任务个数+1)×4)+6个字节,不包括任务堆栈;

8) 代码量少,目前版本的代码共有87行汇编代码,256字节目标代码;

9) 理论最多支持126个任务;

10) 任务锁定功能:在一段低优先级的代码中,不想让操作系统把cpu权切换到别的任务,这时可以把这代码锁定,在运行这段码时,就不会引起任务切换;

11) 任务唤醒功能:在一个任务中产生一个的事件来触发其它任务运行(如果被触发的任务优先级高的话,就会马上运行)。

3.2 系统函数介绍
1) os_init:多任务初始化,进行任务栈(任务栈的结构见图3)、任务延时计数、任务状态的初始化。初始化完成后,系统直接切换到最高优先级的任务,多任务系统启动。

2) os_time_dly:把当前任务挂起一段指定

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把任务切到空闲任务来执行。

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

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) 更能合理、有效地利用cpu有限的资源。按任务的重要程度安排任务的级别,能够保证最重要的任务执行得最及时。

3) 大大降低系统故障率。低优先级的任务发生阻塞时,高优先级的的任务的执行不受影响。

3 m430/os在msp430f149上的实现
3.1 功能特点
m430/os有以下特点:

1) 采用占先式内核,即高优先级的任务可以从低优先级任务"抢"回cpu控制权;

2) 每个任务都单独开辟一个任务栈;

3) 每个任务占十几到几百个字节的任务堆栈,任务栈的大小可以根据任务中现场数据、局部变量和嵌套调用的情况估算;

4) 每个任务各占一个优先级,不支持两个任务有相同的优先级;

5) 不支持信号量、邮箱功能;

6) 任务状态只有三种:运行(executing),就绪(ready),挂起(suspended);

7) 系统占用ram量=((任务个数+1)×4)+6个字节,不包括任务堆栈;

8) 代码量少,目前版本的代码共有87行汇编代码,256字节目标代码;

9) 理论最多支持126个任务;

10) 任务锁定功能:在一段低优先级的代码中,不想让操作系统把cpu权切换到别的任务,这时可以把这代码锁定,在运行这段码时,就不会引起任务切换;

11) 任务唤醒功能:在一个任务中产生一个的事件来触发其它任务运行(如果被触发的任务优先级高的话,就会马上运行)。

3.2 系统函数介绍
1) os_init:多任务初始化,进行任务栈(任务栈的结构见图3)、任务延时计数、任务状态的初始化。初始化完成后,系统直接切换到最高优先级的任务,多任务系统启动。

2) os_time_dly:把当前任务挂起一段指定

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!