硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3178|回复: 11
收起左侧

[μCOS-II] 源码部分OSMutexPend内容的疑惑

[复制链接]

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2019-12-24 23:24:43 | 显示全部楼层 |阅读模式
在查看ucosii源码时,对OSMutexPend函数内的这部分内容不太理解

QQ图片20191225002653.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-12-25 00:42:33 | 显示全部楼层
这个是优先级翻转的处理。

如果高优先级任务获取资源时,低优先级任务拥有这个资源,那么就要提升这个低优先级任务,提升时分两种情况
1、一种是这个低优先级任务处于就绪态。
2、另一种是这个任务处于事件等待列表里面,也就是你截图里面指出的,这种情况是多个任务都在等待资源时的处理。
回复

使用道具 举报

56

主题

905

回帖

1073

积分

至尊会员

积分
1073
发表于 2019-12-25 08:14:25 | 显示全部楼层
eric2013 发表于 2019-12-25 00:42
这个是优先级翻转的处理。

如果高优先级任务获取资源时,低优先级任务拥有这个资源,那么就要提升这个低 ...

借这个帖子请教硬汉。 你看ucos emwin等源代码的方法? 感觉看完若干遍后,一段时间搞别的项目去了,回头又忘记的干干净净。 感觉时间都浪费了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-12-25 09:47:38 | 显示全部楼层
roguebear 发表于 2019-12-25 08:14
借这个帖子请教硬汉。 你看ucos emwin等源代码的方法? 感觉看完若干遍后,一段时间搞别的项目去了,回头 ...

以前看过几遍,下次再看源码的话,比较容易捡起来,主要还是框架上的理解。

一段时间不看,但框架上的理解还行,学到了他们的设计思想。

不过uCOS-II的源码,每次看,每次都有新的收获,的确是设计的很经典。
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
发表于 2019-12-25 10:15:01 | 显示全部楼层
我现在只用OS-II,简单,经典,酒精考验,有认证,安全系数高
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2019-12-25 14:41:43 | 显示全部楼层
eric2013 发表于 2019-12-25 00:42
这个是优先级翻转的处理。

如果高优先级任务获取资源时,低优先级任务拥有这个资源,那么就要提升这个低 ...

硬汉哥 当一个低优先级的任务占有该信号量的时候就会在OS_EventTaskWait()函数中,将该低优先级任务的任务控制块的成员OSTCBEventPtr指向该互斥信号量事件控制块,当其他高优先级任务请求该信号量就会运行到我有疑惑的地方。 我现在理了一下思路
1、 pevent2 = ptcb->OSTCBEventPtr; 这个pevent2任务控制块和OSMutexPend()形参里传进去的任务控制块不就是一个地址么(同一个东西),这里为啥要多此一举没呢?
2、我之前框出来的地方 这里我明白了 占用该互斥信号量的任务假如没有就绪的话,就把它从任务就绪表清除(对应我图上的第一个框),两个框之间的语句就是把改任务优先级提升到所谓的置顶优先级,第二个框的作用是因为该任务没有就绪,就把该任务以置顶优先级放到事件等待列表中
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2019-12-25 14:47:42 | 显示全部楼层
dyhfaily 发表于 2019-12-25 14:41
硬汉哥 当一个低优先级的任务占有该信号量的时候就会在OS_EventTaskWait()函数中,将该低优先级任务的任 ...

口误:pevent不是任务控制块 是事件控制块 后面说的那个形参也是事件控制块
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-12-25 15:14:26 | 显示全部楼层
dyhfaily 发表于 2019-12-25 14:41
硬汉哥 当一个低优先级的任务占有该信号量的时候就会在OS_EventTaskWait()函数中,将该低优先级任务的任 ...

看这里的操作是确保任务控制块挂在这个互斥列表里面。
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2019-12-25 15:40:52 | 显示全部楼层
eric2013 发表于 2019-12-25 15:14
看这里的操作是确保任务控制块挂在这个互斥列表里面。

那估计是非法判断了把 硬汉兄 你写的教程里哪些你都看过源码 比如ucos freertos RTX 等等
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-12-25 19:51:02 | 显示全部楼层
dyhfaily 发表于 2019-12-25 15:40
那估计是非法判断了把 硬汉兄 你写的教程里哪些你都看过源码 比如ucos freertos RTX 等等

RTX4,uCOS-II,uCOS-III,FreeRTOS的源码都研究过
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2019-12-25 22:34:04 | 显示全部楼层
eric2013 发表于 2019-12-25 19:51
RTX4,uCOS-II,uCOS-III,FreeRTOS的源码都研究过

ucos iii源码和ii的相差大吗 我还没来得及看
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-12-26 00:07:14 | 显示全部楼层
dyhfaily 发表于 2019-12-25 22:34
ucos iii源码和ii的相差大吗 我还没来得及看

可以认为是两种不同的OS了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 07:40 , Processed in 0.282725 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表