[开发工具] rtx 进程 挂死问题

[复制链接]
2077|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
以前存储器贵,设计民用产品,只有用汇编,节省每一个bit来提升产品竟争力.工控产品不用考虑这些.随便开销.  发表于 2019-7-26 10:05
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

粉丝
快速回复 在线客服 返回列表 返回顶部