; 函数原型:void rt_hw_context_switch(rt_uint32_t from, rt_uint32_t to); ; r0 = from, r1 = to rt_hw_context_switch PROC EXPORT rt_hw_context_switch LDR r2, =rt_thread_switch_interrupt_flag LDR r3, [r2] CMP r3, #1 ;r3 与 1 比较,相等则执行 BEQ 指令,否则不执行 BEQ _reswi...
;/* ; * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to); ; * r0 --> from ; * r1 --> to ; */ rt_hw_context_switch_interrupt EXPORT rt_hw_context_switch_interrupt rt_hw_context_switch PROC EXPORT rt_hw_context_switch ; set rt_thread_switch_interrupt_flag to 1 LDR...
rt_interrupt_nest));level = rt_hw_interrupt_disable();rt_interrupt_nest ++;//之前提到的操作 R...
rt_thread_switch_interrupt_flag 变量是指示 上下文切换动作 是否在PendSV中断中执行过,如果等于1,表示需要切换,需要在PendSV中断中执行,也就是还没有执行,那么也就不需要再更新rt_interrupt_from_thread变量,(在上一次调用过rt_hw_context_switch/rt_hw_context_switch_interrupt 函数之后还没来得及切换线程,即rt_...
rt_hw_interrupt_enable(temp);} 2.2 实现调度器 调度器是操作系统的核心,其主要功能就是实现线程的...
rt_hw_context_switch PROC EXPORT rt_hw_context_switch;set rt_thread_switch_interrupt_flag to 1LDR r2, =rt_thread_switch_interrupt_flag LDR r3, [r2]CMPr3, #1BEQ _reswitchMOVr3, #1STRr3, [r2] LDR r2, =rt_interrupt_from_thread;set rt_interrupt_from_threadSTRr0, [r2] ...
打开全局中断函数rt_hw_interrupt_enable(rt_base_t level)中,参数level为需要恢复的全局中断状态。 基于MDK,在 Cortex-M 内核上打开全局中断的代码如下(已经添加注释): ;/* ; * void rt_hw_interrupt_enable(rt_base_t level); ; */ rt_hw_interrupt_enable PROC ;PROC 伪指令定义函数 ...
在Cortex-M 架构中,rt_hw_context_switch_interrupt() 的函数实现流程如下图所示,它将设置需要切换的线程 rt_interrupt_to_thread 变量,然后触发 PendSV 异常(PendSV 异常是专门用来辅助上下文切换的,且被初始化为最低优先级的异常)。PendSV 异常被触发后,不会立即进行 PendSV 异常中断处理程序,因为此时还在中断...
2; * void rt_hw_context_switch_to(rt_uint32 to); 3; * r0 --> to 4; * this fucntion is used to perform the first thread switch 5; */ 6rt_hw_context_switch_to PROC 7EXPORT rt_hw_context_switch_to 8;setto thread 9; 把要切换到的线程的堆栈指针记录到变量rt_interrupt_to_thread...
next, struct rt_thread, tlist); rt_current_thread === to_thread;// (2) /* 切换到第一个线程,该函数在context_rvds.S中实现,在rthw.h声明, 用于实现第一次任务切换。当一个汇编函数在C文件中调用的时候, 如果有形参,则执行的时候会将形参传人到CPU寄存器r0。*/ rt_hw_context_switch_to((rt_...