主页 文档 下载 莱特 沙龙 English

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


任务管理指令:创建与启动

作者 Ray

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

9.7.1: TASK_CREATE- 创建一个任务

函数原型:

rtems_status_code rtems_task_create(
rtems_name name,
rtems_task_priority initial_priority,
rtems_unsigned32 stack_size,
rtems_mode initial_modes,
rtems_attribute attribute_set,
rtems_id *id
);

函数状态码:

RTEMS_SUCCESSFUL- 任务成功地创建

RTEMS_INVALID_ADDRESS- id 是空值

RTEMS_INVALID_NAME- 任务名字无效

RTEMS_INVALID_PRIORITY- 任务优先级无效

RTEMS_MP_NOT_CONFIGURED- 多任务处理没有启动

RTEMS_TOO_MANY- 创建任务数超过系统限制

RTEMS_UNSATISFIED- 没有足够内存存放栈以及任务上下文

RTEMS_TOO_MANY- 全局变量数目超过了系统限制

描述 :

该函数在本地结点上创建新任务。函数分配并初始化TCB;任务栈;以及可选的浮点上下文区域。 模式参数决定了任务的执行模式。如果新任务使用了协处理器,就应该使用RTEMS_FLOATING_POINT 分量初始化任务的属性。出于性能方面的考虑,一般不推荐任务使用数值协处理器,也就是说应该使用RTEMS_NO_FLOATING_POINT属性。 如果任务属性中包含RTEMS_GLOBAL分量,任务能从远端结点存取。任务ID参数用于函数返回的时候获取新任务的ID。被用于其他的任务相关的指令存取任务。新创建的任务被放睡眠队列上,只有通过指令rtems_task_start启动任务 。

注意:

该指令不会导致调用者被调度出CPU(被抢占)。

任务优先级从最高的优先级是1最低是255

如果被请求的栈大小比 RTEMS_MINIMUM_STACK_SIZE 少,RTEMS 将会以RTEMS_MINIMUM_STACK_SIZE为大小创建栈。 RTEMS_MINIMUM_STACK_SIZE 的值是处理器相关的。为驱动程序定义栈空间的时候,应用开发者应该考虑设备驱动对堆栈的利用。

任务的属性以及说明可以参考前面的章节

RTEMS支持的任务的中断等级有256级,这些中断等级在BSP中会映射到对应处理器实际支持的硬件实际的硬件中断等级上。

缺省状态下创建的任务都是本地任务,因为全局的任务会增加系统开销。 当创造全局任务时,任务的名称和ID会广播到系统中的每个处理器上,每个处理器所在的子系统会为全局变量维护一个队列,新建的全局任务将会插入到队列中。

全局对象的总数,包括任务数目,被RTEMS配置表中的 maximum_global_objects字段制定。

9.7.2: TASK_IDENT-获取任务的id

函数原型:

rtems_status_code rtems_task_ident(
rtems_name name,
rtems_unsigned32 node,
rtems_id *id
);

返回值状态:

RTEMS_SUCCESSFUL- 成功地获取任务ID

RTEMS_INVALID_ADDRESS- ID是空值

RTEMS_INVALID_NAME- 任务名称无效

RTEMS_INVALID_NODE- 任务ID无效

描述:

该指令的获取与任务名字对应的任务ID。 一个任务可以使用 RTEMS_SELF或它自己的任务名字获得它自己的ID。如果任务名字不是全局唯一的,那么这个函数返回的ID将会是同名任务之莫个任务的ID。 获取了任务ID,就可以在其他的与任务相关的函数中对任务进行操作了。

注意:

该指令将不会引起要调用者被调度出处理器。

如果结点参数是 RTEMS_SEARCH_ALL_NODES,系统中所有的结点(子系统)将会被搜索,首先搜索的是本地节点。

如果结点是一个不表现地方结点的有效结点数字,然后只有被被指定的结点输出的任务被搜寻。

该指令在远端节点搜索的时候不会消耗远端节点的CPU,搜索只会搜索全局的对象表格中对应的位值。

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