嵌入式实时操作系统uCOSII第12章配置手册_第1页
嵌入式实时操作系统uCOSII第12章配置手册_第2页
嵌入式实时操作系统uCOSII第12章配置手册_第3页
嵌入式实时操作系统uCOSII第12章配置手册_第4页
嵌入式实时操作系统uCOSII第12章配置手册_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 -MC/OS-II:实时操作系统内核 #-MC/OS-II:实时操作系统内核第12章 #-MC/OS-II:实时操作系统内核 #-MC/OS-II:实时操作系统内核配置手册本章将介绍uC/OS-II中的初始化配置项。由于uC/OS-II向用户提供源代码,初始化配置项由一系列#defineconstant语句构成,都在文件OS_CFG.H中。用户的工程文件组中都应该包含这个文件。本节介绍每个用#defineconstant定义的常量,介绍的顺序和它们在OS_CFG.H中出现的顺序是相同的。表12.1列出了常量控制的uC/OS-II函数。“类型”为函数所属的类型,“置1”表示当定义常量为1时可以

2、打开相应的函数,“其他常量”为与这个函数有关的其他控制常量。注意编译工程文件时要包含OS_CFG.H,使定义的常量生效。表T12.1uC/OS-II函数和相关的常量(#defineconstant定义)表T12.1C/OS-II函数和相关常量类型置1其他常量 #-MC/OS-II:实时操作系统内核 #-MC/OS-II:实时操作系统内核杂相OSInit()OSSchedLock()OSSchedUnlock()OSStart()OSStatInit()OSVersion()中断处理无无无OS_TASK_STAT_EN&OS_TASK_CREATE_EXT_EN无OS_MAX_EVENTSOS_

3、Q_ENandOS_MAX_QSOS_MEM_ENOS_TASK_IDLE_STK_SIZEOS_TASK_STAT_ENOS_TASK_STAT_STK_SIZE无无无OS_TICKS_PER_SEC无 -MC/OS-II:实时操作系统内核OSIntEnter()无无OSIntExit()无无消息邮箱OSMboxAccept()OS_MBOX_EN无OSMboxCreate()OS_MBOX_ENOS_MAX_EVENTSOSMboxPend()OS_MBOX_EN无OSMboxPost()OS_MBOX_EN无OSMboxQuery()OS_MBOX_EN无内存块管理OSMemCreate

4、()OS_MEM_ENOS_MAX_MEM_PARTOSMemGet()OS_MEM_EN无OSMemPut()OS_MEM_EN无OSMemQuery()OS_MEM_EN无消息队列OSQAccept()OS_Q_EN无OSQCreate()OS_Q_ENOS_MAX_EVENTSOS_MAX_QSOSQFlush()OS_Q_EN无OSQPend()OS_Q_EN无OSQPost()OS_Q_EN无OSQPostFront()OS_Q_EN无OSQQuery()OS_Q_EN无信号量管理OSSemAccept()OS_SEM_EN无OSSemCreate()OS_SEM_ENOS_MAX_

5、EVENTSOSSemPend()OS_SEM_EN无OSSemPost()OS_SEM_EN无OSSemQuery()OS_SEM_EN无任务管理OSTaskChangePrio()OS_TASK_CHANGE_PRIO_ENOS_LOWEST_PRIOOSTaskCreate()OS_TASK_CREATE_ENOS_MAX_TASKSOS_LOWEST_PRIOOSTaskCreateExt()OS_TASK_CREATE_NEXT_EOS_MAX_TASKSOS_STK_GROWTHOS_LOWEST_PRIOOSTaskDel()OS_TASK_DEL_ENOS_LOWEST_PRI

6、OOSTaskDelReq()OS_TASK_DEL_ENOS_LOWEST_PRIOOSTaskResume()OS_TASK_SUSPEND_ENOS_LOWEST_PRIOOSTaskStkChk()OS_TASK_CREATE_EXT_EOS_LOWEST_PRIONOSTaskSuspend()OS_TASK_SUSPND_ENOS_LOWEST_PRIOOSTaskQuery()OS_LOWEST_PRIO时钟管理OSTimeDly()无无OSTimeDlyHMSM()无OS_TICKS_PER_SECOSTimeDlyResume()无OS_LOWEST_PRIOOSTimeGe

7、t()无无OSTimeSet()无无OSTimeTick()无无用户定义函数OSTaskCreateHook()OS_CPU_HOOKSEN无OSTaskDelHook()OS_CPU_HOOKSEN无OSTaskStatHook()OS_CPU_HOOKSEN无OSTaskSwHook()OS_CPU_HOOKSEN无OSTimeTickHook()OS_CPU_HOOKSEN无 -MC/OS-II:实时操作系统内核OS_MAX_EVENTSOS_MAX_EVENTS定义系统中最大的事件控制块的数量。系统中的每一个消息邮箱,消息队列,信号量都需要一个事件控制块。例如,系统中有10个消息邮箱,

8、5个消息队列,3个信号量,则OS_MAX_EVENTS最小应该为18。只要程序中用到了消息邮箱,消息队列或是信号量,则OS_MAX_EVENTS最小应该设置为2。OS_MAX_MEM_PARTSOS_MAX_MEM_PARTS定义系统中最大的内存块数,内存块将由内存管理函数操作(定义在文件OS_MEM.C中)。如果要使用内存块,OS_MAX_MEM_PARTS最小应该设置为2,常量OS_MEM_EN也要同时置1。OS_MAX_QSOS_MAX_QS定义系统中最大的消息队列数。要使用消息队列,常量OS_Q_EN也要同时置1。如果要使用消息队列,OS_MAX_QS最小应该设置为2。OS_MAX_T

9、ASKSOS_MAX_MEM_TASKS定义用户程序中最大的任务数。OS_MAX_MEM_TASKS不能大于62,这是由于卩C/OS-II保留了两个系统使用的任务。如果设定OS_MAX_MEM_TASKS刚好等于所需任务数,则建立新任务时要注意检查是否超过限定。而OS_MAX_MEM_TASKS设定的太大则会浪费内存。OS_LOWEST_PRIOOS_LOWEST_PRIO设定系统中的任务最低优先级(最大优先级数)。设定OS_LOWEST_PRIO可以节省用于任务控制块的内存。卩C/OS-II中优先级数从0(最高优先级)到63(最低优先级)。设定OS_LOWEST_PRIO小于63意味着不会建

10、立优先级数大于OS_LOWEST_PRIO的任务。uC/OS-II中保留两个优先级系统自用:OS_LOWEST_PRIO和OS_LOWEST_PRIO-1其中OS_LOWEST_PRIO留给系统的空闲任务(Idletask)(OSTaskIdle()。OS_LOWEST_PRIO-1留给统计任务(OSTaskStat()。用户任务的优先级可以从0至IOS_LOWEST_PRIO-2OS_LOWEST_PRI和OS_MAX_TASKS之间没有什么关系。例如,可以设OS_MAX_TASKS为10而OS_LOWEST_PRIO为32。此时系统最多可有10个任务,用户任务的优先级可以是0到30。当然,

11、OS_LOWEST_PRI设定的优先级也要够用,例如设OS_MAX_TASKS为20,而OS_LOWEST_PRI为10,优先级就不够用了。OS_TASK_IDLE_STK_SIZEOS_TASK_IDLE_STK_SIZE设置uC/OS-II中空闲任务(Idletask)堆栈的容量。注意堆栈容量的单位不是字节,而是OS_STK(uC/OS-II中堆栈统一用OS_STK声明,根据不同的硬件环境,OS_STK可为不同的长度译者注)。空闲任务堆栈的容量取决于所使用的处理器,以及预期的最大中断嵌套数。虽然空闲任务几乎不做什么工作,但还是要预留足够的堆栈空间保存CPU寄存器的内容,以及可能出现的中断嵌

12、套情况。OS_TASK_STAT_ENOS_TASK_STAT_EN设定系统是否使用uC/OS-II中的统计任务(statistictask)及其初始化函数。如果设为1,则使用统计任务OSTaskStat()。统计任务每秒运行一次,计算当前系统CPU使用率,结果保存在8位变量OSCPUUsage中。每次运行,OSTaskStat()都将调用OSTaskStatHook()函数,用户自定义的统计功能可以放在这个函数中。详细情况请参考OS_CORE.C文件。统计任务OSTaskStat()的优先级总是设为OS_LOWEST_PRIO-1。当OS_TASK_STAT_EN设为0的时候,全局变量OSC

13、PUUsage,OSIdleCtrMax,OSIdleCtrRun和OSStatRdy都不声明,以节省内存空间。OS_TASK_STAT_STK_SIZEOS_TASK_STAT_STK_SIZE设置uC/OS-II中统计任务(statistictask)堆栈的容量。注意单位不是字节,而是OS_STK(uC/OS-II中堆栈统一用OS_STK声明,根据不同的硬件环境,OS_STK可为不同的长度译者注)。统计任务堆栈的容量取决于所使用的处理器类型,以及如下的操作:进行32位算术运算所需的堆栈空间。调用OSTimeDly()所需的堆栈空间。调用OSTaskStatHook()所需的堆栈空间。预计最

14、大的中断嵌套数。如果想在统计任务中进行堆栈检查,判断实际的堆栈使用,用户需要设OS_TASK_CREATE_EXT_EN为1,并使用OSTaskCreateExt()函数建立任务。OS_CPU_HOOKS_EN此常量设定是否在文件OS_CPU_C.C中声明对外接口函数(hookfunction),设为1为声明。卩C/OS-II中提供了5个对外接口函数,可以在文件OS_CPU_C.C中声明,也可以在用户自己的代码中声明:OSTaskCreateHook()OSTaskDelHook()OSTaskStatHook()OSTaskSwHook()OSTimeTickHook()OS_MBOX_EN

15、OS_MBOX_EN控制是否使用卩C/OS-II中的消息邮箱函数及其相关数据结构,设为1为使用。如果不使用,则关闭此常量节省内存。OS_MEM_ENOS_MEM_EN控制是否使用卩C/OS-II中的内存块管理函数及其相关数据结构,设为1为使用。如果不使用,则关闭此常量节省内存。OS_Q_EN控制是否使用uC/OS-II中的消息队列函数及其相关数据结构,设为1为使用。如果不使用,则关闭此常量节省内存。如果OS_Q_EN设为0,则语句#defineconstantOS_MAX_QS无效。OS_SEM_ENOS_SEM_EN控制是否使用uC/OS-II中的信号量管理函数及其相关数据结构,设为1为使用

16、。如果不使用,则关闭此常量节省内存。OS_TASK_CHANGE_PRIO_EN此常量控制是否使用uC/OS-II中的OSTaskChangePrio()函数,设为1为使用。如果在应用程序中不需要改变运行任务的优先级,则将此常量设为0节省内存。OS_TASK_CREATE_EN此常量控制是否使用卩C/OS-II中的OSTaskCreate()函数,设为1为使用。在卩C/OS-II中推荐用户使用OSTaskCreateExt()函数建立任务。如果不使用OSTaskCreate()函数,将OS_TASK_CREATE_EN设为0可以节省内存。注意OS_TASK_CREATE_EN和OS_TASK_

17、CREATE_EXT_EN至少有一个要为1,当然如果都使用也可以。OS_TASK_CREATE_EXT_EN此常量控制是否使用卩C/OS-II中的OSTaskCreateExt()函数,设为1为使用。该函数为扩展的,功能更全的任务建立函数。如果不使用该函数,将OS_TASK_CREATE_EXT_EN设为0可以节省内存。注意,如果要使用堆栈检查函数OSTaskStkChk(),则必须用OSTaskCreateExt()建立任务。OS_TASK_DEL_EN此常量控制是否使用卩C/OS-II中的OSTaskDel()函数,设为1为使用。如果在应用程序中不使用删除任务函数,将OS_TASK_DEL_EN设为0可以节省内存。OS_TASK_SUSPEND_EN此常量控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论