[开发工具]

rtx 进程 挂死问题

[复制链接]
1594|17
手机看帖
扫描二维码
随时随地手机跟帖
求进的心|  楼主 | 2019-7-25 23:12 | 显示全部楼层 |阅读模式
最近的调试keil5自带的rtx操作系统时,遇到一个奇怪的问题,望论坛里的大神们帮忙看看!!!
问题如下:
创建两个进程:
进程A,优先级为10
进程B,优先级为3

两个进程都会调用同一个加了锁的函数,函数体简写如下:
void a()
{
os_mut_wait(g_os_uart1,0xFFFF);
......
os_sem_wait(g_os_sem, 0xFFFF);
......
os_mut_release(g_os_uart1);
}

isr_sem_send函数是在串口1的发送中断函数中,数据发送完后,就会send信号量

程序运行一段时间后,会出现如下状况:
进程A,挂死在wait MUT的状态,优先级显示还是5,
进程B,正常运行,优先级显示,从3变成了5

很是奇怪,一直debug不出原因?望大神帮忙解答,多谢多谢!!!









使用特权

评论回复
求进的心|  楼主 | 2019-7-25 23:39 | 显示全部楼层
顶起!让更多的大神看到

使用特权

评论回复
戈卫东| | 2019-7-26 07:53 | 显示全部楼层
互斥体被B拿去了并且一直没有释放

使用特权

评论回复
戈卫东| | 2019-7-26 07:54 | 显示全部楼层
或者,B因为优先级高并且一直在运行所以A不能进入运行

使用特权

评论回复
tyw| | 2019-7-26 09:21 | 显示全部楼层
少累哈,木油玩过哦,只用汇编

使用特权

评论回复
求进的心|  楼主 | 2019-7-26 09:23 | 显示全部楼层
戈卫东 发表于 2019-7-26 07:54
或者,B因为优先级高并且一直在运行所以A不能进入运行

一开始,B的优先级是比A低的,但出问题之后,B的优先级就变成和A一样了,并且B还能正常运行,但是A挂死了,很是奇怪啊,

使用特权

评论回复
求进的心|  楼主 | 2019-7-26 09:27 | 显示全部楼层
tyw 发表于 2019-7-26 09:21
少累哈,木油玩过哦,只用汇编

版主客气了,感谢您抽空来看,看来大神都是只用汇编的,谢谢谢谢!

使用特权

评论回复
评论
tyw 2019-7-26 10:05 回复TA
以前存储器贵,设计民用产品,只有用汇编,节省每一个bit来提升产品竟争力.工控产品不用考虑这些.随便开销. 
ayb_ice| | 2019-7-26 10:15 | 显示全部楼层
中断只能调用isr_打头的API

使用特权

评论回复
求进的心|  楼主 | 2019-7-26 11:00 | 显示全部楼层
ayb_ice 发表于 2019-7-26 10:15
中断只能调用isr_打头的API

是的,在串口1发送中断函数中,调用的是 isr_sem_send函数,

使用特权

评论回复
求进的心|  楼主 | 2019-7-26 11:00 | 显示全部楼层
有人遇到过类似的问题吗???

使用特权

评论回复
求进的心|  楼主 | 2019-7-26 12:14 | 显示全部楼层
或者有什么好的调试手段推荐不?

使用特权

评论回复
ayb_ice| | 2019-7-26 13:08 | 显示全部楼层
求进的心 发表于 2019-7-26 11:00
是的,在串口1发送中断函数中,调用的是 isr_sem_send函数,

代码太少看不出来什么问题

使用特权

评论回复
肥羊| | 2019-7-26 13:28 | 显示全部楼层
没有JTAG吗看一下停止在什么位置

使用特权

评论回复
R2D2| | 2019-7-27 14:58 | 显示全部楼层
解决了吗???

使用特权

评论回复
七颗咖啡豆| | 2019-7-27 20:27 | 显示全部楼层
rtx比其他有啥优势

使用特权

评论回复
whtwhtw| | 2019-7-28 11:10 | 显示全部楼层
优先级倒挂,需要好好分析原因

使用特权

评论回复
磨砂| | 2019-8-15 10:09 | 显示全部楼层
就是说占用死循环了是吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

153

帖子

1

粉丝