2022年嵌入式实时操作系统UCOS-II .pdf

上传人:Che****ry 文档编号:35758180 上传时间:2022-08-23 格式:PDF 页数:7 大小:78.51KB
返回 下载 相关 举报
2022年嵌入式实时操作系统UCOS-II .pdf_第1页
第1页 / 共7页
2022年嵌入式实时操作系统UCOS-II .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年嵌入式实时操作系统UCOS-II .pdf》由会员分享,可在线阅读,更多相关《2022年嵌入式实时操作系统UCOS-II .pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

2、CFG.H,使定义的常量生效。表 T12.1 C/OS-II 函数和相关的常量(#define constant 定义)表T12.1 C/OS-II 函数和相关常量类型置1其他常量杂相OSInit() 无OS_MAX_EVENTS OS_Q_EN and OS_MAX_QS OS_MEM_EN OS_TASK_IDLE_STK_SIZE OS_TASK_STAT_EN OS_TASK_STAT_STK_SIZE OSSchedLock() 无无OSSchedUnlock() 无无OSStart() 无无OSStatInit() OS_TASK_STAT_EN & OS_TASK_CREATE_

3、EXT_EN OS_TICKS_PER_SEC OSVersion() 无无中断处理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 参考手册-311 OSIntEnter() 无无OSIntExit() 无无消息邮箱OSMboxAccept() OS_MBOX_EN 无OSMboxCreate() OS_MBOX_EN OS_MAX_EVENTS OSMboxPend() OS_MBOX_EN 无OSMboxPost() OS_

4、MBOX_EN 无OSMboxQuery() OS_MBOX_EN 无内存块管理OSMemCreate() OS_MEM_EN OS_MAX_MEM_PART OSMemGet() OS_MEM_EN 无OSMemPut() OS_MEM_EN 无OSMemQuery() OS_MEM_EN 无消息队列OSQAccept() OS_Q_EN 无OSQCreate() OS_Q_EN OS_MAX_EVENTS OS_MAX_QS OSQFlush() OS_Q_EN 无OSQPend() OS_Q_EN 无OSQPost() OS_Q_EN 无OSQPostFront() OS_Q_EN 无O

5、SQQuery() OS_Q_EN 无信号量管理OSSemAccept() OS_SEM_EN 无OSSemCreate() OS_SEM_EN OS_MAX_EVENTS OSSemPend() OS_SEM_EN 无OSSemPost() OS_SEM_EN 无OSSemQuery() OS_SEM_EN 无任务管理OSTaskChangePrio() OS_TASK_CHANGE_PRIO_EN OS_LOWEST_PRIO OSTaskCreate() OS_TASK_CREATE_EN OS_MAX_TASKS OS_LOWEST_PRIO OSTaskCreateExt() OS_

6、TASK_CREATE_EXT_EN OS_MAX_TASKS OS_STK_GROWTH OS_LOWEST_PRIO OSTaskDel() OS_TASK_DEL_EN OS_LOWEST_PRIO OSTaskDelReq() OS_TASK_DEL_EN OS_LOWEST_PRIO OSTaskResume() OS_TASK_SUSPEND_EN OS_LOWEST_PRIO OSTaskStkChk() OS_TASK_CREATE_EXT_EOS_LOWEST_PRIO 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

7、- - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 312-C/OS-II:实时操作系统内核N OSTaskSuspend() OS_TASK_SUSPEND_EN OS_LOWEST_PRIO OSTaskQuery() OS_LOWEST_PRIO 时钟管理OSTimeDly() 无无OSTimeDlyHMSM() 无OS_TICKS_PER_SEC OSTimeDlyResume() 无OS_LOWEST_PRIO OSTimeGet() 无无OSTimeSet() 无无OSTimeTick() 无无用户定义函数OSTaskCre

8、ateHook() OS_CPU_HOOKS_EN 无OSTaskDelHook() OS_CPU_HOOKS_EN 无OSTaskStatHook() OS_CPU_HOOKS_EN 无OSTaskSwHook() OS_CPU_HOOKS_EN 无OSTimeTickHook() OS_CPU_HOOKS_EN 无名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 参考手册-313 OS_MAX_EVENTS OS_MAX_EV

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

10、AX_QS 定义系统中最大的消息队列数。要使用消息队列,常量OS_Q_EN 也要同时置1。如果要使用消息队列,OS_MAX_ QS 最小应该设置为2。OS_MAX_TASKS OS_MAX_MEM_TASKS定义用户程序中最大的任务数。OS_MAX_MEM_TASKS不能大于62,这是由于 C/OS-II 保留了两个系统使用的任务。如果设定 OS_MAX_MEM_TASKS刚好等于所需任务数,则建立新任务时要注意检查是否超过限定。而OS_MAX_MEM_TASKS设定的太大则会浪费内存。OS_LOWEST_PRIO OS_LOWEST_PRIO 设定系统中的任务最低优先级(最大优先级数)。设定

11、 OS_LOWEST_PRIO可以节省用于任务控制块的内存。C/OS-II 中优先级数从0 (最高优先级) 到 63 (最低优先级) 。设定 OS_LOWEST_PRIO小于 63 意味着不会建立优先级数大于OS_LOWEST_PRIO的任务。 C/OS-II中保留两个优先级系统自用:OS_LOWEST_PRIO和 OS_LOWEST_PRIO-1 。其中OS_LOWEST_PRIO 留给系统的空闲任务(Idle task )(OSTaskIdle() )。 OS_LOWEST_PRIO-1留给统计任务(OSTaskStat() 。用户任务的优先级可以从0 到 OS_LOWEST_PRIO-2

12、 。OS_LOWEST_PRIO和 OS_MAX_TASKS之间没有什么关系。例如,可以设OS_MAX_TASKS名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 314-C/OS-II:实时操作系统内核为 10 而OS_LOWEST_PRIO为 32。此时系统最多可有10 个任务,用户任务的优先级可以是0 到 30。当然, OS_LOWEST_PRIO设定的优先级也要够用,例如设OS_MAX_TASKS为20,而OS_LOWES

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

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

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

16、大的中断嵌套数。如 果 想 在 统 计 任 务 中 进 行 堆 栈 检 查 , 判 断 实 际 的 堆 栈 使 用 , 用 户 需 要 设OS_TASK_CREATE_EXT_EN为 1,并使用 OSTaskCreateExt()函数建立任务。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 参考手册-315 OS_CPU_HOOKS_EN 此常量设定是否在文件OS_CPU_C.C 中声明对外接口函数(hook function

17、) ,设为 1 为声明。 C/OS-II 中提供了5 个对外接口函数,可以在文件OS_CPU_C.C 中声明,也可以在用户自己的代码中声明:OSTaskCreateHook()OSTaskDelHook ()OSTaskStatHook()OSTaskSwHook()OSTimeTickHook ()OS_MBOX_EN OS_MBOX_EN控制是否使用 C/OS-II 中的消息邮箱函数及其相关数据结构,设为1 为使用。如果不使用,则关闭此常量节省内存。OS_MEM_EN OS_MEM_EN 控制是否使用 C/OS-II 中的内存块管理函数及其相关数据结构,设为1 为使用。如果不使用,则关闭此

18、常量节省内存。OS_Q_EN OS_Q_EN 控制是否使用 C/OS-II 中的消息队列函数及其相关数据结构,设为1 为使用。如果不使用,则关闭此常量节省内存。如果OS_Q_EN 设为 0,则语句 #define constant OS_MAX_QS无效。OS_SEM_EN OS_SEM_EN 控制是否使用 C/OS-II 中的信号量管理函数及其相关数据结构,设为1 为使用。如果不使用,则关闭此常量节省内存。OS_TASK_CHANGE_PRIO_EN 此常量控制是否使用C/OS-II 中的 OSTaskChangePrio()函数,设为1 为使用。如果在应用程序中不需要改变运行任务的优先级,

19、则将此常量设为0 节省内存。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 316-C/OS-II:实时操作系统内核OS_TASK_CREATE_EN 此常量控制是否使用C/OS-II 中的 OSTaskCreate()函数,设为1 为使用。在 C/OS-II 中推荐用户使用OSTaskCreateExt()函数建立任务。如果不使用OSTaskCreate()函数,将OS_TASK_CREATE_EN设 为0可 以 节 省 内

20、存 。 注 意OS_TASK_CREATE_EN和OS_TASK_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 中的 OSTaskDe

21、l()函数,设为1 为使用。如果在应用程序中不使用删除任务函数,将OS_TASK_DEL_EN设为 0 可以节省内存。OS_TASK_SUSPEND_EN 此常量控制是否使用C/OS-II 中的 OSTaskSuspend()和 OSTaskResume ()函数,设为1 为使用。如果在应用程序中不使用任务挂起-唤醒函数,将OS_TASK_SUSPEND_EN设为 0 可以节省内存。OS_TICKS_PER_SEC 此常量标识调用OSTimeTick()函数的频率。 用户需要在自己的初始化程序中保证OSTimeTick()按所设定的频率调用(即系统硬件定时器中断发生的频率-译者注)。在函数 OSStatInit () ,OSTaskStat()和 OSTimeDlyHMSM ()中都会用到OS_TICKS_PER_SEC 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com