硬汉嵌入式论坛

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

[μCOS-III] 请教一个关于信号量的问题

[复制链接]

10

主题

21

回帖

51

积分

初级会员

积分
51
发表于 2022-8-24 09:32:45 | 显示全部楼层 |阅读模式
程序运行一段时间(时间不定)以后就无法收发数据了,发现程序卡在了发送函数上。
image.png
但是最后发现是 BSP_UartTxWait 这个信号量没有被释放,所以会卡在BSP_UartLock这里。 BSP_UartTxWait  信号量的释放时在中断函数里。
image.png
请教一下各位大佬,出现这样问题的原因可能是什么呀。十分感谢!!
回复

使用道具 举报

10

主题

21

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2022-8-24 10:26:13 | 显示全部楼层
有没有大佬帮忙看看呀
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-8-24 11:08:17 | 显示全部楼层
感觉你的逻辑关系处理的略复杂了,建议那个send函数前后的锁关闭了。这个函数就给一个任务用就好了。
回复

使用道具 举报

10

主题

21

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2022-8-24 11:11:47 | 显示全部楼层
eric2013 发表于 2022-8-24 11:08
感觉你的逻辑关系处理的略复杂了,建议那个send函数前后的锁关闭了。这个函数就给一个任务用就好了。

只留下BSP_UartTxWait 这一个吗?
回复

使用道具 举报

19

主题

373

回帖

430

积分

高级会员

积分
430
发表于 2022-8-24 18:42:40 | 显示全部楼层
BSP_UartLock应该是Mutex功能,一般初始化为1就没问题
1. 上面的例子出现了“死锁”,因为BSP_UartLock一直为0,可以加“超时”选项解决“死锁”问题
2. 建议调用OSSemPend()之后,按照err的值进行处理
回复

使用道具 举报

10

主题

21

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2022-8-25 09:21:23 | 显示全部楼层
h_007 发表于 2022-8-24 18:42
BSP_UartLock应该是Mutex功能,一般初始化为1就没问题
1. 上面的例子出现了“死锁”,因为BSP_UartLock一 ...

那是不是应该对 BSP_UartTxWait 的信号量进行超时解锁呢,我后来发现实际是BSP_UartTxWait信号量一直没有被释放
回复

使用道具 举报

19

主题

373

回帖

430

积分

高级会员

积分
430
发表于 2022-8-25 10:41:26 | 显示全部楼层
2个都应该加“超时”,解除“死锁”
回复

使用道具 举报

10

主题

21

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2022-8-25 11:09:28 | 显示全部楼层
h_007 发表于 2022-8-25 10:41
2个都应该加“超时”,解除“死锁”

好的 我试试  感谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-8-26 10:33:11 | 显示全部楼层
h_007 发表于 2022-8-24 18:42
BSP_UartLock应该是Mutex功能,一般初始化为1就没问题
1. 上面的例子出现了“死锁”,因为BSP_UartLock一 ...

他这个应该没有死锁问题,本质上他这个就是个死等。只要有一个任务调用这个uart send函数,就会一撸到底,其它任务调用这个函数的没有执行的机会。应该是他的串口处理有问题。
所以他需要简化他的逻辑处理来锁定根本问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-8-26 10:40:00 | 显示全部楼层
yx0124 发表于 2022-8-24 11:11
只留下BSP_UartTxWait 这一个吗?

是的,你的串口处理估计是有问题的,需要排查下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 19:42 , Processed in 0.194310 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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