主页 文档 下载 莱特 沙龙 English

RTESM文档
RTEMS精彩应用
RTEMS版权说明
其他RTOS
ARM/DSP专区
AVR/FPGA/PCB
嵌入式文件系统
ARM AVR仿真器DIY
莱特电子工作室
联系我们
 


构建任务属性

作者 Ray

RTEMS版权所有,转载请注明来源www.rtems.net,作者Ray

9.2.9: 构建任务属性集合

任务的属性集是通过对制定位进行位运算实现。在RTEMS中预定义了下面的任务属性:

RTEMS_NO_FLOATING_POINT-不使用浮点协处理器(默认)

RTEMS_FLOATING_POINT-使用数值协处理器

RTEMS_LOCAL-本地任务(默认)

RTEMS_GLOBAL-全局任务(可以在多个处理器间切换)

上面给出的各个属性是互斥的(也就是正交的单位向量),因此,可以使用按位的或运算和算术加法运算实现属性的叠加。一般来说,RTEMS会为任务初始化缺省的任务属性集合。但是一个训练有素程序员应该为他创建的任务设定初始值。如果的确想照搬系统的默认选项,将任务属性集合赋值为RTEMS_DEFAULT_ATTRIBUTES。

下面的例子是为一个本地使用数字协处理器的任务初始化attribute_set。

attribute_set =RTEMS_FLOATING_POINT

或 : attribute_set =RTEMS_LOCAL|RTEMS_FLOATING_POINT 。

因为 RTEMS_LOCAL是默认的选项,所以attribute_set叁数能被设定成 RTEMS_FLOATING_POINT就可以了。 如果任务是全局的的并且用了数值的协处理器,那么就应该写成

attribute_set = RTEMS_GLOBAL|RTEMS_FLOATING_POINT 。

9.2.10: 任务的执行模式和掩码

RTEMS中任务的执行模式指的是任务在创建后的运行属性,执行模式通常都对应于一个掩码。同任务的属性一样,执行模式也是通过逻辑的位运算初始化的。任务的执行模式以及对应的掩码如下:

执行模式           模式掩码          模式描述

RTEMS_PREEMPT       RTEMS_PREEMPT_MASK    开启抢占式调度

RTEMS_NO_PREEMPT     RTEMS_PREEMPT_MASK    屏蔽抢占式调度

RTEMS_NO_TIMESLICE    RTEMS_TIMESLICE_MASK    使时间片timeslicing调度失效

RTEMS_TIMESLICE                  RTEMS_TIMESLICE_MASK    使时间片timeslicing算法有效

RTEMS_ASR                              RTEMS_ASR_MASK       开启异步处理ASR

RTEMS_NO_ASR                       RTEMS_ASR_MASK       屏蔽ASR处理

RTEMS_INTERRUPT_LEVEL(0) RTEMS_INTERRUPT_MASK 开启所有的中断(任务能被对所有中断产生相应)

RTEMS_INTERRUPT_LEVEL(n) RTEMS_INTERRUPT_MASK    任务的中断水平为n

任务的执行模式分量是正交的单位向量, 因此可以使用逻辑或运算和算术加法运算对执行模式赋值。虽然RTEMS会为任务分配默认的执行模式,但是最好还是由程序员自己对执行状态进行操作。如果希望使用默认的状态,可以使用RTEMS_DEFAULT_MODES和掩码 RTEMS_ALL_MODE_MASKS。

面的例子中使用rtems_task_mode指令将任务中断等级设置成3,而且使它成为不可剥夺的。执行模式设置成RTEMS_INTERRUPT_LEVEL(3)| RTEMS_NO_PREEMPT ,掩码应该设定成 RTEMS_INTERRUPT_MASK| RTEMS_NO_PREEMPT_MASK。

 

 
嵌入式软硬件设计咨询 • 8位 16位 32位 64位 RISC DSP
主页文章 方案 产品 下载反馈
 
2004 RTEMS.NET 版权所有