电子与信息技术专业ppt课件_第1页
电子与信息技术专业ppt课件_第2页
电子与信息技术专业ppt课件_第3页
电子与信息技术专业ppt课件_第4页
电子与信息技术专业ppt课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 电子与信息技术专业电子与信息技术专业ARM嵌入式技术课程嵌入式技术课程积件 12-9:COS-II信号量 制造教师:谢利民全国职业教育电子与信息技术专业数字化资源共建共享江苏无锡机电高等职业技术学校WUXI MACHINERY AND ELECTRON HIGER PROFESSIONAL AND TECHNIAL SCHOOL 积件 12-9:COS-II信号量 简介 ISR与义务同步 信号量的任务方式 123义务间同步 在中断中获得信号量资源同步 456 积件 12-9:COS-II信号量 简介简介 信号量值大于信号量值大于0调用调用OSSemPost()信号量信号量值加信号量值加1 在

2、实时多义务系统中,信号量被广泛用于:义务间对共享资源的互斥、义务和中断效力程序之间的同步、义务之间的同步。 信号量值减信号量值减1调用调用OSSemPend()信号量当义务调用OSSemPost()函数发送信号量时; 当信号量值大于0,义务调用OSSemPend()函数接纳信号量时; 积件 12-9:COS-II信号量 信号量值等于信号量值等于0延时等待信号量延时等待信号量留意:C/OS-II不允许在中断效力程序中等待信号量。信号量信号量到来,正常信号量到来,正常前往前往 信号量值等于信号量值等于0延时等待信号量延时等待信号量延时到,无信号量延时到,无信号量,前往超时错误,前往超时错误调用调用

3、OSSemPend()调用调用OSSemPend()当信号量值等于0,义务调用OSSemPend()函数接纳信号量时。 简介简介 积件 12-9:COS-II信号量 前面章节我们学习了互斥信号量,下面对计数信号量与互斥信号量做一个对比。取值能否用于资源同步以实现对共享资源的独占能否解决优先级反转问题能否实现任务间以及中断与任务间的同步实 现 同 步时 能 否 传递数据互斥信号量互斥信号量0或1能能不能不能计数信号量计数信号量065535能不能能不能简介简介 积件 12-9:COS-II信号量 信号量的任务方式信号量的任务方式 在 实 践 的 运 用 中 , 常 用 信 号 量 实 现 义 务

4、间 的 同 步 ,OSSemPend()和OSSemPost()会出如今不同义务的不同函数中,但不一定成对出现。 1.义务间同步留意:在实践的运用中,还有多对多、一对多信号量操作的情况,但很不常见,建议读者不要设计出这样的操作方式,由于这样会带来很多的费事。 义务义务3中断中断1义务义务2义务义务1义务义务2义务义务1 信号量1信号量信号量信号量信号量信号量1信号量信号量一对一同步一对一同步多对一同步多对一同步 积件 12-9:COS-II信号量 在嵌入式系统中,经常运用信号量访问共享资源来实现资源同步。在运用时,留意发送信号量函数OSSemPost()与等待信号量函数OSSemPend()必

5、需成对出如今同一个义务调用的函数中,才干实现资源同步。2.资源同步信号量的任务方式信号量的任务方式 积件 12-9:COS-II信号量 ISR与义务同步与义务同步 下面以例如来阐明如何现实ISR与义务间同步。假设定时器1中断效力程序发送信号量,义务完成了信号量的创建并在接纳到信号量后让蜂鸣器响一声。处置流程如下。 积件 12-9:COS-II信号量 void Timer1_Exception (void) T1IR = 0 x01; VICVectAddr = 0; OSSemPost (sem);更新中断优先级去除中断标志发送信号量 中断效力程序ISR例如代码如下。ISR与义务同步与义务同步

6、 积件 12-9:COS-II信号量 void TaskBeep (void *pdata) sem = OSSemCreate(0); OS_ENTER_CRITICAL(); /* 初始化VIC(省略) */ /* 初始化定时器1(省略) */ /* 目的板初始化TargeInit() (省略) */ OS_EXIT_CRITICAL(); while (1) OSSemPend(sem, 0, &err); IO0CLR = BEEP; OSTimeDly(60); IO0SET = BEEP; OSTimeDly(60); 创建信号量初始化任务蜂鸣器响延时60个节拍蜂鸣器灭延时

