关于RTX的若干疑问。

2019-12-27 19:01发布



1,rt_ret_val                                 这个函数直接修改目标任务的堆栈的R0,但是任务又不会出栈,所以不是很清楚这个函数的作用。

2,rt_dispatch                                  这个函数将新任务加入就绪链表,可是,仅通过 rt_switch_req 简单赋值指针就能执行调度?这个时候不是应该立即进行调度么,如果在systick时根据就绪链表进行调度那岂不是实时性就很差了?

3,待定

谢谢大家捧场,希望能够得到大家的指点。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
myxiaonia
2019-12-29 00:20
macaroni 发表于 2015-8-20 10:26
非常感谢

1,既然有传递必然有使用,这个我再看看代码。

rtx内核函数主要有2种,
用户态使用的(os_前缀)都是用svc软中断发起的,看看svc汇编码就知道svc先检查是否为用户svc函数,是的话直接运行用户svc函数(用户svc函数需要先定义函数体,再svc.s中声明函数名)后直接退出,否则就会先运行内核函数之后才进行必要的内核调度啊这些操作。
我见吴大师多次提到过使用内核调用效率并不高,好像这种说法在Windows或者linux上大家都这么说,开销比较大。。。不知道win32api现在是不是还是用内核调用的方法,
还有一种就是中断例程中使用的(isr_前缀),会将此次内核调用注册到一个叫做osfifo的队列里,然后悬起pendsv中断,在那里真正进行内核函数的操作。

一周热门 更多>