arm任务管理..ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
arm任务管理.

嵌入式实时操作系统μC/OS-II ——任务管理 任务管理 核心函数 任务管理 核心函数 当处理临界段代码时,须关中断,处理完毕后,再开中断 关中断时间是实时内核最重要的指标之一。它影响用户系统对实时事件的相应特性。 ?C/OS-II定义了两个宏调用来开关中断: OS_ENTER_CRITICAL( ) (禁止中断的宏) OS_EXIT_CRITICAL( ) (启用中断的宏) 通常成对出现 通常,调用?C/OS-II功能函数时,中断总应当是开放的。 OS_ENTER_CRITICAL( )及OS_EXIT_CRITICAL( )可以用3种不同的方法实现 具体方法取决于用户打算移植到的处理器的性能及所用的C编译器 用定义(#define)常数OS_CRITICAL_METHOD可以选择具体使用哪种方法 该常数在与CPU类型有关的移植文件OS_CPU.H中定义 OS_CRITICAL_METHOD==1 用处理器指令关中断,完成OS_ENTER_CRITICAL() 用开中断指令完成OS_EXIT_CRITICAL() 问题: 若调用?C/OS-II功能函数之前已将中断关掉,那么用户往往希望从?C/OS-II函数返回时,中断仍然是关着的。这时,这种方法就不妥当。 对特定的处理器,这种办法是唯一的选择 OS_CRITICAL_METHOD==2 在堆栈中保存中断的开/关状态,然后再关中断 实现OS_ENTER_CRITICAL()时,先在堆栈中保存中断的开/关状态,然后再关中断 实现OS_EXIT_CRITICAL()时,从堆栈中弹出原来中断的开/关状态 利用这种机制,不论用户在调用?C/OS-II功能函数之前中断是开或关,函数的进入和返回状态都得到了保护。即:调用前中断的开/关状态,在调用之后保持不变 OS_CRITICAL_METHOD==3 把当前处理器的状态字(PSW)保存在C函数的局部变量中(如OS_CPU_SR) 关中断时保存,开中断时恢复 Void Some_ uCOS_II_Service(arguments) { OS_CPU_SR cpu_sr; cpu_sr=get_processor_psw(); disable_interrupts(); /*临界段代码*/ set_processor_psw(cpu_sr); } 任务控制块(TCB)的结构 任务管理 核心函数 任务管理函数 任务栈 堆栈 ---- LIFO访问原则组织的连续存储器。 任务堆栈----用于保存任务函数中所有寄存器、变量和数据结构的堆栈。 任务栈的创建 任务栈的使用注意事项 存在两种堆栈形式 函数名称 OSInit 所属文件 OS_CORE.C 函数原型 void OSInit(void) 功能描述 初始化μC/OS-Ⅱ,无函数参数和返回值 特殊说明 必须在调用OSStart()函数之前调用OSInit(),而只有在调用OSStart()函数之后,μC/OS-Ⅱ才真正开始运行多任务 OSInit函数 函数名称 OSStart 所属文件 OS_CORE.C 函数原型 void OSStart(void) 功能描述 启动μC/OS-II的多任务环境,无函数参数和返回值 特殊说明 在调用OSStart( )之前必须先调用OSInit ( )。在用户程序中OSStart( )只能被调用一次,第二次调用OSStart( )将不执行任何操作 OSStart函数 任务管理函数 任务 OS_TASK_DEL_EN 删除任务 OSTaskDel() 任务 OS_TASK_SUSPEND_EN 任务挂起 OSTaskSuspend() 任务 OS_TASK_STK_CHK_EN 堆栈检验 OSTaskStkChk() 任务 OS_TASK_RESUME_EN 任务恢复 OSTaskResume() 中断、任务 OS_TASK_QUERY_EN 任务信息的获取 OSTaskQuery() 任务 OS_TASK_DEL_REQ_EN 请求删除任务 OSTaskDelReq() 任务、启动代码 OS_TASK_CREATE_EXT_EN 任务建立 OSTaskCreateExt() 任务、启动代码 OS_TASK_CREATE_EN 任务建立 OSTaskCreate() 任务 OS_TASK_CHANGE_PRIO_EN 任务级变更 OSTaskChangePrio() 调用者 配置开关常量 功能 任务管理函数 函数名称 OSTaskCreate 所属文件 OS_TASK.C 函数原型 INT8U

您可能关注的文档

文档评论(0)

叮当文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档