7、60个节拍进入临界段退出临界段等待信号量读者补出相应的代码 蜂鸣器报警义务例如代码如下。ISR与义务同步与义务同步 积件 12-9:COS-II信号量 发送信号量信号量信号量义务间同步义务间同步 收到信号量.等待信号量.义务1义务2义务优先级足够高义务同步 在嵌入式系统中,经常运用信号量来实现多个义务之间的同步。而用来实现义务间同步的信号量在创建时初始值可以为0或者1,这是由OSSemCreate()函数来实现的。 积件 12-9:COS-II信号量 让一个LED以0.5Hz的频率闪耀,每按键一次,LED闪耀一次。我们经过此例来阐明如何运用信号量实现义务间同步,假设TaskLED为高优先级的义

8、务。两个义务处置流程如下。义务间同步义务间同步 积件 12-9:COS-II信号量 TaskKEY义务主要代码如下。void TaskKEY (void *pdata) while (1) while (IO0PIN & KEY1) != 0) OSTimeDly(1); OSSemPost (sem); while (IO0PIN & KEY1) = 0) OSTimeDly(1); 延时1个节拍,用于义务切换延时1个节拍,用于义务切换等待按健按下等待按健释放初始化代码发送信号量义务间同步义务间同步 积件 12-9:COS-II信号量 void TaskLED (void *

9、pdata) sem = OSSemCreate(0); while (1) OSSemPend(sem, 0, &err); IO0CLR = LED1; OSTimeDly(OS_TICKS_PER_SEC); IO0SET = LED1; OSTimeDly(OS_TICKS_PER_SEC); 创建信号量,初始化为0初始化任务LED亮延时1sLED灭延时1s TaskLED义务主要代码如下。等待音讯义务间同步义务间同步 积件 12-9:COS-II信号量 资源同步资源同步 为了阐明运用信号量访问共享资源实现资源同步,设计两个义务,它们以不同的频率让LED点亮30个时钟节拍,然后

10、熄灭60个时钟节拍,要求这两个义务不会相互关扰。假设TaskLED0为高优先级义务,下面是两个义务的处置流程。 积件 12-9:COS-II信号量 void LED (void) INT8U err; OSSemPend(sem, 0, &err); IO0CLR = LED1; OSTimeDly(30); IO0SET = LED1; OSTimeDly(60); OSSemPost(sem);等待信号量LED亮延时30个节拍延时60个节拍 为了实现资源同步,我们需求保证OSSemPost()与OSSemPend()成对在同一个义务函数中调用,所以我们编写一个库函数LED()供两个

11、义务调用,代码如下。LED灭发送信号量资源同步资源同步 积件 12-9:COS-II信号量 void TaskLED0 (void *pdata) sem = OSSemCreate(1); while (1) LED(); OSTimeDly(1000); 初始化任务void TaskLED1 (void *pdata) pdata = pdata; while (1) LED(); OSTimeDly(2000); 调用LED函数延时1000个节拍防止编译器报警调用LED函数延时2000个节拍 下面给出两个LED义务的主要处置代码。创建信号量用来实现资源同步的信号量在创建时初始值为一样资源

12、的数目,不过嵌入式系统中极少出现完全等同的资源,所以普通初始化为1。LED()函数已包含互斥资源同步资源同步 积件 12-9:COS-II信号量 在中断中获得信号量在中断中获得信号量 建立一个义务,它每53 秒发送一次信号量。定时器1每1秒钟产生一次中断,在中断效力程序中获得信号量,假设有,那么翻转LED。以此例如来阐明如何在中断中获得信号量,运用函数OSSemAccept()实现。两个义务处置流程如下。 积件 12-9:COS-II信号量 void TaskPost (void *pdata) sem = OSSemCreate(0); OS_ENTER_CRITICAL(); /* 初始化VIC(省略) */ /* 初始化定时器1(省略) */ /* 目的板初始化TargeInit() (省略) */ OS_EXIT_CRITICAL(); while (1) OSTimeDly(OS_TICKS_PER_SEC * 5/3); OSSemPost (sem); 创建信号量初始化任务发送信号量进入临界段退出临界段延时5/3秒读者补出相应的代码 发送信号量义务主要代码如下。在中断中获得信号量在中断中获得信号量 积件 12-9:COS-II信号量 void Timer1_Except

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论