嵌入式系统与软件第五章.pptx

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

第五章嵌入式实时操作系统核心内容任务及任务创建RTOS的特点 RTOS的体系结构实时内核RTOS的扩展内核一些关键概念任务(Task)线程(Thread)抢占(Preemptive)优先级驱动(Priority Driven)优先级逆转(Priority Inversion)优先级继承(Priority Inheritance)互斥(Mutual Exclusion)5.1 任务及任务创建常规工作日常工作模式:针对一些比较大的工作,常规方式是:将其划分成相对较小的任务;理清它们的重要程度、之间的依赖关系;按一定顺序分别处理,最终完成工作目标所分出的任务具有以下相对特点:工作量小;难度低;能否完成的可预测性强;可以承担的人员多High Priority TaskTaskTaskEach TaskImportanceEventEventTaskTaskTaskInfinite LoopLow Priority TaskTask将应用系统分解为任务任务与程序的区别任务能真实地描述工作内容的并发性,而程序不能程序是任务的组成部分:任务还包括数据、堆栈及其上下文环境等(TCB)程序是静态的,任务是动态的任务有生命周期:诞生 → 消亡,是短暂的;而程序相对长久永存一个程序可对应多个任务;反之亦然任务具有创建等功能;而程序没有任务分类实时、非实时 :有无时间约束周期、非周期 :是否可预测 固定时间间隔内必须执行一次的任务关键、非关键 :重要程度 需要得到及时执行,否则将出现灾难性的后果的任务应用系统的构成方式单进程/单线程模型单进程/多线程模型多进程/多线程模型多进程/单线程模型应用系统的程序结构示例int main(void){ // Initialize uCOS-II. OSInit(); // Create the first task OSTaskCreate(TestTask1, (void *) 11, TestTaskStk1[TASK_STK_SIZE], 11); // Start multitasking. OSStart(); return 0;}void TestTask1(void *pdata){ printf(%4u: ***** Test Task 1 First call *****\n, OSTime); //Create 3 other tasks OSTaskCreate(TestTask2, (void *) 22, TestTaskStk2[TASK_STK_SIZE], 22); OSTaskCreate(TestTask3, (void *) 33, TestTaskStk3[TASK_STK_SIZE], 33); OSTaskCreate(TestTask4, (void *) 10, TestTaskStk3[TASK_STK_SIZE], 10); while (1) { printf(%4u: ***** Test Task 11 *****\n, OSTime); #ifdef SUSPEND_RESUME OSTaskSuspend(OS_PRIO_SELF); #else OSTimeDly(1); #endif }}应用系统的程序结构示例(续)void TestTask2(void *pdata){ while (1) { printf(%4u: ***** Test Task 22 *****\n, OSTime); #ifdef SUSPEND_RESUME OSTaskSuspend(OS_PRIO_SELF); #else OSTimeDly(1); #endif }}void TestTask3(void *pdata){ while (1) { #ifdef SUSPEND_RESUME printf(%4u: ***** Test Task 33 *****\n, OSTime); OSTaskResume(11); printf(%4u: ***** Test Task 33 *****\n, OSTime); OSTaskResume(22); #endif printf(%4u: ***** Test Task 33 *****\n, OSTime); OSTimeDly(1); }}void TestTask4(void *pdata){ while (1) { printf(%4u: +++++ Test Task 10 +++++\n, OSTime); OSTaskSuspend(10); //Suspend yourself }}5.2 RTOS特点及时性可确定性并发性可信性可嵌入性可剪裁性可扩展性5.3 RTOS体系

文档评论(0)

peili2018 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档