嵌入式实时操作系统 (2).doc

嵌入式实时操作系统 (2).doc

ID:52224169

大小:40.00 KB

页数:5页

时间:2020-03-25

嵌入式实时操作系统 (2).doc_第1页
嵌入式实时操作系统 (2).doc_第2页
嵌入式实时操作系统 (2).doc_第3页
嵌入式实时操作系统 (2).doc_第4页
嵌入式实时操作系统 (2).doc_第5页
资源描述:

《嵌入式实时操作系统 (2).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.实验原理:掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。通过哲学家问题实验,了解如何利用信号量来对共享资源进行互斥访问。二.实验平台:PC、XP操作系统、ADS集成开发环境三.实验目的复习对进程同步的机制,并加强学生动手能力,不仅让学生从原理上懂得操作系统,而且让学生实践,让学生自己动手写操作系统部分代码。四:实验内容:哲学家动作:thinkinghungryeatingph1thinking!ph2thinking!……….ph1hungry!ph2hungry!……….ph1eating!ph2eating!………..实现:while(1){

2、显示phxthinking;OSTimeDly()随机延时;显示phxhungry;OSTimeDly()随机延时;显示phxeating;OSTimeDly()随机延时;}五:实验要求:能在屏幕上输出5个哲学家的动作,分别是thinking,hungry,eating,如下所示:哲学家1thinking,哲学家2thinking,...哲学家1hungry,哲学家2hungry,...哲学家1eating,哲学家2eating,...六:实验代码:在ADS1.2中先后导入一下文件最后编写主函数main的程序,代码如下:#include"../ucos-ii/includes.h"/

3、*uC/OSinterface*/#include"string.h"#include"gui.h"//taskstacksize#ifdefSEMIHOSTED#defineTASK_STACK_SIZE(64+SEMIHOSTED_STACK_NEEDS)#else#defineTASK_STACK_SIZE10*1024#endif///***********definetask************************/#defineTASK_PRIO2#defineTASK_STK_SIZE512INT8U*err;//用于退出的键OS_EVENT*SEM[5];//

4、定义对应的信号量指针数组externcharkeyflag;OS_STKMyTaskStk1[TASK_STK_SIZE];//定义任务堆栈区OS_STKMyTaskStk2[TASK_STK_SIZE];OS_STKMyTaskStk3[TASK_STK_SIZE];OS_STKMyTaskStk4[TASK_STK_SIZE];OS_STKMyTaskStk5[TASK_STK_SIZE];voidMytask1(void*pd){charbuf[128];while(1){sprintf(buf,"ph%disthinking",(unsignedint)pd+1);arm

5、ulPrintf(buf);OSSemPend(SEM[0],0,err);//请求一个信号量,没有时间限制sprintf(buf,"ph%dishungry",(unsignedint)pd+1);armulPrintf(buf);OSSemPost(SEM[1]);//发送一个信号量OSSemPend(SEM[0],0,err);//请求一个信号量,没有时间限制sprintf(buf,"ph%diseating",(unsignedint)pd+1);armulPrintf(buf);OSSemPost(SEM[1]);//发送一个信号量OSTimeDlyHMSM(0,0

6、,0,200);//等待200ms}}voidMytask2(void*pd){charbuf[128];while(1){sprintf(buf,"ph%disthinking",(unsignedint)pd+1);armulPrintf(buf);OSSemPend(SEM[1],0,err);//请求一个信号量,没有时间限制sprintf(buf,"ph%dishungry",(unsignedint)pd+1);armulPrintf(buf);OSSemPost(SEM[2]);//发送一个信号量OSSemPend(SEM[1],0,err);//请求一个信号量,

7、没有时间限制sprintf(buf,"ph%diseating",(unsignedint)pd+1);armulPrintf(buf);OSSemPost(SEM[2]);//发送一个信号量OSTimeDlyHMSM(0,0,0,200);//等待200ms}}voidMytask3(void*pd){charbuf[128];while(1){sprintf(buf,"ph%disthinking",(unsignedint)pd+1);arm

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。