- 1、本文档共111页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RTOSuCOS-II原理及应用3课案
* * 补充:4 任务的可调度性分析 n 任务的总个数; Ci Task_i 执行一次的时间; Ti Task_i 的周期; U(n) 用户可使用的 CPU 使用系数上限。 速率单调分析(RMA)分析公式: 公式参数说明: * * 补充:4 任务的可调度性分析 随着任务数的增多(n 变大),U(n)在下降,这是因为系统开销在增大。 n 1 2 3 4 5 … ∞ U(n) 1.000 0.828 0.779 0.756 0.743 … 0.693 举例:某系统由 5个用户任务组成,它们的 周期 和 最长执行时间 以及 系统性能分析 见下表。 i Ci (ms) Ti (ms) Ci/Ti i Ci (ms) Ti (ms) Ci/Ti 1 5 50 0.10 4 5 100 0.05 2 20 100 0.20 5 80 500 0.16 3 30 150 0.20 U(n) = 74.3% * * 补充:4 任务的可调度性分析 问题 如果由于某原因造成 “分析式” 不成立,如何处理? i Ci (ms) Ti (ms) Ci/Ti i Ci (ms) Ti (ms) Ci/Ti 1 5 50 0.10 4 5 100 0.05 2 20 100 0.20 5 80 500 0.16 3 30 150 0.20 6 10 30 0.33 解决方案: 1、在满足系统技术要求前提下,尽量降低 Task 的激活频率; 2、提升硬件平台性能。 * * 第3章 补充.目录 1、任务的特性 2、任务的划分目标 3、任务的划分方法 4、任务的可调度性分析 5、任务的执行分类和优先级安排 6、任务设计中的问题 7、系统设计编码实现过程 8、中断服务程序的设计 * * 补充:5 任务的执行分类和优先级安排 任务的执行分类: 1、单次执行的任务 此类任务在OSTaskCreate( )后只执行一次,执行接诉后即自行删除。其结构如下: void MyTask(void * pdata) { 局部环境初始化代码; //本任务运行环境的初始化 任务实体代码; OSTaskDel(OS_PRIO_SELF); //删除自身 } 此类型任务采用“创建即启动”方式运行任务,这样可以简化任务的启动控制关系,更主要的是可以在每次启动时向任务传递一些参数,使其有不同的运行工作状态。如使用 UART ,每次都可以设置其帧格式、数据波特率等。 注意事项: 安排合适的优先级 自身删除前释放占用的共享资源 适用“孤立任务” * * 补充:5 任务的执行分类和优先级安排 任务的执行分类: 2、周期执行的任务(也可以认为事件触发的特例) 此类任务创建后按某个时间周期被执行。任务结构如下: void MyTask(void * pdata) { 局部环境准备代码; //硬件、变量等初始化 while(1) { 任务实体代码; //具体的任务业务 OSTimeDly() / OSTimeDlyHMSM(); //周期约定 } } 此类任务运行特性分析: 运行周期越大,任务执行周期的相对误差越小,适用于任务周期稳定性要求不太高的应用。 任务周期只能是系统节拍的整倍数。 当任务周期要求很严格或不是系统节拍的整倍数时,应采用定时器中断的方式解决(电子钟)。 * * 补充:5 任务的执行分类和优先级安排 任务的执行分类: 3、事件触发执行的任务 此类任务创建后其任务实体代码要等待预约的事件,在该事件发生前任务被强制等待,相关事件发生一次,任务实体执行一次。任务结构如下: void MyTask(void * pdata) { 局部环境准备代码; //硬件、变量等初始化 while(1) { 获取事件的系统函数; //等待事件(信号量、消息)发生 任务实体代码; //具体的任务业务 } } * * 补充:5 任务的执行分类和优先级安排 任务的优先级安排: 任务的优先级资源 任务的优先级资源由RTOS提供,uC/OS-II中使用系统宏常数OS_LOWEST_PRIO约定其可用的优先级个数,其值最大为63。 #define OS_LOWEST_PRIO xx //该行属于OS_CFG.H文件 * * 任务可用的优先级总个数为 (OS_LOWEST_PRIO + 1) 个,Task-prio的值域为{ 0,...,OS_LOWEST_PRIO}; 优先级 OS_LOWEST_PRIO 固定分给给了OSTaskIdel(),优先级 OS_LOWEST_PRIO - 1
文档评论(0)