1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Cortex-M3内核上下文切换函数rt_hw_context_switch()/ rt_hw_context_switch_interrupt()中有个判断rt_thread_switch_interrupt_flag的地方,不知道意义在哪? |
|
相关推荐
4个回答
|
|
我的猜想是防止调用第一个切换线程函数rt_hw_context_switch_to()后突然来了个中断抢在PendSV异常处理前,且这个中断调用了rt_hw_context_switch()/rt_hw_context_switch_interrupt(),因为此时没有from线程,所以并不需要保存参数from。
|
|
|
|
中断到中断的切换
|
|
|
|
我猜应该是这样子的,
发生中断。中断处理函数中遇到线程切换请求(A —> B)。调用 rt_hw_context_switch()/ rt_hw_context_switch_interrupt() 函数悬起 PENDSV ,准备进行线程切换。注意,当前点还没有真正执行切换。from_thread=A,to_thread=B。 继续处理中断,又遇到线程切换请求 (B —> C)。此时要注意:由于之前有过一次线程切换的请求,但是还未执行。所以 from_thread 没有改变,仅仅是 to_thread 线程改变了。所以仅需要更改 to_thread。得到 from_thread=A,to_thread=C 出中断后,执行 PENDSV。将线程从 A 切断到 C。 |
|
|
|
确实应该是这样,还有我注意到一点,之前我以为上下文切换函数也会被嵌套中断打断,其实封装了这个函数的线程切换函数都进行了屏蔽中断操作,也使这段逻辑不会太复杂。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
529 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2000 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1174 浏览 0 评论
1674 浏览 0 评论
1439 浏览 0 评论
74741 浏览 21 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 20:35 , Processed in 0.675907 second(s), Total 77, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号