- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013122699李健伟嵌入式操作系统2概要1
淮海工学院计算工程学院
实验报告书
课 程 名: 嵌入式操作系统
题 目:实验二 任务的基本管理
班 级: 计算机131班
学 号: 2013122699
姓 名: 李健伟
评语:
成绩: 指导教师:
批阅时间: 年 月 日
实验目的
理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程;
掌握uC/OS-II 中任务管理的基本方法(创建、启动、挂起、解挂任务);
熟练使用uC/OS-II 任务管理的基本系统调用。
二、实验内容
为了展现任务的各种基本状态及其变迁过程,本实验设计了Task0、Task1 两个任务:任务Task0 不断地挂起自己,再被任务Task1 解挂,两个任务不断地切换执行(Task0为高优先级,Task1为低优先级)。通过本实验,读者可以清晰地了解到任务在各个时刻的状态以及状态变迁的原因。
实验步骤
整个应用的运行流程,其描述如下:
(1)系统经历一系列的初始化过程后进入boot_card()函数,在其中调用ucBsp_init()进行板级初始化后,调用main()函数;
(2)main()函数调用OSInit()函数对uC/OS-II 内核进行初始化,调用OSTaskCreate 创建起始任务TaskStart;
(3)main()函数调用函数OSStart()启动uC/OS-II 内核的运行,开始多任务的调度,执行当前优先级最高的就绪任务TaskStart;
(4)TaskStart 完成如下工作:
a、安装时钟中断并初始化时钟,创建2 个应用任务;
b、挂起自己(不再被其它任务唤醒),系统切换到当前优先级最高的就绪任务Task0。
之后整个系统的运行流程如下:
_ t1 时刻,Task0 开始执行,它运行到t2 时刻挂起自己;
_ t2 时刻,系统调度处于就绪状态的优先级最高任务Task1 执行,它在t3 时刻唤醒Task0,后者由于优先级较高而抢占CPU;
_ Task0 执行到t4 时刻又挂起自己,内核调度Task1 执行;
_ Task1 运行至t5 时刻再度唤醒Task0;
_ ……
实验结果
思考题
将Task0设置为低优先级,Task1设置为高优先级;完成先执行Task0,再执行Task1,进而交替执行的操作。
主要代码:
/******************** 引用部分 ******************************/
#include includes.h
/******************** 定义部分 ******************************/
#define TASK_STK_SIZE 512 // Size of each tasks stacks (# of WORDs)
#define N_TASKS 2 // Number of identical tasks
#define TASK_START_ID 0 // Application tasks IDs
#define TASK_START_PRIO 10 // Application tasks priorities
#define TASK_1_PRIO 12
#define TASK_2_PRIO 13
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; // Tasks stacks
OS_STK TaskStartStk[TASK_STK_SIZE]; // TaskStart task stack
INT8U TaskData[N_TASKS]; // Parameters to pass to each task
INT32U count=0; // Initialize count
/************************ 声明部分 **************************/
static void Task0(void *pdata); // Function prototypes of tasks
static void Task1(void *pdata);
static void TaskStart(void *pdata); //
您可能关注的文档
最近下载
- 发育生物学教学课件08-1 原肠作用.ppt VIP
- 【中考真题】2025年安徽省中考数学试题(含解析).docx VIP
- 2025年职业资格大学辅导员笔试-笔试参考题库含答案解析(5套试卷).docx VIP
- 一种电池模组手动入箱定位及导向机构.pdf VIP
- 边立新:《路德维希·费尔巴哈和德国古典哲学的终结》导读.ppt VIP
- 纳米氢氧化镁晶须的制备及其分散性研究.docx VIP
- 肥厚型心肌病护理查房.pptx VIP
- 2025年内河码头行业现状分析报告及未来五至十年发展前景预测报告.docx
- 领导德性量表的编制.docx VIP
- 石化受限空间作业标准化管理方案-图文并茂版.pptx VIP
文档评论(0)