OSIntEnter()和OSIntExit()的调用问题

2019-07-21 03:28发布

本帖最后由 gangzilife 于 2019-2-19 16:55 编辑

请教大神们一个小问题:

ucos-iii中中断里调用OSIntEnter() and OSIntExit()

1、能不能不调用二者?不调用退出时不会尝试切换任务,从哪里进来就从哪里出去

2、如果中断中不调用二者,然后该中断又被systick抢占,systick结束时尝试任务切换,但pendsv的优先级最低,貌似还是会回到之前的中断,中断结束后才执行pendsv中断切换任务,这样虽然实时性低了一点,但好像还是没有问题

3、M3/M4的内核用pendsv切换任务,而不是systick直接切换,是不是这个中断嵌套OSIntNestingCtr对于M3/M4压根就没用,只是为了兼容其他的CPU(因为pendsv的优先级问题,及时被嵌套,也不会执行)

以上几个问题,希望对这块了解的大神给予帮助,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
gangzilife
2019-07-21 14:08
gangzilife 发表于 2019-2-20 10:59
找到了官方说明:
Kernel Aware can be described as an ISR that makes use/calls to OS kernel servic ...

结了结了,不纠结了,最好还是带上吧!

我看的是3.07.03的ucos-iii内核源码,里面有个宏CPU_CFG_KA_IPL_BOUNDARY,把中断分两类

Since the port is using BASEPRI to separate kernel vs non-kernel aware ISR, please
make sure your external interrupt priorities are set accordingly. For example, if
CPU_CFG_KA_IPL_BOUNDARY is set to 4 then external interrupt priorities 4-15 will be kernel aware while priorities 0-3 will be use as non-kernel aware.

一周热门 更多>