完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
arm cotex-a9 rt_hw_context_switch_interrupt函数的逻辑想咨询一下。 .globl rt_thread_switch_interrupt_flag 在中断的ISR函数中如果调用rt_schedule函数的话,会走到此函数, 进入中断(①)⇒调用rt_schedule(②)⇒rt_hw_context_switch_interrupt(③) 但是rt_hw_context_switch_interrupt(③)函数一开始就判断了rt_thread_switch_interrupt_flag是否为1,如果为1,则代码直接跳到 _reswitch 处(这里的判断逻辑的意图不太理解)。 rt_hw_context_switch_interrupt: 想问下为什么刚开始要判断这个呢?,进入这个函数(③)之前,应该没有对rt_thread_switch_interrupt_flag这个变量赋值的处理吧? |
|
相关推荐
2个回答
|
|
下面是自己的理解,不知道对不对,先记录下来:
进入中断(①)⇒调用rt_schedule(②)⇒rt_hw_context_switch_interrupt(③) ⇒中断返回(④)⇒[from→to]的任务切换(⑤)。 ③结束后,会走中断返回④和任务切换(⑤) vector_irq: stmfd sp!, {r0-r12,lr} bl rt_interrupt_enter bl rt_hw_trap_irq bl rt_interrupt_leave ldr r0, =rt_thread_switch_interrupt_flag ldr r1, [r0] cmp r1, #1 beq rt_hw_context_switch_interrupt_do ldmfd sp!, {r0-r12,lr} subs pc, lr, #4 rt_hw_context_switch_interrupt_do: 在中断返回后 bl rt_interrupt_leave //此时中断会再度打开 就开始执行⑤(任务切换) ldr r0, =rt_thread_switch_interrupt_flag ldr r1, [r0] cmp r1, #1 beq rt_hw_context_switch_interrupt_do ldmfd sp!, {r0-r12,lr} subs pc, lr, #4 rt_hw_context_switch_interrupt_do: ... ... 再此过程中,由于中断再度打开,在向[to]任务切换的过程中,有可能被同一个中断再度打断。 换句话说: 进入中断(①)⇒调用rt_schedule(②)⇒rt_hw_context_switch_interrupt(③) ⇒中断返回(④)⇒[from→to]的任务切换(⑤)。 在⑤时被中断打断,再次执行同一个ISR并且调用rt_schedule时,进入rt_hw_context_switch_interrupt函数后,rt_interrupt_from_thread变量就不需要在重新被赋值了(因为还是在同一个线程中) |
|
|
|
一直对rt_thread_switch_interrupt_flag不理解,它的意思是中断中发生任务切换,rt_thread_switch_interrupt_flag等于1,那不是中断中发生切换,就应该等于0啊,但是看流程图rt_thread_switch_interrupt_flag等于0的时候,都跳过了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
1573 浏览 0 评论
2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
7433 浏览 10 评论
1820 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
3226 浏览 0 评论
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
1194 浏览 0 评论
67986 浏览 21 评论
嵌入式热门DIY项目:智能机器人开源资料合集(原理图、代码、论文)
68590 浏览 22 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-12 12:15 , Processed in 0.829322 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191