- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式μCOS-II内核实验四(哲学家就餐问题实现的论文).ppt
* * * * * * * * * 电子科技大学嵌入式软件工程中心 内核实验(四) 哲学家就餐问题的实现 实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。通过经典的哲学家就餐实验,了解如何利用信号量来对共享资源进行互斥访问。 5个任务:Task0、Task1、 Task2、 Task3、 Task4 5个信号量:Sem0, Sem1, Sem2, Sem3, Sem4 优先级: Task0Task1Task2Task3Task4 每个任务i均作相同的工作: 申请信号量i, (i+1) mod 5; 保持信号量; 释放信号量(i+1) mod 5,i 实验设计 实验设计 1、Task0…… Task4先后执行,显示“thinking” , 然后挂起; 2、Task0…… Task4延时先后到期,显示“hungry” ,然后挂起; 3、 Task0、2、4、1、3先后获得信号量号,显示“eating ”,然后挂起 ; 4、…… 运行流程 #define OS_TASK_CREATE_EN 1 /*允许使用OSTaskCreate()*/ #define OS_MAX_TASKS 6 /*最多可以创建6个任务*/ #define OS_TASK_STAT_EN 0 /* 禁止统计任务*/ #define OS_TASK_CREATE_EXT_EN 1 /*是否允许使用OSTaskCreateExt()*/ 操作系统配置 #define OS_TICKS_PER_SEC 200 /*设置每秒之内的时钟节拍数目*/ #define OS_SEM_EN 1 /*是否允许使用信号量功能*/ #define OS_MAX_EVENTS 5 /*最多可以有5个事件*/ #define OS_LOWEST_PRIO 7 /*任务优先级不可以大于7*/ 操作系统配置 OSSemCreate() :建立并初始化一个信号量 本实验中所用到的μC/OS-II相关函数 OSSemPend() :申请信号量 OSSemPost() :释放信号量 OSTimeDly():将一个任务延时若干个时钟节拍 OSTaskCreateExt () : 创建一个任务 1、创建起始任务TaskStart OSTaskCreateExt(TaskStart, (void *)0, TaskStartStk[TASK_STK_SIZE - 1], TASK_START_PRIO, TASK_START_ID, TaskStartStk[0], TASK_STK_SIZE, TaskUserData[TASK_START_ID], 0); 源程序说明 TaskStart负责: 安装时钟中断服务例程 ucos_x86_idt_set_handler(0x20,(void *)OSTickISR,0x8e00); 初始化操作系统时钟 ucos_timer_init(); 创建信号量 fork[i] = OSSemCreate(1); 创建应用任务 TaskStartCreateTasks(); 源程序说明 2、创建应用任务Task0, ……,Task4 for (i = 0; i N_TASKS; i++) { TaskData[i] = i; OSTaskCreate(Task, (void *)TaskData[i], TaskStk[i][TASK_STK_SIZE - 1], i+1); } 3、应用任务 源程序说明 void Task (void *pdata) { …… for (;;) { /* 无限循环 */ TASK_Thinki
您可能关注的文档
最近下载
- 无源隔离器;-;mcr-1clp-i-i-00;-;2814016.pdf VIP
- 广东开放大学学习指引(开放教育学习指引)题目及答案.docx
- 办事处食堂改造施工方案投标文件(技术方案).doc
- GB15979-2002 一次性使用卫生用品卫生标准.pdf VIP
- 可靠性鉴定考试试题库.doc VIP
- 九年级上册必背古诗词专项训练(含答案).docx VIP
- (2025秋新版本)人教版八年级数学上册全册教案 .pdf
- 《GBT20002.2-2008标准中特定内容的起草第2部分:老年人和残疾人的需求》(2025版)深度解析.pptx
- GB50877-2014 防火卷帘、防火门、防火窗施工及收规范.docx VIP
- 太湖县2021年(中小学、幼儿园)教师招聘试题及答案.docx VIP
原创力文档


文档评论(0)