新闻中心

EEPW首页>嵌入式系统>设计应用> 配置自己的UC/OS―II操作系统

配置自己的UC/OS―II操作系统

作者: 时间:2016-09-12 来源:网络 收藏

l 说明:需要时配置为1.否则配置为0。

4>OS_MBOX_POST_EN:

l 作用:设定程序中是否使用OSMboxPost()函数

l 说明:需要使用时配置为1.否则配置为0.

5>OS_MBOX_OPST_OPT_EN:

l 作用:设定程序中是否使用OSMboxPostOpt()函数

l 说明:需要是配置为1.否则配置为0.

6>OS_MBOX_QUERY_EN:

l 作用:设定程序中是否使用OSMboxQuery().

l 说明:需要时配置为1.否则配置为0.

5.关于消息队列服务功能的裁剪

1> OS_Q_EN

l 作用:设定程序中是否使用消息队列函数及其相关数据结构。

l 说明:如果要使用,则必须将其设置为1;否则设置为0.关闭此常量以节省内存。

注:若该配置为0时,所有有关消息队列的函数均不能使用,即使对应的常量配置为1。

2> OS_Q_ACCEPT_EN

l 作用:设定程序中是否使用OSQAccept()

l 说明:需要时设置为1,否则配置为0.

3> OS_Q_DEL_EN

l 作用:设定程序中是否使用OSQDel()

l 说明:需要使用时配置为1,否则配置为0.

4> OS_Q_FLUSH_EN

l 作用:设定程序中是否使用OSQFlush()(清空消息队列函数)

l 说明:需要使用时配置为1,否则配置为0.

5> OS_Q_POST_EN:

l 作用:设定程序中是否使用按FIFO规则向消息队列发送消息函数OSQPost()函数。

l 说明:需要使用时配置为1,否则配置为0

6> OS_Q_POST_FRONT_EN

l 作用:设定程序中是否使用按LIFO规则向消息队列发送消息函数OSQPostFront()函数

l 说明:需要是使用配置为1,否则配置为0.

7> OS_Q_POST_OPT_EN

l 作用:设定程序中是否使用按FIFO或LIFO规则向消息队列发送消息函数OSQPostOpt().

l 说明: 若需要时配置为1,否则配置为0.

注:该函数功能灵活,可以替代上面两个消息发送函数。

8> OS_Q_QUEAY_EN

l 作用:设定程序中是否使用OSQQuery()函数。

l 说明:需要时配置为1,否则配置为0.

6. 有关内存管理服务功能的裁剪

1> OS_MEM_EN

l 作用:设置程序中是否使用内存块管理函数及其相关数据结构。

l 说明:如果要使用,则必须将其设为1;否则将其置为0.关闭此常量以节省内存。

注:当配置为0时。所有有关内存管理功能的函数均不能使用,即使对应的常量配置为1.

2> OS_MEM_QUERY_EN

l 作用:设定程序中是否使用OSMemQuery()函数(查询内存分区状态函数)

l 说明:需要时配置为1.否则配置为0。

2 其它功能的裁剪

1. OS_TIME_DLY_HMSM_EN

l 作用:设定程序中是否使用OSTimeDlyHMSM()函数。

l 说明:需要时配置为1,否则配置为0。

2. OS_TIME_DLY_RESUME_EN:

l 作用:设定应用系统是否需要使用OSTimeDlyResume()函数。

l 说明:需要时配置为1,不需要时配置为0.

3. OS_TIME_GET_SET_EN

l 作用:设定应用系统中是否使用OSTimeGet()函数。

l 说明:需要时配置为1,否则配置为0.

4. OS_CPU_HOOKS_EN

l 作用:设定是否在文件OS_CPU_C.C中实现各钩子函数(Hook Function).如果要实现钩子函数,则常量OS_CPU_HOOKS_EN必须设置为1.

l 说明:UC/OS中提供了5个对外接口函数:

? OSTaskCreateHook();

? OSTaskDelHook();

? OS TaskStatHook();

? OSTaskSwHook();

? OSTimeTickHook();

这五个钩子函数即可以在文件OS_CPU_C.C中声明,也可以在用户代码中声明。

5. OS_ARG_CHK_EN:

l 作用:设定系统中是否使用参数检查功能。

l 说明:需要时配置为1,不需要时配置为0.

一. 数据结构功能的配置:

2 与任务有关的数据结构

1.OS_MAX_TASKS

l 作用:设置用户程序中可以使用的最多任务数。

l 说明:该值不能超过62.

l 举例: 若程序中用到了三个任务,则该值的最小值

为3(因为UC/OS操作系统目前保留了两个任务(统计任务和空闲任务)。

注:若设定OS_MAX_TASKS的值应该比实际任务数大一些,以便于以后程序的扩展。当不能设置太大,会造成内存的浪费。

2 .OS_LOWEST_PRIO

l 作用:设置程序中最低任务的优先级。

l 说明: 设定该值可以节省操作系统使用RAM的空间。

任务的最低优先级和最大任务数是没有直接关系的。

注:

1>UC/OS操作系统中优先级分别从(0)最高优先级~(63)最低优先级。其中OS_LOWEST_PRIO留给系统的空闲任务OSTaskIdle();OS_LOWEST_PRIO-1留给统计任务OSTaskStat()。操作系统留给用户可分配的优先级为:从0~OS_LOWEST_PRIO-2.

2>OS_LOWEST_PRIO和OS_MAX_TASKS是相互独立的两个配置常量。例如:可以设OS_MAX_TASKS为10,而OS_LOWEST_PRIO为32。此时,系统最多可有10个任务,用户任务的优先级级别可以是0~30.

3. OS_TASK_IDLE_STK_SIZE

l 作用:设置UC/OS操作系统中空闲任务堆栈的容量

l 说明:设置这个常量时,要注意堆栈容量的单位不是字节,而是OS_STK

注:在UC/OS操作系统中堆栈统一用OS_STK声明,根据不同的硬件环境,OS_STK可为不同的长度。

4. OS_TASK_STAT_STK_SIZE

l 作用:设定统计任务的任务堆栈容量。

l 说明:堆栈容量单位不是字节,而是OS_STK。统计任务堆栈的容量取决于所使用的处理器类型,以及如下的操作:

? 进行32位算术运算所需的堆栈空间;

? 调用OSTimeDly()所需的堆栈空间;

? 调用OSTaskStatHook()所需的堆栈空间

? 预计最大的中断嵌套数

注:若想在统计任务中进行堆栈检查,判断实际的堆栈使用,则需要设OS_TASK_CREATE_EXT_EN为1,并使用函数OSTaskCreateExt()建立任务。

5.TASK_STK_SIZE

l 作用:设定任务堆栈的容量。

l 说明:该容量不在系统配置文件OS_CFG.H中定义,而在用户程序中定义。堆栈容量的单位(OS_STK)与CPU类型有关。



关键词:

评论


相关推荐

技术专区

关闭