下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 第12章

第12章.doc

第12章

linwhwylb
2018-09-05 0人阅读 举报 0 0 暂无简介

简介:本文档为《第12章doc》,可适用于IT/计算机领域

μCOSII:实时操作系统内核μCOSII:实时操作系统内核参考手册第章配置手册本章将介绍μCOSII中的初始化配置项。由于μCOSII向用户提供源代码初始化配置项由一系列#defineconstant语句构成都在文件OSCFGH中。用户的工程文件组中都应该包含这个文件。本节介绍每个用#defineconstant定义的常量介绍的顺序和它们在OSCFGH中出现的顺序是相同的。表列出了常量控制的μCOSII函数。“类型”为函数所属的类型“置”表示当定义常量为时可以打开相应的函数“其他常量”为与这个函数有关的其他控制常量。注意编译工程文件时要包含OSCFGH使定义的常量生效。表TμCOSII函数和相关的常量(#defineconstant定义)表TµCOSII函数和相关常量类型置其他常量杂相OSInit()无OSMAXEVENTSOSQENandOSMAXQSOSMEMENOSTASKIDLESTKSIZEOSTASKSTATENOSTASKSTATSTKSIZEOSSchedLock()无无OSSchedUnlock()无无OSStart()无无OSStatInit()OSTASKSTATENOSTASKCREATEEXTENOSTICKSPERSECOSVersion()无无中断处理OSIntEnter()无无OSIntExit()无无消息邮箱OSMboxAccept()OSMBOXEN无OSMboxCreate()OSMBOXENOSMAXEVENTSOSMboxPend()OSMBOXEN无OSMboxPost()OSMBOXEN无OSMboxQuery()OSMBOXEN无内存块管理OSMemCreate()OSMEMENOSMAXMEMPARTOSMemGet()OSMEMEN无OSMemPut()OSMEMEN无OSMemQuery()OSMEMEN无消息队列OSQAccept()OSQEN无OSQCreate()OSQENOSMAXEVENTSOSMAXQSOSQFlush()OSQEN无OSQPend()OSQEN无OSQPost()OSQEN无OSQPostFront()OSQEN无OSQQuery()OSQEN无信号量管理OSSemAccept()OSSEMEN无OSSemCreate()OSSEMENOSMAXEVENTSOSSemPend()OSSEMEN无OSSemPost()OSSEMEN无OSSemQuery()OSSEMEN无任务管理OSTaskChangePrio()OSTASKCHANGEPRIOENOSLOWESTPRIOOSTaskCreate()OSTASKCREATEENOSMAXTASKSOSLOWESTPRIOOSTaskCreateExt()OSTASKCREATEEXTENOSMAXTASKSOSSTKGROWTHOSLOWESTPRIOOSTaskDel()OSTASKDELENOSLOWESTPRIOOSTaskDelReq()OSTASKDELENOSLOWESTPRIOOSTaskResume()OSTASKSUSPENDENOSLOWESTPRIOOSTaskStkChk()OSTASKCREATEEXTENOSLOWESTPRIOOSTaskSuspend()OSTASKSUSPENDENOSLOWESTPRIOOSTaskQuery()OSLOWESTPRIO时钟管理OSTimeDly()无无OSTimeDlyHMSM()无OSTICKSPERSECOSTimeDlyResume()无OSLOWESTPRIOOSTimeGet()无无OSTimeSet()无无OSTimeTick()无无用户定义函数OSTaskCreateHook()OSCPUHOOKSEN无OSTaskDelHook()OSCPUHOOKSEN无OSTaskStatHook()OSCPUHOOKSEN无OSTaskSwHook()OSCPUHOOKSEN无OSTimeTickHook()OSCPUHOOKSEN无OSMAXEVENTSOSMAXEVENTS定义系统中最大的事件控制块的数量。系统中的每一个消息邮箱消息队列信号量都需要一个事件控制块。例如系统中有个消息邮箱个消息队列个信号量则OSMAXEVENTS最小应该为。只要程序中用到了消息邮箱消息队列或是信号量则OSMAXEVENTS最小应该设置为。OSMAXMEMPARTSOSMAXMEMPARTS定义系统中最大的内存块数内存块将由内存管理函数操作(定义在文件OSMEMC中)。如果要使用内存块OSMAXMEMPARTS最小应该设置为常量OSMEMEN也要同时置。OSMAXQSOSMAXQS定义系统中最大的消息队列数。要使用消息队列常量OSQEN也要同时置。如果要使用消息队列OSMAXQS最小应该设置为。OSMAXTASKSOSMAXMEMTASKS定义用户程序中最大的任务数。OSMAXMEMTASKS不能大于这是由于μCOSII保留了两个系统使用的任务。如果设定OSMAXMEMTASKS刚好等于所需任务数则建立新任务时要注意检查是否超过限定。而OSMAXMEMTASKS设定的太大则会浪费内存。OSLOWESTPRIOOSLOWESTPRIO设定系统中的任务最低优先级(最大优先级数)。设定OSLOWESTPRIO可以节省用于任务控制块的内存。μCOSII中优先级数从(最高优先级)到(最低优先级)。设定OSLOWESTPRIO小于意味着不会建立优先级数大于OSLOWESTPRIO的任务。μCOSII中保留两个优先级系统自用:OSLOWESTPRIO和OSLOWESTPRIO。其中OSLOWESTPRIO留给系统的空闲任务(Idletask)(OSTaskIdle())。OSLOWESTPRIO留给统计任务(OSTaskStat())。用户任务的优先级可以从到OSLOWESTPRIO。OSLOWESTPRIO和OSMAXTASKS之间没有什么关系。例如可以设OSMAXTASKS为而OSLOWESTPRIO为。此时系统最多可有个任务用户任务的优先级可以是到。当然OSLOWESTPRIO设定的优先级也要够用例如设OSMAXTASKS为而OSLOWESTPRIO为优先级就不够用了。OSTASKIDLESTKSIZEOSTASKIDLESTKSIZE设置μCOSII中空闲任务(Idletask)堆栈的容量。注意堆栈容量的单位不是字节而是OSSTK(μCOSII中堆栈统一用OSSTK声明根据不同的硬件环境OSSTK可为不同的长度译者注)。空闲任务堆栈的容量取决于所使用的处理器以及预期的最大中断嵌套数。虽然空闲任务几乎不做什么工作但还是要预留足够的堆栈空间保存CPU寄存器的内容以及可能出现的中断嵌套情况。OSTASKSTATENOSTASKSTATEN设定系统是否使用μCOSII中的统计任务(statistictask)及其初始化函数。如果设为则使用统计任务OSTaskStat()。统计任务每秒运行一次计算当前系统CPU使用率结果保存在位变量OSCPUUsage中。每次运行OSTaskStat()都将调用OSTaskStatHook()函数用户自定义的统计功能可以放在这个函数中。详细情况请参考OSCOREC文件。统计任务OSTaskStat()的优先级总是设为OSLOWESTPRIO。当OSTASKSTATEN设为的时候全局变量OSCPUUsageOSIdleCtrMaxOSIdleCtrRun和OSStatRdy都不声明以节省内存空间。OSTASKSTATSTKSIZEOSTASKSTATSTKSIZE设置μCOSII中统计任务(statistictask)堆栈的容量。注意单位不是字节而是OSSTK(μCOSII中堆栈统一用OSSTK声明根据不同的硬件环境OSSTK可为不同的长度译者注)。统计任务堆栈的容量取决于所使用的处理器类型以及如下的操作:·进行位算术运算所需的堆栈空间。·调用OSTimeDly()所需的堆栈空间。·调用OSTaskStatHook()所需的堆栈空间。·预计最大的中断嵌套数。如果想在统计任务中进行堆栈检查判断实际的堆栈使用用户需要设OSTASKCREATEEXTEN为并使用OSTaskCreateExt()函数建立任务。OSCPUHOOKSEN此常量设定是否在文件OSCPUCC中声明对外接口函数(hookfunction)设为为声明。μCOSII中提供了个对外接口函数可以在文件OSCPUCC中声明也可以在用户自己的代码中声明:·OSTaskCreateHook()·OSTaskDelHook()·OSTaskStatHook()·OSTaskSwHook()·OSTimeTickHook()OSMBOXENOSMBOXEN控制是否使用μCOSII中的消息邮箱函数及其相关数据结构设为为使用。如果不使用则关闭此常量节省内存。OSMEMENOSMEMEN控制是否使用μCOSII中的内存块管理函数及其相关数据结构设为为使用。如果不使用则关闭此常量节省内存。OSQENOSQEN控制是否使用μCOSII中的消息队列函数及其相关数据结构设为为使用。如果不使用则关闭此常量节省内存。如果OSQEN设为则语句#defineconstantOSMAXQS无效。OSSEMENOSSEMEN控制是否使用μCOSII中的信号量管理函数及其相关数据结构设为为使用。如果不使用则关闭此常量节省内存。OSTASKCHANGEPRIOEN此常量控制是否使用μCOSII中的OSTaskChangePrio()函数设为为使用。如果在应用程序中不需要改变运行任务的优先级则将此常量设为节省内存。OSTASKCREATEEN此常量控制是否使用μCOSII中的OSTaskCreate()函数设为为使用。在μCOSII中推荐用户使用OSTaskCreateExt()函数建立任务。如果不使用OSTaskCreate()函数将OSTASKCREATEEN设为可以节省内存。注意OSTASKCREATEEN和OSTASKCREATEEXTEN至少有一个要为当然如果都使用也可以。OSTASKCREATEEXTEN此常量控制是否使用μCOSII中的OSTaskCreateExt()函数设为为使用。该函数为扩展的功能更全的任务建立函数。如果不使用该函数将OSTASKCREATEEXTEN设为可以节省内存。注意如果要使用堆栈检查函数OSTaskStkChk()则必须用OSTaskCreateExt()建立任务。OSTASKDELEN此常量控制是否使用μCOSII中的OSTaskDel()函数设为为使用。如果在应用程序中不使用删除任务函数将OSTASKDELEN设为可以节省内存。OSTASKSUSPENDEN此常量控制是否使用μCOSII中的OSTaskSuspend()和OSTaskResume()函数设为为使用。如果在应用程序中不使用任务挂起唤醒函数将OSTASKSUSPENDEN设为可以节省内存。OSTICKSPERSEC此常量标识调用OSTimeTick()函数的频率。用户需要在自己的初始化程序中保证OSTimeTick()按所设定的频率调用(即系统硬件定时器中断发生的频率译者注)。在函数OSStatInit()OSTaskStat()和OSTimeDlyHMSM()中都会用到OSTICKSPERSEC。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/7

第12章

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利